mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

coulbeck
25.31.2007 4287153a2c0323d20e6619c4ea52fa8057ff946d
Fix for issue #1015: ldapsearch --verbose option doesn't work.
This change causes ldapsearch and ldapmodify verbose options to trace the contents of incoming and outgoing LDAP messages and ASN.1 elements to standard error stream. It excludes search-result-entry messages from the trace since this would be rather too verbose and not very useful. The main use for verbose output is to investigate connection problems, referral following and such.
A possible improvement would be to use a separate option for the ASN.1 tracing, and add session related output such as connection details, security context details and auth details as well as referral chasing details (all this must currently be derived from the protocol trace).
3 files added
22 files modified
1164 ■■■■■ changed files
opends/src/dsml/org/opends/dsml/protocol/DSMLAbandonOperation.java 2 ●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java 8 ●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java 6 ●●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java 6 ●●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java 6 ●●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java 6 ●●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java 6 ●●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java 7 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java 113 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPCompare.java 8 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPConnection.java 53 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPConnectionOptions.java 20 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPDelete.java 9 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPModify.java 9 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPPasswordModify.java 21 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPReader.java 135 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPSearch.java 7 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPWriter.java 117 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/ManageAccount.java 22 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/StopDS.java 15 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/VerboseTracer.java 181 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java 20 ●●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/WhoAmIExtendedOperationTestCase.java 22 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java 342 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java 23 ●●●●● patch | view | raw | blame | history
opends/src/dsml/org/opends/dsml/protocol/DSMLAbandonOperation.java
@@ -86,7 +86,7 @@
    // Create and send an LDAP request to the server.
    ProtocolOp op = new AbandonRequestProtocolOp(abandonId);
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    return abandonResponse;
  }
opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java
@@ -30,10 +30,8 @@
import java.util.ArrayList;
import java.util.List;
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.AddRequestProtocolOp;
import org.opends.server.protocols.ldap.AddResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPAttribute;
@@ -106,12 +104,10 @@
    // Create and send the LDAP request to the server.
    ProtocolOp op = new AddRequestProtocolOp(dnStr, attributes);
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    // Read and decode the LDAP response from the server.
    ASN1Element element = connection.getASN1Reader().readElement();
    LDAPMessage responseMessage =
         LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
    LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
    AddResponseProtocolOp addOp = responseMessage.getAddResponseProtocolOp();
    int resultCode = addOp.getResultCode();
opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java
@@ -96,12 +96,10 @@
    // Create and send the LDAP compare request to the server.
    ProtocolOp op = new CompareRequestProtocolOp(dnStr, attrName, attrValue);
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    // Read and decode the LDAP response from the server.
    ASN1Element element = connection.getASN1Reader().readElement();
    LDAPMessage responseMessage =
          LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
    LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
    CompareResponseProtocolOp compareOp =
          responseMessage.getCompareResponseProtocolOp();
opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java
@@ -91,12 +91,10 @@
    ASN1OctetString dnStr = new ASN1OctetString(deleteRequest.getDn());
    ProtocolOp op = new DeleteRequestProtocolOp(dnStr);
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    // Read and decode the LDAP response from the server.
    ASN1Element element = connection.getASN1Reader().readElement();
    LDAPMessage responseMessage =
          LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
    LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
    DeleteResponseProtocolOp delOp =
          responseMessage.getDeleteResponseProtocolOp();
opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
@@ -92,12 +92,10 @@
    // Create and send the LDAP request to the server.
    ProtocolOp op = new ExtendedRequestProtocolOp(requestName, asnValue);
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    // Read and decode the LDAP response from the server.
    ASN1Element element = connection.getASN1Reader().readElement();
    LDAPMessage responseMessage =
          LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
    LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
    ExtendedResponseProtocolOp extendedOp =
          responseMessage.getExtendedResponseProtocolOp();
opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java
@@ -105,12 +105,10 @@
    // Create and send the LDAP request to the server.
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    // Read and decode the LDAP response from the server.
    ASN1Element element = connection.getASN1Reader().readElement();
    LDAPMessage responseMessage =
         LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
    LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
    ModifyDNResponseProtocolOp modDNOp =
         responseMessage.getModifyDNResponseProtocolOp();
opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java
@@ -129,12 +129,10 @@
    // Create and send the LDAP request to the server.
    ProtocolOp op = new ModifyRequestProtocolOp(dnStr, modifications);
    LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(), op);
    int numBytes = connection.getASN1Writer().writeElement(msg.encode());
    connection.getLDAPWriter().writeMessage(msg);
    // Read and parse the LDAP response from the server.
    ASN1Element element = connection.getASN1Reader().readElement();
    LDAPMessage responseMessage =
         LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
    LDAPMessage responseMessage = connection.getLDAPReader().readMessage();
    ModifyResponseProtocolOp modOp =
         responseMessage.getModifyResponseProtocolOp();
opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
@@ -163,16 +163,15 @@
      {
        LDAPMessage msg = new LDAPMessage(DSMLServlet.nextMessageID(),
                                          protocolOp);
        int numBytes = connection.getASN1Writer().writeElement(msg.encode());
        connection.getLDAPWriter().writeMessage(msg);
        byte opType;
        do
        {
          int resultCode = 0;
          String errorMessage = null;
          ASN1Element element = connection.getASN1Reader().readElement();
          LDAPMessage responseMessage = LDAPMessage.decode(
          ASN1Sequence.decodeAsSequence(element));
          LDAPMessage responseMessage =
               connection.getLDAPReader().readMessage();
          opType = responseMessage.getProtocolOpType();
          switch(opType)
opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
@@ -56,11 +56,8 @@
import javax.security.sasl.Sasl;
import javax.security.sasl.SaslClient;
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.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.ldap.BindRequestProtocolOp;
import org.opends.server.protocols.ldap.BindResponseProtocolOp;
import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
@@ -104,11 +101,11 @@
  // The bind DN for GSSAPI authentication.
  private ASN1OctetString gssapiBindDN;
  // The ASN.1 reader that will be used to read data from the server.
  private ASN1Reader reader;
  // The LDAP reader that will be used to read data from the server.
  private LDAPReader reader;
  // The ASN.1 writer that will be used to send data to the server.
  private ASN1Writer writer;
  // The LDAP writer that will be used to send data to the server.
  private LDAPWriter writer;
  // The atomic integer that will be used to obtain message IDs for request
  // messages.
@@ -152,20 +149,20 @@
   * for cases in which simple authentication will be used as it does not
   * require any particularly expensive processing.
   *
   * @param  reader         The ASN.1 reader that will be used to read data from
   * @param  reader         The LDAP reader that will be used to read data from
   *                        the server.
   * @param  writer         The ASN.1 writer that will be used to send data to
   * @param  writer         The LDAP writer that will be used to send data to
   *                        the server.
   * @param  hostName       The host name used to connect to the remote system
   *                        (fully-qualified if possible).
   * @param  nextMessageID  The atomic integer that will be used to obtain
   *                        message IDs for request messages.
   */
  public LDAPAuthenticationHandler(ASN1Reader reader, ASN1Writer writer,
  public LDAPAuthenticationHandler(LDAPReader reader, LDAPWriter writer,
                                   String hostName, AtomicInteger nextMessageID)
  {
    this.reader        = reader;
    this.writer        = writer;
    this.reader = reader;
    this.writer = writer;
    this.hostName      = hostName;
    this.nextMessageID = nextMessageID;
@@ -324,7 +321,7 @@
    try
    {
      writer.writeElement(bindRequestMessage.encode());
      writer.writeMessage(bindRequestMessage);
    }
    catch (IOException ioe)
    {
@@ -346,16 +343,14 @@
    LDAPMessage responseMessage;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage = reader.readMessage();
      if (responseMessage == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -647,7 +642,7 @@
    try
    {
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
    }
    catch (IOException ioe)
    {
@@ -671,16 +666,14 @@
    LDAPMessage responseMessage;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage = reader.readMessage();
      if (responseMessage == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -920,7 +913,7 @@
    try
    {
      writer.writeElement(requestMessage1.encode());
      writer.writeMessage(requestMessage1);
    }
    catch (IOException ioe)
    {
@@ -944,17 +937,14 @@
    LDAPMessage responseMessage1;
    try
    {
      ASN1Element responseElement1 = reader.readElement();
      if (responseElement1 == null)
      responseMessage1 = reader.readMessage();
      if (responseMessage1 == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage1 =
           LDAPMessage.decode(responseElement1.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -1080,7 +1070,7 @@
    try
    {
      writer.writeElement(requestMessage2.encode());
      writer.writeMessage(requestMessage2);
    }
    catch (IOException ioe)
    {
@@ -1104,16 +1094,14 @@
    LDAPMessage responseMessage2;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage2 = reader.readMessage();
      if (responseMessage2 == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage2 = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -1547,7 +1535,7 @@
    try
    {
      writer.writeElement(requestMessage1.encode());
      writer.writeMessage(requestMessage1);
    }
    catch (IOException ioe)
    {
@@ -1571,17 +1559,14 @@
    LDAPMessage responseMessage1;
    try
    {
      ASN1Element responseElement1 = reader.readElement();
      if (responseElement1 == null)
      responseMessage1 = reader.readMessage();
      if (responseMessage1 == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage1 =
           LDAPMessage.decode(responseElement1.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -1876,7 +1861,7 @@
    try
    {
      writer.writeElement(requestMessage2.encode());
      writer.writeMessage(requestMessage2);
    }
    catch (IOException ioe)
    {
@@ -1900,16 +1885,14 @@
    LDAPMessage responseMessage2;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage2 = reader.readMessage();
      if (responseMessage2 == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage2 = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -2557,7 +2540,7 @@
    try
    {
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
    }
    catch (IOException ioe)
    {
@@ -2581,16 +2564,14 @@
    LDAPMessage responseMessage;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage = reader.readMessage();
      if (responseMessage == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -3180,7 +3161,7 @@
    try
    {
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
    }
    catch (IOException ioe)
    {
@@ -3204,16 +3185,14 @@
    LDAPMessage responseMessage;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage = reader.readMessage();
      if (responseMessage == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
@@ -3419,7 +3398,7 @@
      try
      {
        writer.writeElement(requestMessage.encode());
        writer.writeMessage(requestMessage);
      }
      catch (IOException ioe)
      {
@@ -3443,17 +3422,14 @@
      LDAPMessage responseMessage;
      try
      {
        ASN1Element responseElement = reader.readElement();
        if (responseElement == null)
        responseMessage = reader.readMessage();
        if (responseMessage == null)
        {
          int msgID = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
          String message = getMessage(msgID);
          throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                    msgID, message);
        }
        responseMessage =
             LDAPMessage.decode(responseElement.decodeAsSequence());
      }
      catch (IOException ioe)
      {
@@ -3605,7 +3581,7 @@
          try
          {
            writer.writeElement(requestMessage.encode());
            writer.writeMessage(requestMessage);
          }
          catch (IOException ioe)
          {
@@ -3628,8 +3604,8 @@
          // Read the response from the server.
          try
          {
            ASN1Element responseElement = reader.readElement();
            if (responseElement == null)
            responseMessage = reader.readMessage();
            if (responseMessage == null)
            {
              int msgID =
                   MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
@@ -3637,9 +3613,6 @@
              throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                        msgID, message);
            }
            responseMessage =
                 LDAPMessage.decode(responseElement.decodeAsSequence());
          }
          catch (IOException ioe)
          {
@@ -3825,7 +3798,7 @@
    try
    {
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
    }
    catch (IOException ioe)
    {
@@ -3847,16 +3820,14 @@
    LDAPMessage responseMessage;
    try
    {
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage = reader.readMessage();
      if (responseMessage == null)
      {
        int    msgID   = MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE;
        String message = getMessage(msgID);
        throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                  msgID, message);
      }
      responseMessage = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
opends/src/server/org/opends/server/tools/LDAPCompare.java
@@ -38,10 +38,8 @@
import java.util.LinkedList;
import java.util.concurrent.atomic.AtomicInteger;
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.CompareRequestProtocolOp;
import org.opends.server.protocols.ldap.CompareResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPControl;
@@ -210,10 +208,8 @@
      {
        LDAPMessage message = new LDAPMessage(nextMessageID.getAndIncrement(),
                                              protocolOp, controls);
        connection.getASN1Writer().writeElement(message.encode());
        ASN1Element element = connection.getASN1Reader().readElement();
        responseMessage =
             LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
        connection.getLDAPWriter().writeMessage(message);
        responseMessage = connection.getLDAPReader().readMessage();
      } catch(ASN1Exception ae)
      {
        if (debugEnabled())
opends/src/server/org/opends/server/tools/LDAPConnection.java
@@ -39,8 +39,6 @@
import org.opends.server.controls.PasswordPolicyResponseControl;
import org.opends.server.controls.PasswordPolicyWarningType;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPControl;
@@ -80,8 +78,8 @@
  private int portNumber = 389;
  private LDAPConnectionOptions connectionOptions = null;
  private ASN1Writer asn1Writer;
  private ASN1Reader asn1Reader;
  private LDAPWriter ldapWriter;
  private LDAPReader ldapReader;
  private int versionNumber = 3;
  private PrintStream out;
@@ -154,19 +152,21 @@
                            AtomicInteger nextMessageID)
                            throws LDAPConnectionException
  {
    Socket socket = null;
    Socket socket;
    Socket startTLSSocket = null;
    int resultCode = -1;
    int resultCode;
    ArrayList<LDAPControl> requestControls = new ArrayList<LDAPControl> ();
    ArrayList<LDAPControl> responseControls = new ArrayList<LDAPControl> ();
    VerboseTracer tracer =
         new VerboseTracer(connectionOptions.isVerbose(), err);
    if(connectionOptions.useStartTLS())
    {
      try
      {
        startTLSSocket = new Socket(hostName, portNumber);
        asn1Writer = new ASN1Writer(startTLSSocket);
        asn1Reader = new ASN1Reader(startTLSSocket);
        ldapWriter = new LDAPWriter(startTLSSocket, tracer);
        ldapReader = new LDAPReader(startTLSSocket, tracer);
      } catch(UnknownHostException uhe)
      {
        int msgID = MSGID_RESULT_CLIENT_SIDE_CONNECT_ERROR;
@@ -196,10 +196,10 @@
                                        extendedRequest);
      try
      {
        asn1Writer.writeElement(msg.encode());
        ldapWriter.writeMessage(msg);
        // Read the response from the server.
        msg = LDAPMessage.decode(asn1Reader.readElement().decodeAsSequence());
        msg = ldapReader.readMessage();
      } catch (Exception ex1)
      {
        if (debugEnabled())
@@ -236,8 +236,8 @@
      {
        socket = new Socket(hostName, portNumber);
      }
      asn1Writer = new ASN1Writer(socket);
      asn1Reader = new ASN1Reader(socket);
      ldapWriter = new LDAPWriter(socket, tracer);
      ldapReader = new LDAPReader(socket, tracer);
    } catch(UnknownHostException uhe)
    {
      int msgID = MSGID_RESULT_CLIENT_SIDE_CONNECT_ERROR;
@@ -285,7 +285,7 @@
    }
    LDAPAuthenticationHandler handler = new LDAPAuthenticationHandler(
            asn1Reader, asn1Writer, hostName, nextMessageID);
         ldapReader, ldapWriter, hostName, nextMessageID);
    try
    {
      ASN1OctetString bindPW;
@@ -441,7 +441,7 @@
   */
  public void close(AtomicInteger nextMessageID)
  {
    if(asn1Writer != null)
    if(ldapWriter != null)
    {
      if (nextMessageID != null)
      {
@@ -449,38 +449,37 @@
        {
          LDAPMessage message = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                new UnbindRequestProtocolOp());
          asn1Writer.writeElement(message.encode());
          ldapWriter.writeMessage(message);
        } catch (Exception e) {}
      }
      asn1Writer.close();
      ldapWriter.close();
    }
    if(asn1Reader != null)
    if(ldapReader != null)
    {
      asn1Reader.close();
      ldapReader.close();
    }
  }
  /**
   * Get the underlying ASN1 writer.
   * Get the underlying LDAP writer.
   *
   * @return  The underlying ASN.1 writer.
   * @return  The underlying LDAP writer.
   */
  public ASN1Writer getASN1Writer()
  public LDAPWriter getLDAPWriter()
  {
    return asn1Writer;
    return ldapWriter;
  }
  /**
   * Get the underlying ASN1 reader.
   * Get the underlying LDAP reader.
   *
   * @return  The underlying ASN.1 reader.
   * @return  The underlying LDAP reader.
   */
  public ASN1Reader getASN1Reader()
  public LDAPReader getLDAPReader()
  {
    return asn1Reader;
    return ldapReader;
  }
}
opends/src/server/org/opends/server/tools/LDAPConnectionOptions.java
@@ -52,6 +52,7 @@
  private int versionNumber = 3;
  private Map<String, List<String>> saslProperties =
                                         new HashMap<String, List<String>> ();
  private boolean verbose = false;
  /**
   * Creates a the connection options instance.
@@ -302,5 +303,24 @@
  {
    this.usePasswordPolicyControl = usePasswordPolicyControl;
  }
  /**
   * Indicates whether verbose tracing is enabled.
   *
   * @return <CODE>true</CODE> if verbose tracing is enabled.
   */
  public boolean isVerbose()
  {
    return verbose;
  }
  /**
   * Specifies whether verbose tracing should be enabled.
   * @param verbose Specifies whether verbose tracing should be enabled.
   */
  public void setVerbose(boolean verbose)
  {
    this.verbose = verbose;
  }
}
opends/src/server/org/opends/server/tools/LDAPDelete.java
@@ -38,10 +38,8 @@
import java.util.concurrent.atomic.AtomicInteger;
import org.opends.server.core.DirectoryServer;
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.DeleteRequestProtocolOp;
import org.opends.server.protocols.ldap.DeleteResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPControl;
@@ -193,11 +191,8 @@
      LDAPMessage responseMessage = null;
      try
      {
        int numBytes =
             connection.getASN1Writer().writeElement(message.encode());
        ASN1Element element = connection.getASN1Reader().readElement();
        responseMessage = LDAPMessage.decode(
                               ASN1Sequence.decodeAsSequence(element));
        connection.getLDAPWriter().writeMessage(message);
        responseMessage = connection.getLDAPReader().readMessage();
      } catch(ASN1Exception ae)
      {
        if (debugEnabled())
opends/src/server/org/opends/server/tools/LDAPModify.java
@@ -341,11 +341,8 @@
          LDAPMessage message =
               new LDAPMessage(nextMessageID.getAndIncrement(), protocolOp,
                               controls);
          // int numBytes =
          connection.getASN1Writer().writeElement(message.encode());
          ASN1Element element = connection.getASN1Reader().readElement();
          responseMessage =
               LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
          connection.getLDAPWriter().writeMessage(message);
          responseMessage = connection.getLDAPReader().readMessage();
        } catch(ASN1Exception ae)
        {
          if (debugEnabled())
@@ -1100,6 +1097,8 @@
      }
    }
    connectionOptions.setVerbose(verbose.isPresent());
    LDAPModify ldapModify = null;
    try
    {
opends/src/server/org/opends/server/tools/LDAPPasswordModify.java
@@ -39,9 +39,7 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Sequence;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPControl;
@@ -619,8 +617,8 @@
      return lce.getResultCode();
    }
    ASN1Reader reader = connection.getASN1Reader();
    ASN1Writer writer = connection.getASN1Writer();
    LDAPReader reader = connection.getLDAPReader();
    LDAPWriter writer = connection.getLDAPWriter();
    // Construct the password modify request.
@@ -677,7 +675,7 @@
    // Send the request to the server and read the response.
    try
    {
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
    }
    catch (Exception e)
    {
@@ -689,7 +687,7 @@
      {
        requestMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                         new UnbindRequestProtocolOp());
        writer.writeElement(requestMessage.encode());
        writer.writeMessage(requestMessage);
      }
      catch (Exception e2) {}
@@ -707,8 +705,7 @@
    LDAPMessage responseMessage = null;
    try
    {
      ASN1Sequence responseSequence = reader.readElement().decodeAsSequence();
      responseMessage = LDAPMessage.decode(responseSequence);
      responseMessage = reader.readMessage();
    }
    catch (Exception e)
    {
@@ -720,7 +717,7 @@
      {
        requestMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                         new UnbindRequestProtocolOp());
        writer.writeElement(requestMessage.encode());
        writer.writeMessage(requestMessage);
      }
      catch (Exception e2) {}
@@ -764,7 +761,7 @@
      {
        requestMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                         new UnbindRequestProtocolOp());
        writer.writeElement(requestMessage.encode());
        writer.writeMessage(requestMessage);
      }
      catch (Exception e) {}
@@ -871,7 +868,7 @@
        {
          requestMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                           new UnbindRequestProtocolOp());
          writer.writeElement(requestMessage.encode());
          writer.writeMessage(requestMessage);
        }
        catch (Exception e2) {}
@@ -891,7 +888,7 @@
    {
      requestMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                       new UnbindRequestProtocolOp());
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
    }
    catch (Exception e) {}
opends/src/server/org/opends/server/tools/LDAPReader.java
New file
@@ -0,0 +1,135 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.server.tools;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1Exception;
import org.opends.server.protocols.asn1.ASN1Sequence;
import org.opends.server.protocols.ldap.LDAPMessage;
import org.opends.server.types.LDAPException;
import java.io.IOException;
import java.net.Socket;
/**
 * This class defines a utility that can be used to read LDAP messages from a
 * provided socket.
 */
public class LDAPReader
{
  private ASN1Reader asn1Reader;
  private VerboseTracer tracer;
  /**
   * Creates a new LDAP reader that will read messages from the provided
   * socket.
   *
   * @param  socket  The socket from which to read the LDAP messages.
   *
   * @throws  IOException  If a problem occurs while attempting to obtain an
   *                       ASN.1 reader for the socket.
   */
  public LDAPReader(Socket socket)
       throws IOException
  {
    this(socket, null);
  }
  /**
   * Creates a new LDAP reader that will read messages from the provided
   * socket and trace the messages using a provided tracer.
   *
   * @param  socket   The socket from which to read the LDAP messages.
   *
   * @param  tracer   Specifies a tracer to be used for tracing messages read.
   *
   * @throws  IOException  If a problem occurs while attempting to obtain an
   *                       input stream for the socket.
   */
  public LDAPReader(Socket socket, VerboseTracer tracer)
       throws IOException
  {
    this.asn1Reader = new ASN1Reader(socket);
    this.tracer = tracer;
  }
  /**
   * Reads an LDAP message from the associated input stream.
   *
   * @return  The LDAP message read from the associated input stream, or
   *          <CODE>null</CODE> if the end of the stream has been reached.
   *
   * @throws  IOException  If a problem occurs while attempting to read from the
   *                       input stream.
   *
   * @throws  ASN1Exception  If a problem occurs while attempting to decode the
   *                         data read as an ASN.1 sequence.
   * @throws  LDAPException  If a problem occurs while attempting to decode the
   *                         LDAP message.
   */
  public LDAPMessage readMessage()
       throws IOException, ASN1Exception, LDAPException
  {
    ASN1Element element = asn1Reader.readElement();
    if (element == null)
    {
      return null;
    }
    ASN1Sequence sequence = ASN1Sequence.decodeAsSequence(element);
    LDAPMessage message = LDAPMessage.decode(sequence);
    if (tracer != null)
    {
      tracer.traceIncomingMessage(message, sequence);
    }
    return message;
  }
  /**
   * Closes this LDAP reader and the underlying socket.
   */
  public void close()
  {
    asn1Reader.close();
  }
  /**
   * Get the underlying ASN1 reader.
   *
   * @return  The underlying ASN1 reader.
   */
  public ASN1Reader getASN1Reader()
  {
    return asn1Reader;
  }
}
opends/src/server/org/opends/server/tools/LDAPSearch.java
@@ -182,7 +182,7 @@
          LDAPMessage message = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                protocolOp,
                                                searchOptions.getControls());
          connection.getASN1Writer().writeElement(message.encode());
          connection.getLDAPWriter().writeMessage(message);
          byte opType;
          do
@@ -190,9 +190,8 @@
            int resultCode = 0;
            String errorMessage = null;
            DN matchedDN = null;
            ASN1Element element = connection.getASN1Reader().readElement();
            LDAPMessage responseMessage =
                 LDAPMessage.decode(ASN1Sequence.decodeAsSequence(element));
                 connection.getLDAPReader().readMessage();
            responseControls = responseMessage.getControls();
@@ -1515,6 +1514,8 @@
      }
    }
    connectionOptions.setVerbose(verbose.isPresent());
    // Read the filter strings.
    if(fileNameValue != null)
    {
opends/src/server/org/opends/server/tools/LDAPWriter.java
New file
@@ -0,0 +1,117 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.server.tools;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.ldap.LDAPMessage;
import java.net.Socket;
import java.io.IOException;
/**
 * This class defines a utility that can be used to write LDAP messages over a
 * provided socket.
 */
public class LDAPWriter
{
  ASN1Writer asn1Writer;
  VerboseTracer tracer;
  /**
   * Creates a new LDAP writer that will write messages to the provided
   * socket.
   *
   * @param  socket  The socket to use to write LDAP messages.
   *
   * @throws  IOException  If a problem occurs while attempting to obtain an
   *                       ASN.1 reader for the socket.
   */
  public LDAPWriter(Socket socket)
       throws IOException
  {
    this(socket, null);
  }
  /**
   * Creates a new LDAP writer that will write messages to the provided
   * socket and trace the messages using a provided tracer.
   *
   * @param  socket  The socket to use to write LDAP messages.
   *
   * @param  tracer  Specifies a tracer to be used for tracing messages written.
   *
   * @throws  IOException  If a problem occurs while attempting to obtain an
   *                       output stream for the socket.
   */
  public LDAPWriter(Socket socket, VerboseTracer tracer)
       throws IOException
  {
    this.asn1Writer = new ASN1Writer(socket);
    this.tracer = tracer;
  }
  /**
   * Writes an LDAP message to the associated output stream.
   *
   * @param   message      The message to be written.
   *
   * @throws  IOException  If a problem occurs while trying to write the
   *                       information over the output stream.
   */
  public void writeMessage(LDAPMessage message)
       throws IOException
  {
    ASN1Element element = message.encode();
    if (tracer != null)
    {
      tracer.traceOutgoingMessage(message, element);
    }
    asn1Writer.writeElement(element);
  }
  /**
   * Closes this LDAP writer and the underlying socket.
   */
  public void close()
  {
    asn1Writer.close();
  }
  /**
   * Get the underlying ASN1 writer.
   *
   * @return  The underlying ASN1 writer.
   */
  public ASN1Writer getASN1Writer()
  {
    return asn1Writer;
  }
}
opends/src/server/org/opends/server/tools/ManageAccount.java
@@ -37,9 +37,7 @@
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Sequence;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
import org.opends.server.protocols.ldap.LDAPMessage;
@@ -473,11 +471,11 @@
  // The ASN.1 reader used to read responses from the server.
  private static ASN1Reader asn1Reader;
  // The LDAP reader used to read responses from the server.
  private static LDAPReader ldapReader;
  // The ASN.1 writer used to send requests to the server.
  private static ASN1Writer asn1Writer;
  // The LDAP writer used to send requests to the server.
  private static LDAPWriter ldapWriter;
  // The counter that will be used for LDAP message IDs.
  private static AtomicInteger nextMessageID;
@@ -596,7 +594,7 @@
      try
      {
        asn1Writer.writeElement(requestMessage.encode());
        ldapWriter.writeMessage(requestMessage);
      }
      catch (Exception e)
      {
@@ -611,8 +609,8 @@
      ArrayList<ASN1Element> responseOpElements;
      try
      {
        ASN1Element responseElement = asn1Reader.readElement();
        if (responseElement == null)
        LDAPMessage responseMessage = ldapReader.readMessage();
        if (responseMessage == null)
        {
          int    msgID   = MSGID_PWPSTATE_CONNECTION_CLOSED_READING_RESPONSE;
          String message = getMessage(msgID);
@@ -620,8 +618,6 @@
          return LDAPResultCode.CLIENT_SIDE_SERVER_DOWN;
        }
        LDAPMessage responseMessage =
             LDAPMessage.decode(responseElement.decodeAsSequence());
        ExtendedResponseProtocolOp extendedResponse =
             responseMessage.getExtendedResponseProtocolOp();
@@ -1334,8 +1330,8 @@
      return LDAPResultCode.CLIENT_SIDE_CONNECT_ERROR;
    }
    asn1Reader = connection.getASN1Reader();
    asn1Writer = connection.getASN1Writer();
    ldapReader = connection.getLDAPReader();
    ldapWriter = connection.getLDAPWriter();
    return LDAPResultCode.SUCCESS;
  }
opends/src/server/org/opends/server/tools/StopDS.java
@@ -42,11 +42,8 @@
import org.opends.server.controls.ProxiedAuthV2Control;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.LockFileManager;
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.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.ldap.AddRequestProtocolOp;
import org.opends.server.protocols.ldap.AddResponseProtocolOp;
import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
@@ -635,8 +632,8 @@
      return LDAPResultCode.CLIENT_SIDE_CONNECT_ERROR;
    }
    ASN1Reader reader = connection.getASN1Reader();
    ASN1Writer writer = connection.getASN1Writer();
    LDAPReader reader = connection.getLDAPReader();
    LDAPWriter writer = connection.getLDAPWriter();
    // Construct the add request to send to the server.
@@ -708,18 +705,16 @@
    LDAPMessage responseMessage;
    try
    {
      writer.writeElement(requestMessage.encode());
      writer.writeMessage(requestMessage);
      ASN1Element responseElement = reader.readElement();
      if (responseElement == null)
      responseMessage = reader.readMessage();
      if (responseMessage == null)
      {
        int    msgID   = MSGID_STOPDS_UNEXPECTED_CONNECTION_CLOSURE;
        String message = getMessage(msgID);
        err.println(wrapText(message, MAX_LINE_WIDTH));
        return LDAPResultCode.CLIENT_SIDE_SERVER_DOWN;
      }
      responseMessage = LDAPMessage.decode(responseElement.decodeAsSequence());
    }
    catch (IOException ioe)
    {
opends/src/server/org/opends/server/tools/VerboseTracer.java
New file
@@ -0,0 +1,181 @@
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 */
package org.opends.server.tools;
import org.opends.server.protocols.ldap.LDAPMessage;
import org.opends.server.protocols.ldap.LDAPConstants;
import org.opends.server.protocols.asn1.ASN1Element;
import org.opends.server.util.ServerConstants;
import java.io.PrintStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * A utility class for the LDAP client tools that performs verbose tracing of
 * LDAP and ASN.1 messages.
 */
public class VerboseTracer
{
  /**
   * Indicates whether verbose mode is on or off.
   */
  private boolean verbose;
  /**
   * The print stream where tracing will be sent.
   */
  private PrintStream err;
  /**
   * The time in milliseconds of the first message traced.
   */
  private long firstMessageTimestamp = 0;
  /**
   * The time in millseconds of the previous message traced.
   */
  private long lastMessageTimestamp = 0;
  /**
   * The format used for trace timestamps.
   */
  private DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss.SSS");
  /**
   * Constructs a tracer with a specified verbosity and print stream.
   * @param verbose Indicates whether verbose mode is on or off.
   * @param err The print stream where tracing will be sent.
   */
  public VerboseTracer(boolean verbose, PrintStream err)
  {
    this.verbose = verbose;
    this.err = err;
  }
  /**
   * Trace an incoming or outgoing message.
   * @param messageDirection  Use "C>S" to indicate outgoing client to server.
   *                          Use "S>C" to indicate incoming server to client.
   * @param message The LDAP message to be traced.
   * @param element The ASN.1 element of the message.
   */
  private synchronized void traceMessage(String messageDirection,
                                         LDAPMessage message,
                                         ASN1Element element)
  {
    StringBuilder header = new StringBuilder();
    StringBuilder builder = new StringBuilder();
    long timestamp = System.currentTimeMillis();
    long timeSinceLast;
    if (firstMessageTimestamp == 0)
    {
      firstMessageTimestamp = timestamp;
    }
    if (lastMessageTimestamp == 0)
    {
      lastMessageTimestamp = timestamp;
    }
    timeSinceLast = timestamp - lastMessageTimestamp;
    if (timeSinceLast < 0)
    {
      timeSinceLast = 0;
    }
    String timestampString = dateFormat.format(new Date(timestamp));
    header.append(messageDirection);
    header.append(' ');
    header.append(timestampString);
    // Include the number of milliseconds since the previous traced message.
    header.append(" (");
    header.append(timeSinceLast);
    header.append("ms) ");
    builder.append("LDAP: ");
    builder.append(header);
    builder.append(message);
    builder.append(ServerConstants.EOL);
    builder.append("ASN1: ");
    builder.append(header);
    element.toString(builder, 0);
    err.print(builder);
    if (timestamp > lastMessageTimestamp)
    {
      lastMessageTimestamp = timestamp;
    }
  }
  /**
   * Trace an incoming message.
   * @param message The LDAP message to be traced.
   * @param element The ASN.1 element of the message.
   */
  public void traceIncomingMessage(LDAPMessage message,
                                                ASN1Element element)
  {
    if (verbose)
    {
      if (message.getProtocolOpType() !=
           LDAPConstants.OP_TYPE_SEARCH_RESULT_ENTRY)
      {
        traceMessage("S>C", message, element);
      }
    }
  }
  /**
   * Trace an outgoing message.
   * @param message The LDAP message to be traced.
   * @param element The ASN.1 element of the message.
   */
  public void traceOutgoingMessage(LDAPMessage message,
                                                ASN1Element element)
  {
    if (verbose)
    {
      if (message.getProtocolOpType() !=
           LDAPConstants.OP_TYPE_SEARCH_RESULT_ENTRY)
      {
        traceMessage("C>S", message, element);
      }
    }
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java
@@ -42,8 +42,6 @@
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.LDAPException;
import org.opends.server.types.ResultCode;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.protocols.ldap.LDAPMessage;
import org.opends.server.protocols.ldap.UnbindRequestProtocolOp;
@@ -335,8 +333,8 @@
  public void testAuthWAIDefCfg() throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader reader = new ASN1Reader(s);
    ASN1Writer writer = new ASN1Writer(s);
    LDAPReader reader = new LDAPReader(s);
    LDAPWriter writer = new LDAPWriter(s);
    AtomicInteger nextMessageID = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
@@ -351,7 +349,7 @@
    LDAPMessage unbindMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                new UnbindRequestProtocolOp());
    writer.writeElement(unbindMessage.encode());
    writer.writeMessage(unbindMessage);
    s.close();
  }
@@ -368,8 +366,8 @@
  public void testUnauthWAIDefCfg() throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader reader = new ASN1Reader(s);
    ASN1Writer writer = new ASN1Writer(s);
    LDAPReader reader = new LDAPReader(s);
    LDAPWriter writer = new LDAPWriter(s);
    AtomicInteger nextMessageID = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
@@ -380,7 +378,7 @@
    LDAPMessage unbindMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                new UnbindRequestProtocolOp());
    writer.writeElement(unbindMessage.encode());
    writer.writeMessage(unbindMessage);
    s.close();
  }
@@ -633,8 +631,8 @@
                                          IOException,ClientException
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader reader = new ASN1Reader(s);
    ASN1Writer writer = new ASN1Writer(s);
    LDAPReader reader = new LDAPReader(s);
    LDAPWriter writer = new LDAPWriter(s);
    AtomicInteger nextMessageID = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
         new LDAPAuthenticationHandler(reader, writer, "localhost",
@@ -653,7 +651,7 @@
      LDAPMessage unbindMessage = new LDAPMessage(
                                    nextMessageID.getAndIncrement(),
                                    new UnbindRequestProtocolOp());
      writer.writeElement(unbindMessage.encode());
      writer.writeMessage(unbindMessage);
      s.close();
    }
  }
opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/WhoAmIExtendedOperationTestCase.java
@@ -39,13 +39,13 @@
import org.opends.server.core.AddOperation;
import org.opends.server.core.ExtendedOperation;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.protocols.ldap.LDAPMessage;
import org.opends.server.protocols.ldap.UnbindRequestProtocolOp;
import org.opends.server.tools.LDAPAuthenticationHandler;
import org.opends.server.tools.LDAPReader;
import org.opends.server.tools.LDAPWriter;
import org.opends.server.types.AuthenticationInfo;
import org.opends.server.types.Entry;
import org.opends.server.types.ResultCode;
@@ -162,8 +162,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader reader = new ASN1Reader(s);
    ASN1Writer writer = new ASN1Writer(s);
    LDAPReader reader = new LDAPReader(s);
    LDAPWriter writer = new LDAPWriter(s);
    AtomicInteger nextMessageID = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
@@ -178,7 +178,7 @@
    LDAPMessage unbindMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                new UnbindRequestProtocolOp());
    writer.writeElement(unbindMessage.encode());
    writer.writeMessage(unbindMessage);
    s.close();
  }
@@ -195,8 +195,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader reader = new ASN1Reader(s);
    ASN1Writer writer = new ASN1Writer(s);
    LDAPReader reader = new LDAPReader(s);
    LDAPWriter writer = new LDAPWriter(s);
    AtomicInteger nextMessageID = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
@@ -207,7 +207,7 @@
    LDAPMessage unbindMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                new UnbindRequestProtocolOp());
    writer.writeElement(unbindMessage.encode());
    writer.writeMessage(unbindMessage);
    s.close();
  }
@@ -246,8 +246,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader reader = new ASN1Reader(s);
    ASN1Writer writer = new ASN1Writer(s);
    LDAPReader reader = new LDAPReader(s);
    LDAPWriter writer = new LDAPWriter(s);
    AtomicInteger nextMessageID = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
@@ -262,7 +262,7 @@
    LDAPMessage unbindMessage = new LDAPMessage(nextMessageID.getAndIncrement(),
                                                new UnbindRequestProtocolOp());
    writer.writeElement(unbindMessage.encode());
    writer.writeMessage(unbindMessage);
    s.close();
  }
}
opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java
@@ -46,8 +46,6 @@
import org.opends.server.core.DirectoryServer;
import org.opends.server.extensions.AnonymousSASLMechanismHandler;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.internal.InternalClientConnection;
import org.opends.server.protocols.ldap.LDAPControl;
import org.opends.server.types.Entry;
@@ -171,8 +169,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -200,8 +198,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -227,8 +225,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -255,8 +253,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -290,8 +288,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -325,8 +323,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -355,8 +353,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -391,8 +389,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -427,8 +425,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -464,8 +462,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -508,8 +506,8 @@
    handler.initializeSASLMechanismHandler(null);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -547,8 +545,8 @@
    handler.initializeSASLMechanismHandler(null);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -584,8 +582,8 @@
    handler.initializeSASLMechanismHandler(null);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -631,8 +629,8 @@
    handler.initializeSASLMechanismHandler(null);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -677,8 +675,8 @@
    handler.initializeSASLMechanismHandler(null);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -744,8 +742,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -811,8 +809,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -849,8 +847,8 @@
    TestCaseUtils.initializeTestBackend(true);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -893,8 +891,8 @@
    TestCaseUtils.initializeTestBackend(true);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -959,8 +957,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1023,8 +1021,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1065,8 +1063,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1103,8 +1101,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1144,8 +1142,8 @@
    TestCaseUtils.initializeTestBackend(true);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1189,8 +1187,8 @@
    TestCaseUtils.initializeTestBackend(true);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1260,8 +1258,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1327,8 +1325,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1399,8 +1397,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1463,8 +1461,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1503,8 +1501,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1541,8 +1539,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1580,8 +1578,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1622,8 +1620,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1665,8 +1663,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1707,8 +1705,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1779,8 +1777,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1825,8 +1823,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1877,8 +1875,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1928,8 +1926,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -1979,8 +1977,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2032,8 +2030,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2084,8 +2082,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2136,8 +2134,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2185,8 +2183,8 @@
    TestCaseUtils.initializeTestBackend(true);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2256,8 +2254,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2325,8 +2323,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2397,8 +2395,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2477,8 +2475,8 @@
    Socket s = factory.createSocket("127.0.0.1",
                                    TestCaseUtils.getServerLdapsPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2548,8 +2546,8 @@
    Socket s = factory.createSocket("127.0.0.1",
                                    TestCaseUtils.getServerLdapsPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2617,8 +2615,8 @@
    Socket s = factory.createSocket("127.0.0.1",
                                    TestCaseUtils.getServerLdapsPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2692,8 +2690,8 @@
    Socket s = factory.createSocket("127.0.0.1",
                                    TestCaseUtils.getServerLdapsPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2725,8 +2723,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2762,8 +2760,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2800,8 +2798,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2842,8 +2840,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2885,8 +2883,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2932,8 +2930,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -2979,8 +2977,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3028,8 +3026,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3075,8 +3073,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3121,8 +3119,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3167,8 +3165,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3214,8 +3212,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3260,8 +3258,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3329,8 +3327,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3394,8 +3392,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3429,8 +3427,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3466,8 +3464,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3504,8 +3502,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3547,8 +3545,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3589,8 +3587,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3636,8 +3634,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3682,8 +3680,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3727,8 +3725,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3784,8 +3782,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3842,8 +3840,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3879,8 +3877,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    LDAPAuthenticationHandler authHandler =
@@ -3903,8 +3901,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3932,8 +3930,8 @@
         throws Exception
  {
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -3984,8 +3982,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -4017,8 +4015,8 @@
    handler.initializeSASLMechanismHandler(null);
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -4079,8 +4077,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -4141,8 +4139,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -4215,8 +4213,8 @@
    Socket s = factory.createSocket("127.0.0.1",
                                    TestCaseUtils.getServerLdapsPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
@@ -4269,8 +4267,8 @@
    Socket s = new Socket("127.0.0.1", TestCaseUtils.getServerLdapPort());
    ASN1Reader r = new ASN1Reader(s);
    ASN1Writer w = new ASN1Writer(s);
    LDAPReader r = new LDAPReader(s);
    LDAPWriter w = new LDAPWriter(s);
    AtomicInteger          messageID        = new AtomicInteger(1);
    ArrayList<LDAPControl> requestControls  = new ArrayList<LDAPControl>();
opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPSearchTestCase.java
@@ -566,6 +566,29 @@
  /**
   * Tests a simple search with verbose output.
   */
  @Test()
  public void testSimpleVerboseSearch()
  {
    String[] args =
    {
      "-h", "127.0.0.1",
      "-p", String.valueOf(TestCaseUtils.getServerLdapPort()),
      "-v",
      "-D", "cn=Directory Manager",
      "-w", "password",
      "-b", "",
      "-s", "base",
      "(objectClass=*)"
    };
    assertEquals(LDAPSearch.mainSearch(args, false, null, System.err), 0);
  }
  /**
   * Tests a simple invocation using the "--dry-run" option with a valid argument
   * set.
   */