From 22094368c2865dcfb6daf8366425212b721a4657 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Thu, 05 Feb 2009 17:42:14 +0000
Subject: [PATCH] Merge ASN1 branch to trunk

---
 opends/src/server/org/opends/server/tools/LDAPSearch.java |  137 ++++++++++++++++-----------------------------
 1 files changed, 50 insertions(+), 87 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/LDAPSearch.java b/opends/src/server/org/opends/server/tools/LDAPSearch.java
index 0654882..ec98581 100644
--- a/opends/src/server/org/opends/server/tools/LDAPSearch.java
+++ b/opends/src/server/org/opends/server/tools/LDAPSearch.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.tools;
 import org.opends.messages.Message;
@@ -32,24 +32,10 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.StringTokenizer;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.opends.server.controls.AccountUsableResponseControl;
-import org.opends.server.controls.EntryChangeNotificationControl;
-import org.opends.server.controls.MatchedValuesControl;
-import org.opends.server.controls.MatchedValuesFilter;
-import org.opends.server.controls.PagedResultsControl;
-import org.opends.server.controls.PersistentSearchChangeType;
-import org.opends.server.controls.PersistentSearchControl;
-import org.opends.server.controls.ServerSideSortRequestControl;
-import org.opends.server.controls.ServerSideSortResponseControl;
-import org.opends.server.controls.VLVRequestControl;
-import org.opends.server.controls.VLVResponseControl;
+import org.opends.server.controls.*;
 import org.opends.server.util.Base64;
 import org.opends.server.util.EmbeddedUtils;
 import org.opends.server.util.PasswordReader;
@@ -59,10 +45,7 @@
 import org.opends.server.util.args.FileBasedArgument;
 import org.opends.server.util.args.IntegerArgument;
 import org.opends.server.util.args.StringArgument;
-import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Exception;
-import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPControl;
 import org.opends.server.protocols.ldap.LDAPFilter;
@@ -84,8 +67,6 @@
 import static org.opends.server.tools.ToolConstants.*;
 
 
-
-
 /**
  * This class provides a tool that can be used to issue search requests to the
  * Directory Server.
@@ -105,7 +86,7 @@
 
 
   // The set of response controls for the search.
-  private ArrayList<LDAPControl> responseControls;
+  private List<Control> responseControls;
 
   // The message ID counter to use for requests.
   private AtomicInteger nextMessageID;
@@ -131,7 +112,7 @@
     this.nextMessageID = nextMessageID;
     this.out           = out;
     this.err           = err;
-    responseControls   = new ArrayList<LDAPControl>();
+    responseControls   = new ArrayList<Control>();
   }
 
 
@@ -165,7 +146,7 @@
 
     for (LDAPFilter filter: filters)
     {
-      ASN1OctetString asn1OctetStr = new ASN1OctetString(baseDN);
+      ByteString asn1OctetStr = ByteString.valueOf(baseDN);
 
       SearchRequestProtocolOp protocolOp =
         new SearchRequestProtocolOp(asn1OctetStr,
@@ -200,15 +181,15 @@
             switch(opType)
             {
               case OP_TYPE_SEARCH_RESULT_ENTRY:
-                for (LDAPControl c : responseControls)
+                for (Control c : responseControls)
                 {
                   if (c.getOID().equals(OID_ENTRY_CHANGE_NOTIFICATION))
                   {
                     try
                     {
                       EntryChangeNotificationControl ecn =
-                           EntryChangeNotificationControl.decodeControl(
-                                c.getControl());
+                        EntryChangeNotificationControl.DECODER
+                        .decode(c.isCritical(), ((LDAPControl) c).getValue());
 
                       out.println(INFO_LDAPSEARCH_PSEARCH_CHANGE_TYPE.get(
                               ecn.getChangeType().toString()));
@@ -226,8 +207,8 @@
                     try
                     {
                       AccountUsableResponseControl acrc =
-                           AccountUsableResponseControl.decodeControl(
-                                c.getControl());
+                        AccountUsableResponseControl.DECODER
+                        .decode(c.isCritical(), ((LDAPControl) c).getValue());
 
                       out.println(INFO_LDAPSEARCH_ACCTUSABLE_HEADER.get());
                       if (acrc.isUsable())
@@ -315,15 +296,15 @@
                 errorMessage = searchOp.getErrorMessage();
                 matchedDN = searchOp.getMatchedDN();
 
-                for (LDAPControl c : responseMessage.getControls())
+                for (Control c : responseMessage.getControls())
                 {
                   if (c.getOID().equals(OID_SERVER_SIDE_SORT_RESPONSE_CONTROL))
                   {
                     try
                     {
                       ServerSideSortResponseControl sortResponse =
-                           ServerSideSortResponseControl.decodeControl(
-                                c.getControl());
+                        ServerSideSortResponseControl.DECODER
+                        .decode(c.isCritical(), ((LDAPControl) c).getValue());
                       int rc = sortResponse.getResultCode();
                       if (rc != LDAPResultCode.SUCCESS)
                       {
@@ -345,7 +326,8 @@
                     try
                     {
                       VLVResponseControl vlvResponse =
-                           VLVResponseControl.decodeControl(c.getControl());
+                          VLVResponseControl.DECODER.decode(c.isCritical(),
+                              ((LDAPControl) c).getValue());
                       int rc = vlvResponse.getVLVResultCode();
                       if (rc == LDAPResultCode.SUCCESS)
                       {
@@ -493,19 +475,19 @@
           buffer.append(EOL);
       } else
       {
-        for (ASN1OctetString v : a.getValues())
+        for (ByteString v : a.getValues())
         {
           String valueString;
-          if (needsBase64Encoding(v.value()))
+          if (needsBase64Encoding(v))
           {
-            valueString = Base64.encode(v.value());
+            valueString = Base64.encode(v);
             buffer.append(name);
             buffer.append(":: ");
 
             colsRemaining = wrapColumn - nameLength - 3;
           } else
           {
-            valueString = v.stringValue();
+            valueString = v.toString();
             buffer.append(name);
             buffer.append(": ");
 
@@ -557,7 +539,7 @@
    * @return  The set of response controls included in the last search result
    *          done message.
    */
-  public ArrayList<LDAPControl> getResponseControls()
+  public List<Control> getResponseControls()
   {
     return responseControls;
   }
@@ -1273,7 +1255,7 @@
     {
       for (String ctrlString : controlStr.getValues())
       {
-        LDAPControl ctrl = LDAPToolUtils.getControl(ctrlString, err);
+        Control ctrl = LDAPToolUtils.getControl(ctrlString, err);
         if(ctrl == null)
         {
           Message message = ERR_TOOL_INVALID_CONTROL_STRING.get(ctrlString);
@@ -1293,31 +1275,17 @@
         err.println(argParser.getUsage());
         return 1;
       }
-      ASN1OctetString v=null;
-      ASN1OctetString effectiveRightsUserVal =
-              new ASN1OctetString(authzID);
-      ASN1Sequence sequence=null;
-      ArrayList<ASN1Element> attrElements =
-              new ArrayList<ASN1Element>();
-      for(String a : effectiveRightsAttrs.getValues())
-        attrElements.add(new ASN1OctetString(a));
-      ASN1Sequence attrSeq=new ASN1Sequence(attrElements);
-      ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(2);
-      elements.add(effectiveRightsUserVal);
-      elements.add(attrSeq);
-      sequence= new ASN1Sequence(elements);
-      LDAPControl effectiveRightsControl =
-              new LDAPControl(OID_GET_EFFECTIVE_RIGHTS, false,
-                      new ASN1OctetString(sequence.encode()));
+      Control effectiveRightsControl =
+          new GetEffectiveRightsRequestControl(false, authzID.substring(3),
+              effectiveRightsAttrs.getValues());
       searchOptions.getControls().add(effectiveRightsControl);
     }
 
     if (proxyAuthzID.isPresent())
     {
-      ASN1OctetString proxyValue = new ASN1OctetString(proxyAuthzID.getValue());
-
-      LDAPControl proxyControl =
-        new LDAPControl(OID_PROXIED_AUTH_V2, true, proxyValue);
+      Control proxyControl =
+          new ProxiedAuthV2Control(true,
+              ByteString.valueOf(proxyAuthzID.getValue()));
       searchOptions.getControls().add(proxyControl);
     }
 
@@ -1441,7 +1409,7 @@
 
       PersistentSearchControl psearchControl =
            new PersistentSearchControl(changeTypes, changesOnly, returnECs);
-      searchOptions.getControls().add(new LDAPControl(psearchControl));
+      searchOptions.getControls().add(psearchControl);
     }
 
     if (assertionFilter.isPresent())
@@ -1454,9 +1422,8 @@
 
         // FIXME -- Change this to the correct OID when the official one is
         //          assigned.
-        LDAPControl assertionControl =
-             new LDAPControl(OID_LDAP_ASSERTION, true,
-                             new ASN1OctetString(filter.encode().encode()));
+        Control assertionControl =
+            new LDAPAssertionRequestControl(true, filter);
         searchOptions.getControls().add(assertionControl);
       }
       catch (LDAPException le)
@@ -1490,7 +1457,7 @@
       }
 
       MatchedValuesControl mvc = new MatchedValuesControl(true, mvFilters);
-      searchOptions.getControls().add(new LDAPControl(mvc));
+      searchOptions.getControls().add(mvc);
     }
 
     if (sortOrder.isPresent())
@@ -1498,8 +1465,7 @@
       try
       {
         searchOptions.getControls().add(
-             new LDAPControl(new ServerSideSortRequestControl(
-                                      sortOrder.getValue())));
+            new ServerSideSortRequestControl(sortOrder.getValue()));
       }
       catch (LDAPException le)
       {
@@ -1530,11 +1496,9 @@
         {
           int beforeCount = Integer.parseInt(tokenizer.nextToken());
           int afterCount  = Integer.parseInt(tokenizer.nextToken());
-          ASN1OctetString assertionValue =
-               new ASN1OctetString(tokenizer.nextToken());
+          ByteString assertionValue = ByteString.valueOf(tokenizer.nextToken());
           searchOptions.getControls().add(
-               new LDAPControl(new VLVRequestControl(beforeCount, afterCount,
-                                                     assertionValue)));
+              new VLVRequestControl(beforeCount, afterCount, assertionValue));
         }
         catch (Exception e)
         {
@@ -1552,8 +1516,8 @@
           int offset       = Integer.parseInt(tokenizer.nextToken());
           int contentCount = Integer.parseInt(tokenizer.nextToken());
           searchOptions.getControls().add(
-               new LDAPControl(new VLVRequestControl(beforeCount, afterCount,
-                                                     offset, contentCount)));
+              new VLVRequestControl(beforeCount, afterCount, offset,
+                  contentCount));
         }
         catch (Exception e)
         {
@@ -1725,16 +1689,15 @@
         }
 
         int pageSize = simplePageSize.getIntValue();
-        ASN1OctetString cookieValue = new ASN1OctetString();
-        ArrayList<LDAPControl> origControls = searchOptions.getControls();
+        ByteString cookieValue = null;
+        ArrayList<Control> origControls = searchOptions.getControls();
 
         while (true)
         {
-          ArrayList<LDAPControl> newControls =
-               new ArrayList<LDAPControl>(origControls.size()+1);
+          ArrayList<Control> newControls =
+               new ArrayList<Control>(origControls.size()+1);
           newControls.addAll(origControls);
-          newControls.add(new LDAPControl(
-               new PagedResultsControl(true, pageSize, cookieValue)));
+          newControls.add(new PagedResultsControl(true, pageSize, cookieValue));
           searchOptions.setControls(newControls);
 
           ldapSearch = new LDAPSearch(nextMessageID, out, err);
@@ -1743,27 +1706,27 @@
                                                       searchOptions,
                                                       wrapColumn);
 
-          ArrayList<LDAPControl> responseControls =
+          List<Control> responseControls =
                ldapSearch.getResponseControls();
           boolean responseFound = false;
-          for (LDAPControl c  :responseControls)
+          for (Control c : responseControls)
           {
             if (c.getOID().equals(OID_PAGED_RESULTS_CONTROL))
             {
               try
               {
-                PagedResultsControl control =
-                     new PagedResultsControl(c.isCritical(), c.getValue());
+                PagedResultsControl control = PagedResultsControl.DECODER
+                    .decode(c.isCritical(), ((LDAPControl) c).getValue());
                 responseFound = true;
                 cookieValue = control.getCookie();
                 break;
               }
-              catch (LDAPException le)
+              catch (DirectoryException de)
               {
                 Message message =
-                    ERR_PAGED_RESULTS_CANNOT_DECODE.get(le.getMessage());
+                    ERR_PAGED_RESULTS_CANNOT_DECODE.get(de.getMessage());
                 throw new LDAPException(
-                        CLIENT_SIDE_DECODING_ERROR, message, le);
+                        CLIENT_SIDE_DECODING_ERROR, message, de);
               }
             }
           }
@@ -1773,7 +1736,7 @@
             Message message = ERR_PAGED_RESULTS_RESPONSE_NOT_FOUND.get();
             throw new LDAPException(CLIENT_SIDE_CONTROL_NOT_FOUND, message);
           }
-          else if (cookieValue.value().length == 0)
+          else if (cookieValue.length() == 0)
           {
             break;
           }

--
Gitblit v1.10.0