From 32034d853f3a284424ccfa87b6de210f1ca814e1 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 29 Nov 2011 00:31:21 +0000
Subject: [PATCH] Fix OPENDJ-43 (Synchronous Connection decorator implementations should not use AsynchronousConnections) and OPENDJ-328 (Make it easier to implement connection decorators).

---
 opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java |  102 +++++++++++++++++++++++---------------------------
 1 files changed, 47 insertions(+), 55 deletions(-)

diff --git a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
index 705c271..5ad6c39 100644
--- a/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
+++ b/opendj3/opendj-ldap-sdk/src/main/java/com/forgerock/opendj/ldap/LDAPConnection.java
@@ -66,31 +66,21 @@
  * TODO: handle illegal state exceptions.
  */
 final class LDAPConnection extends AbstractAsynchronousConnection implements
-    AsynchronousConnection
+    Connection
 {
   private final org.glassfish.grizzly.Connection<?> connection;
-
   private Result connectionInvalidReason;
-
   private FilterChain customFilterChain;
-
   private boolean isClosed = false;
-
   private final List<ConnectionEventListener> listeners =
-    new CopyOnWriteArrayList<ConnectionEventListener>();
-
+      new CopyOnWriteArrayList<ConnectionEventListener>();
   private final AtomicInteger nextMsgID = new AtomicInteger(1);
-
-  private final AtomicBoolean bindOrStartTLSInProgress =
-      new AtomicBoolean(false);
-
+  private final AtomicBoolean bindOrStartTLSInProgress = new AtomicBoolean(
+      false);
   private final ConcurrentHashMap<Integer, AbstractLDAPFutureResultImpl<?>> pendingRequests =
-    new ConcurrentHashMap<Integer, AbstractLDAPFutureResultImpl<?>>();
-
+      new ConcurrentHashMap<Integer, AbstractLDAPFutureResultImpl<?>>();
   private final Object stateLock = new Object();
-
   private final LDAPWriter ldapWriter = new LDAPWriter();
-
   private final LDAPOptions options;
 
 
@@ -115,7 +105,7 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<Void> abandon(final AbandonRequest request)
+  public FutureResult<Void> abandonAsync(final AbandonRequest request)
   {
     final AbstractLDAPFutureResultImpl<?> pendingRequest;
     final int messageID = nextMsgID.getAndIncrement();
@@ -132,8 +122,8 @@
         final Result errorResult = Responses.newResult(
             ResultCode.OPERATIONS_ERROR).setDiagnosticMessage(
             "Bind or Start TLS operation in progress");
-        return new CompletedFutureResult<Void>(
-            newErrorResult(errorResult), messageID);
+        return new CompletedFutureResult<Void>(newErrorResult(errorResult),
+            messageID);
       }
 
       // First remove the future associated with the request to be abandoned.
@@ -173,8 +163,8 @@
       final Result errorResult = Responses.newResult(
           ResultCode.CLIENT_SIDE_ENCODING_ERROR).setCause(e);
       connectionErrorOccurred(errorResult);
-      return new CompletedFutureResult<Void>(
-          newErrorResult(errorResult), messageID);
+      return new CompletedFutureResult<Void>(newErrorResult(errorResult),
+          messageID);
     }
   }
 
@@ -183,9 +173,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<Result> add(final AddRequest request,
-      final ResultHandler<? super Result> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<Result> addAsync(final AddRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super Result> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPFutureResultImpl future = new LDAPFutureResultImpl(messageID,
@@ -253,9 +243,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<BindResult> bind(final BindRequest request,
-      final ResultHandler<? super BindResult> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<BindResult> bindAsync(final BindRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super BindResult> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
 
@@ -276,7 +266,8 @@
           .newResult(ResultCode.CLIENT_SIDE_LOCAL_ERROR)
           .setDiagnosticMessage(
               "An error occurred while creating a bind context").setCause(e);
-      final ErrorResultException error = ErrorResultException.newErrorResult(errorResult);
+      final ErrorResultException error = ErrorResultException
+          .newErrorResult(errorResult);
       if (resultHandler != null)
       {
         resultHandler.handleErrorResult(error);
@@ -371,9 +362,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<CompareResult> compare(final CompareRequest request,
-      final ResultHandler<? super CompareResult> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<CompareResult> compareAsync(final CompareRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super CompareResult> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPCompareFutureResultImpl future = new LDAPCompareFutureResultImpl(
@@ -429,9 +420,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<Result> delete(final DeleteRequest request,
-      final ResultHandler<? super Result> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<Result> deleteAsync(final DeleteRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super Result> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPFutureResultImpl future = new LDAPFutureResultImpl(messageID,
@@ -487,10 +478,10 @@
   /**
    * {@inheritDoc}
    */
-  public <R extends ExtendedResult> FutureResult<R> extendedRequest(
+  public <R extends ExtendedResult> FutureResult<R> extendedRequestAsync(
       final ExtendedRequest<R> request,
-      final ResultHandler<? super R> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super R> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPExtendedFutureResultImpl<R> future = new LDAPExtendedFutureResultImpl<R>(
@@ -522,8 +513,8 @@
         if (!bindOrStartTLSInProgress.compareAndSet(false, true))
         {
           future.setResultOrError(request.getResultDecoder()
-                .newExtendedErrorResult(ResultCode.OPERATIONS_ERROR, "",
-                    "Bind or Start TLS operation in progress"));
+              .newExtendedErrorResult(ResultCode.OPERATIONS_ERROR, "",
+                  "Bind or Start TLS operation in progress"));
           return future;
         }
       }
@@ -532,8 +523,8 @@
         if (bindOrStartTLSInProgress.get())
         {
           future.setResultOrError(request.getResultDecoder()
-                .newExtendedErrorResult(ResultCode.OPERATIONS_ERROR, "",
-                    "Bind or Start TLS operation in progress"));
+              .newExtendedErrorResult(ResultCode.OPERATIONS_ERROR, "",
+                  "Bind or Start TLS operation in progress"));
           return future;
         }
       }
@@ -594,9 +585,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<Result> modify(final ModifyRequest request,
-      final ResultHandler<? super Result> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<Result> modifyAsync(final ModifyRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super Result> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPFutureResultImpl future = new LDAPFutureResultImpl(messageID,
@@ -652,9 +643,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<Result> modifyDN(final ModifyDNRequest request,
-      final ResultHandler<? super Result> resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<Result> modifyDNAsync(final ModifyDNRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final ResultHandler<? super Result> resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPFutureResultImpl future = new LDAPFutureResultImpl(messageID,
@@ -722,9 +713,9 @@
   /**
    * {@inheritDoc}
    */
-  public FutureResult<Result> search(final SearchRequest request,
-      final SearchResultHandler resultHandler,
-      final IntermediateResponseHandler intermediateResponseHandler)
+  public FutureResult<Result> searchAsync(final SearchRequest request,
+      final IntermediateResponseHandler intermediateResponseHandler,
+      final SearchResultHandler resultHandler)
   {
     final int messageID = nextMsgID.getAndIncrement();
     final LDAPSearchFutureResultImpl future = new LDAPSearchFutureResultImpl(
@@ -831,7 +822,7 @@
                 .newResult(ResultCode.CLIENT_SIDE_TIMEOUT);
             future.adaptErrorResult(result);
 
-            abandon(Requests.newAbandonRequest(future.getRequestID()));
+            abandonAsync(Requests.newAbandonRequest(future.getRequestID()));
           }
           else
           {
@@ -853,7 +844,8 @@
 
     synchronized (stateLock)
     {
-      if (isClosed) {
+      if (isClosed)
+      {
         // Already closed.
         return;
       }
@@ -1051,10 +1043,10 @@
 
     sslEngineConfigurator = new SSLEngineConfigurator(sslContext, true, false,
         false);
-    sslEngineConfigurator.setEnabledProtocols(protocols.isEmpty() ?
-        null : protocols.toArray(new String[protocols.size()]));
-    sslEngineConfigurator.setEnabledCipherSuites(cipherSuites.isEmpty() ?
-        null : cipherSuites.toArray(new String[cipherSuites.size()]));
+    sslEngineConfigurator.setEnabledProtocols(protocols.isEmpty() ? null
+        : protocols.toArray(new String[protocols.size()]));
+    sslEngineConfigurator.setEnabledCipherSuites(cipherSuites.isEmpty() ? null
+        : cipherSuites.toArray(new String[cipherSuites.size()]));
     sslFilter = new SSLFilter(null, sslEngineConfigurator);
     installFilter(sslFilter);
     sslFilter.handshake(connection, completionHandler);

--
Gitblit v1.10.0