From d982ffa9b1bdf3cf1fa2b19737134d4714569a5a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 29 Aug 2014 08:07:09 +0000
Subject: [PATCH] Code cleanup

---
 opends/src/server/org/opends/server/core/SearchOperationBasis.java   |  411 ++++++-------------------
 opends/src/server/org/opends/server/core/SearchOperationWrapper.java |  206 ++---------
 opends/src/server/org/opends/server/api/Backend.java                 |  174 ----------
 opends/src/server/org/opends/server/core/WorkflowTopology.java       |   40 -
 opends/src/server/org/opends/server/core/SearchOperation.java        |  118 +++----
 5 files changed, 230 insertions(+), 719 deletions(-)

diff --git a/opends/src/server/org/opends/server/api/Backend.java b/opends/src/server/org/opends/server/api/Backend.java
index ebbd4be..fcbb39c 100644
--- a/opends/src/server/org/opends/server/api/Backend.java
+++ b/opends/src/server/org/opends/server/api/Backend.java
@@ -38,8 +38,6 @@
 import org.opends.server.monitors.BackendMonitor;
 import org.opends.server.types.*;
 
-import static org.opends.messages.BackendMessages.*;
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented for a Directory Server backend.
@@ -65,7 +63,7 @@
    * The set of backends that hold portions of the DIT that are hierarchically
    * below the information in this backend.
    */
-  private Backend<?>[] subordinateBackends;
+  private Backend<?>[] subordinateBackends = new Backend[0];
 
   /** The backend monitor associated with this backend. */
   private BackendMonitor backendMonitor;
@@ -79,26 +77,7 @@
   private String backendID;
 
   /** The writability mode for this backend. */
-  private WritabilityMode writabilityMode;
-
-
-
-  /**
-   * Creates a new backend with the provided information.  All backend
-   * implementations must implement a default constructor that use
-   * {@code super} to invoke this constructor.
-   */
-  protected Backend()
-  {
-    backendID           = null;
-    parentBackend       = null;
-    subordinateBackends = new Backend[0];
-    isPrivateBackend    = false;
-    writabilityMode     = WritabilityMode.ENABLED;
-    backendMonitor      = null;
-  }
-
-
+  private WritabilityMode writabilityMode = WritabilityMode.ENABLED;
 
   /**
    * Configure this backend based on the information in the provided
@@ -267,10 +246,10 @@
    *          matching rule should be considered indexed, or
    *          {@code false} if not.
    */
-  public boolean isIndexed(AttributeType attributeType,
+  private boolean isIndexed(AttributeType attributeType,
                            MatchingRule matchingRule)
   {
-    return false;
+    return false; // FIXME This should be overridden by the JE Backend at least!
   }
 
 
@@ -321,36 +300,23 @@
         // NOT filters are not considered indexed by default.
         return false;
 
-
       case EQUALITY:
-        return isIndexed(filter.getAttributeType(),
-                         IndexType.EQUALITY);
-
+        return isIndexed(filter.getAttributeType(), IndexType.EQUALITY);
 
       case SUBSTRING:
-        return isIndexed(filter.getAttributeType(),
-                         IndexType.SUBSTRING);
-
+        return isIndexed(filter.getAttributeType(), IndexType.SUBSTRING);
 
       case GREATER_OR_EQUAL:
-        return isIndexed(filter.getAttributeType(),
-                         IndexType.GREATER_OR_EQUAL);
-
+        return isIndexed(filter.getAttributeType(), IndexType.GREATER_OR_EQUAL);
 
       case LESS_OR_EQUAL:
-        return isIndexed(filter.getAttributeType(),
-                         IndexType.LESS_OR_EQUAL);
-
+        return isIndexed(filter.getAttributeType(), IndexType.LESS_OR_EQUAL);
 
       case PRESENT:
-        return isIndexed(filter.getAttributeType(),
-                         IndexType.PRESENCE);
-
+        return isIndexed(filter.getAttributeType(), IndexType.PRESENCE);
 
       case APPROXIMATE_MATCH:
-        return isIndexed(filter.getAttributeType(),
-                         IndexType.APPROXIMATE);
-
+        return isIndexed(filter.getAttributeType(), IndexType.APPROXIMATE);
 
       case EXTENSIBLE_MATCH:
         // The attribute type must be provided for us to make the
@@ -374,6 +340,7 @@
         {
           matchingRule = attrType.getEqualityMatchingRule();
         }
+        // FIXME isIndexed() always return false down below
         return matchingRule != null && isIndexed(attrType, matchingRule);
 
 
@@ -874,8 +841,6 @@
     return writabilityMode;
   }
 
-
-
   /**
    * Specifies the writability mode for this backend.
    *
@@ -884,14 +849,8 @@
   public final void setWritabilityMode(
                          WritabilityMode writabilityMode)
   {
-    if (writabilityMode == null)
-    {
-      this.writabilityMode = WritabilityMode.ENABLED;
-    }
-    else
-    {
-      this.writabilityMode = writabilityMode;
-    }
+    this.writabilityMode =
+        writabilityMode != null ? writabilityMode : WritabilityMode.ENABLED;
   }
 
 
@@ -989,113 +948,6 @@
     }
   }
 
-
-
-  /**
-   * Indicates whether this backend has a subordinate backend
-   * registered with the provided base DN.  This may check recursively
-   * if a subordinate backend has its own subordinate backends.
-   *
-   * @param  subSuffixDN  The DN of the sub-suffix for which to make
-   *                      the determination.
-   *
-   * @return  {@code true} if this backend has a subordinate backend
-   *          registered with the provided base DN, or {@code false}
-   *          if it does not.
-   */
-  public final boolean hasSubSuffix(DN subSuffixDN)
-  {
-    for (Backend<?> b : subordinateBackends)
-    {
-      for (DN baseDN : b.getBaseDNs())
-      {
-        if (baseDN.equals(subSuffixDN))
-        {
-          return true;
-        }
-      }
-
-      if (b.hasSubSuffix(subSuffixDN))
-      {
-        return true;
-      }
-    }
-
-    return false;
-  }
-
-
-
-  /**
-   * Removes the backend associated with the specified sub-suffix if
-   * it is registered.  This may check recursively if a subordinate
-   * backend has its own subordinate backends.
-   *
-   * @param  subSuffixDN  The DN of the sub-suffix to remove from this
-   *                      backend.
-   * @param  parentDN     The superior DN for the sub-suffix DN that
-   *                      matches one of the subordinate base DNs for
-   *                      this backend.
-   *
-   * @throws  ConfigException  If the sub-suffix exists but it is not
-   *                           possible to remove it for some reason.
-   */
-  public final void removeSubSuffix(DN subSuffixDN, DN parentDN)
-         throws ConfigException
-  {
-    synchronized (this)
-    {
-      boolean matchFound = false;
-      ArrayList<Backend<?>> subBackendList =
-           new ArrayList<Backend<?>>(subordinateBackends.length);
-      for (Backend<?> b : subordinateBackends)
-      {
-        boolean thisMatches = false;
-        DN[] subBaseDNs = b.getBaseDNs();
-        for (DN dn : subBaseDNs)
-        {
-          if (dn.equals(subSuffixDN))
-          {
-            if (subBaseDNs.length > 1)
-            {
-              Message message =
-                      ERR_BACKEND_CANNOT_REMOVE_MULTIBASE_SUB_SUFFIX.
-                              get(String.valueOf(subSuffixDN),
-                                      String.valueOf(parentDN));
-              throw new ConfigException(message);
-            }
-
-            thisMatches = true;
-            matchFound  = true;
-            break;
-          }
-        }
-
-        if (! thisMatches)
-        {
-          if (b.hasSubSuffix(subSuffixDN))
-          {
-            b.removeSubSuffix(subSuffixDN, parentDN);
-          }
-          else
-          {
-            subBackendList.add(b);
-          }
-        }
-      }
-
-      if (matchFound)
-      {
-        Backend<?>[] newSubordinateBackends =
-             new Backend[subBackendList.size()];
-        subBackendList.toArray(newSubordinateBackends);
-        subordinateBackends = newSubordinateBackends;
-      }
-    }
-  }
-
-
-
   /**
    * Adds the provided backend to the set of subordinate backends for
    * this backend.
diff --git a/opends/src/server/org/opends/server/core/SearchOperation.java b/opends/src/server/org/opends/server/core/SearchOperation.java
index 6b5cc6f..224914d 100644
--- a/opends/src/server/org/opends/server/core/SearchOperation.java
+++ b/opends/src/server/org/opends/server/core/SearchOperation.java
@@ -47,7 +47,7 @@
    * @return  The raw, unprocessed base DN as included in the request from the
    *          client.
    */
-  public abstract ByteString getRawBaseDN();
+  ByteString getRawBaseDN();
 
   /**
    * Specifies the raw, unprocessed base DN as included in the request from the
@@ -56,7 +56,7 @@
    * @param  rawBaseDN  The raw, unprocessed base DN as included in the request
    *                    from the client.
    */
-  public abstract void setRawBaseDN(ByteString rawBaseDN);
+  void setRawBaseDN(ByteString rawBaseDN);
 
   /**
    * Retrieves the base DN for this search operation.  This should not be called
@@ -66,7 +66,7 @@
    * @return  The base DN for this search operation, or <CODE>null</CODE> if the
    *          raw base DN has not yet been processed.
    */
-  public abstract DN getBaseDN();
+  DN getBaseDN();
 
   /**
    * Specifies the base DN for this search operation.  This method is only
@@ -74,14 +74,14 @@
    *
    * @param  baseDN  The base DN for this search operation.
    */
-  public abstract void setBaseDN(DN baseDN);
+  void setBaseDN(DN baseDN);
 
   /**
    * Retrieves the scope for this search operation.
    *
    * @return  The scope for this search operation.
    */
-  public abstract SearchScope getScope();
+  SearchScope getScope();
 
   /**
    * Specifies the scope for this search operation.  This should only be called
@@ -89,14 +89,14 @@
    *
    * @param  scope  The scope for this search operation.
    */
-  public abstract void setScope(SearchScope scope);
+  void setScope(SearchScope scope);
 
   /**
    * Retrieves the alias dereferencing policy for this search operation.
    *
    * @return  The alias dereferencing policy for this search operation.
    */
-  public abstract DereferencePolicy getDerefPolicy();
+  DereferencePolicy getDerefPolicy();
 
   /**
    * Specifies the alias dereferencing policy for this search operation.  This
@@ -105,14 +105,14 @@
    * @param  derefPolicy  The alias dereferencing policy for this search
    *                      operation.
    */
-  public abstract void setDerefPolicy(DereferencePolicy derefPolicy);
+  void setDerefPolicy(DereferencePolicy derefPolicy);
 
   /**
    * Retrieves the size limit for this search operation.
    *
    * @return  The size limit for this search operation.
    */
-  public abstract int getSizeLimit();
+  int getSizeLimit();
 
   /**
    * Specifies the size limit for this search operation.  This should only be
@@ -120,21 +120,21 @@
    *
    * @param  sizeLimit  The size limit for this search operation.
    */
-  public abstract void setSizeLimit(int sizeLimit);
+  void setSizeLimit(int sizeLimit);
 
   /**
    * Retrieves the time limit for this search operation.
    *
    * @return  The time limit for this search operation.
    */
-  public abstract int getTimeLimit();
+  int getTimeLimit();
 
   /**
    * Get the time after which the search time limit has expired.
    *
    * @return the timeLimitExpiration
    */
-  public abstract long getTimeLimitExpiration();
+  long getTimeLimitExpiration();
 
   /**
    * Specifies the time limit for this search operation.  This should only be
@@ -142,14 +142,14 @@
    *
    * @param  timeLimit  The time limit for this search operation.
    */
-  public abstract void setTimeLimit(int timeLimit);
+  void setTimeLimit(int timeLimit);
 
   /**
    * Retrieves the typesOnly flag for this search operation.
    *
    * @return  The typesOnly flag for this search operation.
    */
-  public abstract boolean getTypesOnly();
+  boolean getTypesOnly();
 
   /**
    * Specifies the typesOnly flag for this search operation.  This should only
@@ -157,7 +157,7 @@
    *
    * @param  typesOnly  The typesOnly flag for this search operation.
    */
-  public abstract void setTypesOnly(boolean typesOnly);
+  void setTypesOnly(boolean typesOnly);
 
   /**
    * Retrieves the raw, unprocessed search filter as included in the request
@@ -168,7 +168,7 @@
    * @return  The raw, unprocessed search filter as included in the request from
    *          the client.
    */
-  public abstract RawFilter getRawFilter();
+  RawFilter getRawFilter();
 
   /**
    * Specifies the raw, unprocessed search filter as included in the request
@@ -177,7 +177,7 @@
    * @param  rawFilter  The raw, unprocessed search filter as included in the
    *                    request from the client.
    */
-  public abstract void setRawFilter(RawFilter rawFilter);
+  void setRawFilter(RawFilter rawFilter);
 
   /**
    * Retrieves the filter for this search operation.  This should not be called
@@ -187,7 +187,7 @@
    * @return  The filter for this search operation, or <CODE>null</CODE> if the
    *          raw filter has not yet been processed.
    */
-  public abstract SearchFilter getFilter();
+  SearchFilter getFilter();
 
   /**
    * Retrieves the set of requested attributes for this search operation.  Its
@@ -195,7 +195,7 @@
    *
    * @return  The set of requested attributes for this search operation.
    */
-  public abstract Set<String> getAttributes();
+  Set<String> getAttributes();
 
   /**
    * Specifies the set of requested attributes for this search operation.  It
@@ -204,7 +204,7 @@
    * @param  attributes  The set of requested attributes for this search
    *                     operation.
    */
-  public abstract void setAttributes(Set<String> attributes);
+  void setAttributes(Set<String> attributes);
 
   /**
    * Retrieves the number of entries sent to the client for this search
@@ -213,7 +213,7 @@
    * @return  The number of entries sent to the client for this search
    *          operation.
    */
-  public abstract int getEntriesSent();
+  int getEntriesSent();
 
   /**
    * Retrieves the number of search references sent to the client for this
@@ -222,7 +222,7 @@
    * @return  The number of search references sent to the client for this search
    *          operation.
    */
-  public abstract int getReferencesSent();
+  int getReferencesSent();
 
   /**
    * Used as a callback for backends to indicate that the provided entry matches
@@ -239,7 +239,7 @@
    *          <CODE>false</CODE> if not for some reason (e.g., the size limit
    *          has been reached or the search has been abandoned).
    */
-  public abstract boolean returnEntry(Entry entry, List<Control> controls);
+  boolean returnEntry(Entry entry, List<Control> controls);
 
   /**
    * Used as a callback for backends to indicate that the provided entry matches
@@ -258,7 +258,7 @@
    *          <CODE>false</CODE> if not for some reason (e.g., the size limit
    *          has been reached or the search has been abandoned).
    */
-  public abstract boolean returnEntry(Entry entry, List<Control> controls,
+  boolean returnEntry(Entry entry, List<Control> controls,
                                       boolean evaluateAci);
 
   /**
@@ -274,7 +274,7 @@
    *          <CODE>false</CODE> if not for some reason (e.g., the size limit
    *          has been reached or the search has been abandoned).
    */
-  public abstract boolean returnReference(DN dn,
+  boolean returnReference(DN dn,
                                           SearchResultReference reference);
 
   /**
@@ -292,7 +292,7 @@
    *          <CODE>false</CODE> if not for some reason (e.g., the size limit
    *          has been reached or the search has been abandoned).
    */
-  public abstract boolean returnReference(DN dn,
+  boolean returnReference(DN dn,
                                           SearchResultReference reference,
                                           boolean evaluateAci);
 
@@ -304,43 +304,43 @@
    * message should have been set for this operation before this method is
    * called.
    */
-  public abstract void sendSearchResultDone();
+  void sendSearchResultDone();
 
   /**
    * Set the time after which the search time limit has expired.
    *
    * @param timeLimitExpiration - Time after which the search has expired
    */
-  public abstract void setTimeLimitExpiration(long timeLimitExpiration);
+  void setTimeLimitExpiration(long timeLimitExpiration);
 
   /**
    * Indicates whether LDAP subentries should be returned or not.
    *
    * @return true if the LDAP subentries should be returned, false otherwise
    */
-  public abstract boolean isReturnSubentriesOnly();
+  boolean isReturnSubentriesOnly();
 
   /**
-   * Set the flag indicating wether the LDAP subentries should be returned.
+   * Set the flag indicating whether the LDAP subentries should be returned.
    *
-   * @param returnLDAPSubentries - Boolean indicating wether the LDAP
+   * @param returnLDAPSubentries - Boolean indicating whether the LDAP
    *                               subentries should be returned or not
    */
-  public abstract void setReturnSubentriesOnly(boolean returnLDAPSubentries);
+  void setReturnSubentriesOnly(boolean returnLDAPSubentries);
 
   /**
    * The matched values control associated with this search operation.
    *
    * @return the match values control
    */
-  public abstract MatchedValuesControl getMatchedValuesControl();
+  MatchedValuesControl getMatchedValuesControl();
 
   /**
    * Set the match values control.
    *
    * @param controls - The matched values control
    */
-  public abstract void setMatchedValuesControl(MatchedValuesControl controls);
+  void setMatchedValuesControl(MatchedValuesControl controls);
 
   /**
    * Indicates whether to include the account usable response control with
@@ -349,7 +349,7 @@
    * @return true if the usable control has to be part of the search result
    *         entry
    */
-  public abstract boolean isIncludeUsableControl();
+  boolean isIncludeUsableControl();
 
   /**
    * Specify whether to include the account usable response control within the
@@ -359,14 +359,14 @@
    *                               has to be included within the search result
    *                               entries, false otherwise
    */
-  public abstract void setIncludeUsableControl(boolean includeUsableControl);
+  void setIncludeUsableControl(boolean includeUsableControl);
 
   /**
    * Indicates whether the client is able to handle referrals.
    *
    * @return true, if the client is able to handle referrals
    */
-  public abstract boolean isClientAcceptsReferrals();
+  boolean isClientAcceptsReferrals();
 
   /**
    * Specify whether the client is able to handle referrals.
@@ -374,51 +374,39 @@
    * @param clientAcceptReferrals - Boolean set to true if the client
    *                                can handle referrals
    */
-  public abstract void setClientAcceptsReferrals(boolean clientAcceptReferrals);
+  void setClientAcceptsReferrals(boolean clientAcceptReferrals);
 
   /**
-   * Increments by 1 the number of entries sent to the client for this search
-   * operation.
-   */
-  public abstract void incrementEntriesSent();
-
-  /**
-   * Increments by 1 the number of search references sent to the client for this
-   * search operation.
-   */
-  public abstract void incrementReferencesSent();
-
-  /**
-   * Indicates wether the search result done message has to be sent
+   * Indicates whether the search result done message has to be sent
    * to the client, or not.
    *
    * @return true if the search result done message is to be sent to the client
    */
-  public abstract boolean isSendResponse();
+  boolean isSendResponse();
 
   /**
-   * Specify wether the search result done message has to be sent
+   * Specify whether the search result done message has to be sent
    * to the client, or not.
    *
-   * @param sendResponse - boolean indicating wether the search result done
+   * @param sendResponse - boolean indicating whether the search result done
    *                       message is to send to the client
    */
-  public abstract void setSendResponse(boolean sendResponse);
+  void setSendResponse(boolean sendResponse);
 
   /**
    * Returns true if only real attributes should be returned.
    *
    * @return true if only real attributes should be returned, false otherwise
    */
-  public abstract boolean isRealAttributesOnly();
+  boolean isRealAttributesOnly();
 
   /**
-   * Specify wether to only return real attributes.
+   * Specify whether to only return real attributes.
    *
    * @param realAttributesOnly - boolean setup to true, if only the real
    *                             attributes should be returned
    */
-  public abstract void setRealAttributesOnly(boolean realAttributesOnly);
+  void setRealAttributesOnly(boolean realAttributesOnly);
 
   /**
    * Returns true if only virtual attributes should be returned.
@@ -426,15 +414,15 @@
    * @return true if only virtual attributes should be returned, false
    *         otherwise
    */
-  public abstract boolean isVirtualAttributesOnly();
+  boolean isVirtualAttributesOnly();
 
   /**
-   * Specify wether to only return virtual attributes.
+   * Specify whether to only return virtual attributes.
    *
    * @param virtualAttributesOnly - boolean setup to true, if only the virtual
    *                                attributes should be returned
    */
-  public abstract void setVirtualAttributesOnly(boolean virtualAttributesOnly);
+  void setVirtualAttributesOnly(boolean virtualAttributesOnly);
 
   /**
    * Sends the provided search result entry to the client.
@@ -446,7 +434,7 @@
    *                              to send the entry to the client and
    *                              the search should be terminated.
    */
-  public abstract void sendSearchEntry(SearchResultEntry entry)
+  void sendSearchEntry(SearchResultEntry entry)
     throws DirectoryException;
 
   /**
@@ -464,7 +452,7 @@
    *                              to send the reference to the client
    *                              and the search should be terminated.
    */
-  public abstract boolean sendSearchReference(SearchResultReference reference)
+  boolean sendSearchReference(SearchResultReference reference)
     throws DirectoryException;
 
   /**
@@ -475,7 +463,7 @@
    *          authorization has been requested, or {@code null} if proxied
    *          authorization has not been requested.
    */
-  public abstract DN getProxiedAuthorizationDN();
+  DN getProxiedAuthorizationDN();
 
   /**
    * Set the proxied authorization DN for this operation if proxied
@@ -486,6 +474,6 @@
    *          authorization has been requested, or {@code null} if proxied
    *          authorization has not been requested.
    */
-  public abstract void setProxiedAuthorizationDN(DN proxiedAuthorizationDN);
+  void setProxiedAuthorizationDN(DN proxiedAuthorizationDN);
 
 }
diff --git a/opends/src/server/org/opends/server/core/SearchOperationBasis.java b/opends/src/server/org/opends/server/core/SearchOperationBasis.java
index a694fcc..deceeb3 100644
--- a/opends/src/server/org/opends/server/core/SearchOperationBasis.java
+++ b/opends/src/server/org/opends/server/core/SearchOperationBasis.java
@@ -28,13 +28,14 @@
 
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import org.opends.messages.Message;
+import org.opends.server.api.AccessControlHandler;
 import org.opends.server.api.AuthenticationPolicyState;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.plugin.PluginResult;
 import org.opends.server.controls.AccountUsableResponseControl;
-import org.opends.server.controls.ExternalChangelogRequestControl;
 import org.opends.server.controls.MatchedValuesControl;
 import org.opends.server.core.networkgroups.NetworkGroup;
 import org.opends.server.loggers.debug.DebugLogger;
@@ -74,10 +75,10 @@
    * Indicates whether a search result done response has been sent to the
    * client.
    */
-  private AtomicBoolean responseSent;
+  private final AtomicBoolean responseSent = new AtomicBoolean(false);
 
   /** Indicates whether the client is able to handle referrals. */
-  private boolean clientAcceptsReferrals;
+  private boolean clientAcceptsReferrals = true;
 
   /**
    * Indicates whether to include the account usable control with search result
@@ -121,12 +122,12 @@
   private DN proxiedAuthorizationDN;
 
   /** The number of entries that have been sent to the client. */
-  private int entriesSent;
+  private final AtomicInteger entriesSent = new AtomicInteger();
 
   /**
    * The number of search result references that have been sent to the client.
    */
-  private int referencesSent;
+  private final AtomicInteger referencesSent = new AtomicInteger();
 
   /** The size limit for the search operation. */
   private int sizeLimit;
@@ -141,13 +142,7 @@
   private Set<String> attributes;
 
   /** The set of response controls for this search operation. */
-  private List<Control> responseControls;
-
-  /** The time that processing started on this operation. */
-  private long processingStartTime;
-
-  /** The time that processing ended on this operation. */
-  private long processingStopTime;
+  private final List<Control> responseControls = new ArrayList<Control>();
 
   /** The time that the search time limit has expired. */
   private long timeLimitExpiration;
@@ -164,8 +159,6 @@
   /** Indicates whether to send the search result done to the client or not. */
   private boolean sendResponse = true;
 
-  private ExternalChangelogRequestControl eclRequestControl;
-
   /**
    * Creates a new search operation with the provided information.
    *
@@ -198,7 +191,6 @@
   {
     super(clientConnection, operationID, messageID, requestControls);
 
-
     this.rawBaseDN   = rawBaseDN;
     this.scope       = scope;
     this.derefPolicy = derefPolicy;
@@ -206,32 +198,10 @@
     this.timeLimit   = timeLimit;
     this.typesOnly   = typesOnly;
     this.rawFilter   = rawFilter;
-
-    if (attributes == null)
-    {
-      this.attributes  = new LinkedHashSet<String>(0);
-    }
-    else
-    {
-      this.attributes  = attributes;
-    }
+    this.attributes  = attributes != null ? attributes : new LinkedHashSet<String>(0);
 
     this.sizeLimit = getSizeLimit(sizeLimit, clientConnection);
     this.timeLimit = getTimeLimit(timeLimit, clientConnection);
-
-    baseDN                 = null;
-    filter                 = null;
-    entriesSent            = 0;
-    referencesSent         = 0;
-    responseControls       = new ArrayList<Control>();
-    cancelRequest          = null;
-    clientAcceptsReferrals = true;
-    includeUsableControl   = false;
-    responseSent           = new AtomicBoolean(false);
-    returnSubentriesOnly   = false;
-    matchedValuesControl   = null;
-    realAttributesOnly     = false;
-    virtualAttributesOnly  = false;
   }
 
   /**
@@ -263,7 +233,6 @@
   {
     super(clientConnection, operationID, messageID, requestControls);
 
-
     this.baseDN      = baseDN;
     this.scope       = scope;
     this.derefPolicy = derefPolicy;
@@ -271,31 +240,13 @@
     this.timeLimit   = timeLimit;
     this.typesOnly   = typesOnly;
     this.filter      = filter;
-
-    if (attributes == null)
-    {
-      this.attributes = new LinkedHashSet<String>(0);
-    }
-    else
-    {
-      this.attributes  = attributes;
-    }
+    this.attributes  = attributes != null ? attributes : new LinkedHashSet<String>(0);
 
     rawBaseDN = ByteString.valueOf(baseDN.toString());
     rawFilter = new LDAPFilter(filter);
 
     this.sizeLimit = getSizeLimit(sizeLimit, clientConnection);
     this.timeLimit = getTimeLimit(timeLimit, clientConnection);
-
-    entriesSent            = 0;
-    referencesSent         = 0;
-    responseControls       = new ArrayList<Control>();
-    cancelRequest          = null;
-    clientAcceptsReferrals = true;
-    includeUsableControl   = false;
-    responseSent           = new AtomicBoolean(false);
-    returnSubentriesOnly   = false;
-    matchedValuesControl   = null;
   }
 
 
@@ -325,21 +276,14 @@
     return Math.min(timeLimit, clientConnection.getTimeLimit());
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final ByteString getRawBaseDN()
   {
     return rawBaseDN;
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setRawBaseDN(ByteString rawBaseDN)
   {
@@ -348,10 +292,7 @@
     baseDN = null;
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final DN getBaseDN()
   {
@@ -377,118 +318,91 @@
     return baseDN;
   }
 
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setBaseDN(DN baseDN)
   {
     this.baseDN = baseDN;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final SearchScope getScope()
   {
     return scope;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setScope(SearchScope scope)
   {
     this.scope = scope;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final DereferencePolicy getDerefPolicy()
   {
     return derefPolicy;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setDerefPolicy(DereferencePolicy derefPolicy)
   {
     this.derefPolicy = derefPolicy;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final int getSizeLimit()
   {
     return sizeLimit;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setSizeLimit(int sizeLimit)
   {
     this.sizeLimit = sizeLimit;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final int getTimeLimit()
   {
     return timeLimit;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setTimeLimit(int timeLimit)
   {
     this.timeLimit = timeLimit;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final boolean getTypesOnly()
   {
     return typesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setTypesOnly(boolean typesOnly)
   {
     this.typesOnly = typesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final RawFilter getRawFilter()
   {
     return rawFilter;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setRawFilter(RawFilter rawFilter)
   {
@@ -497,9 +411,7 @@
     filter = null;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final SearchFilter getFilter()
   {
@@ -525,18 +437,14 @@
     return filter;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final Set<String> getAttributes()
   {
     return attributes;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void setAttributes(Set<String> attributes)
   {
@@ -550,36 +458,28 @@
     }
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final int getEntriesSent()
   {
-    return entriesSent;
+    return entriesSent.get();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final int getReferencesSent()
   {
-    return referencesSent;
+    return referencesSent.get();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final boolean returnEntry(Entry entry, List<Control> controls)
   {
     return returnEntry(entry, controls, true);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final boolean returnEntry(Entry entry, List<Control> controls,
                                    boolean evaluateAci)
@@ -588,7 +488,7 @@
 
     // See if the size limit has been exceeded.  If so, then don't send the
     // entry and indicate that the search should end.
-    if ((getSizeLimit() > 0) && (getEntriesSent() >= getSizeLimit()))
+    if (getSizeLimit() > 0 && getEntriesSent() >= getSizeLimit())
     {
       setResultCode(ResultCode.SIZE_LIMIT_EXCEEDED);
       appendErrorMessage(ERR_SEARCH_SIZE_LIMIT_EXCEEDED.get(getSizeLimit()));
@@ -597,8 +497,8 @@
 
     // See if the time limit has expired.  If so, then don't send the entry and
     // indicate that the search should end.
-    if ((getTimeLimit() > 0) && (TimeThread.getTime() >=
-                                                getTimeLimitExpiration()))
+    if (getTimeLimit() > 0
+        && TimeThread.getTime() >= getTimeLimitExpiration())
     {
       setResultCode(ResultCode.TIME_LIMIT_EXCEEDED);
       appendErrorMessage(ERR_SEARCH_TIME_LIMIT_EXCEEDED.get(getTimeLimit()));
@@ -609,26 +509,23 @@
     // should be returned.
     if (entry.isSubentry() || entry.isLDAPSubentry())
     {
-      if (filterNeedsCheckingForSubentries == true)
+      if (filterNeedsCheckingForSubentries)
       {
         filterIncludesSubentries = checkFilterForLDAPSubEntry(filter, 0);
         filterNeedsCheckingForSubentries = false;
       }
 
-      if ((getScope() != SearchScope.BASE_OBJECT)
+      if (getScope() != SearchScope.BASE_OBJECT
           && !filterIncludesSubentries
           && !isReturnSubentriesOnly())
       {
         return true;
       }
     }
-    else
+    else if (isReturnSubentriesOnly())
     {
-      if (isReturnSubentriesOnly())
-      {
-        // Subentries are visible and normal entries are not.
-        return true;
-      }
+      // Subentries are visible and normal entries are not.
+      return true;
     }
 
     // Determine whether to include the account usable control. If so, then
@@ -673,18 +570,15 @@
                 secondsBeforeExpiration));
           }
         }
+        // Another type of authentication policy (e.g. PTA).
+        else if (state.isDisabled())
+        {
+          controls.add(new AccountUsableResponseControl(false, false, false,
+              -1, true, -1));
+        }
         else
         {
-          // Another type of authentication policy (e.g. PTA).
-          if (state.isDisabled())
-          {
-            controls.add(new AccountUsableResponseControl(false, false, false,
-                -1, true, -1));
-          }
-          else
-          {
-            controls.add(new AccountUsableResponseControl(-1));
-          }
+          controls.add(new AccountUsableResponseControl(-1));
         }
       }
       catch (Exception e)
@@ -697,15 +591,10 @@
     }
 
     // Check to see if the entry can be read by the client.
-    SearchResultEntry unfilteredSearchEntry = new SearchResultEntry(entry,
-        controls);
-    if (evaluateAci)
+    SearchResultEntry unfilteredSearchEntry = new SearchResultEntry(entry, controls);
+    if (evaluateAci && !getACIHandler().maySend(this, unfilteredSearchEntry))
     {
-      if (AccessControlConfigManager.getInstance().getAccessControlHandler()
-          .maySend(this, unfilteredSearchEntry) == false)
-      {
-        return true;
-      }
+      return true;
     }
 
     // Make a copy of the entry and pare it down to only include the set
@@ -720,7 +609,7 @@
     // If there is a matched values control, then further pare down the entry
     // based on the filters that it contains.
     MatchedValuesControl matchedValuesControl = getMatchedValuesControl();
-    if ((matchedValuesControl != null) && (! typesOnly))
+    if (matchedValuesControl != null && !typesOnly)
     {
       // First, look at the set of objectclasses.
 
@@ -732,8 +621,7 @@
       while (ocIterator.hasNext())
       {
         String ocName = ocIterator.next();
-        AttributeValue v =
-            AttributeValues.create(attrType,ocName);
+        AttributeValue v = AttributeValues.create(attrType,ocName);
         if (! matchedValuesControl.valueMatches(attrType, v))
         {
           ocIterator.remove();
@@ -806,8 +694,7 @@
     // values that the client is not permitted to see.
     if (evaluateAci)
     {
-      AccessControlConfigManager.getInstance().getAccessControlHandler()
-          .filterEntry(this, unfilteredSearchEntry, filteredSearchEntry);
+      getACIHandler().filterEntry(this, unfilteredSearchEntry, filteredSearchEntry);
     }
 
     // Invoke any search entry plugins that may be registered with the server.
@@ -825,7 +712,7 @@
       {
         sendSearchEntry(filteredSearchEntry);
 
-        incrementEntriesSent();
+        entriesSent.incrementAndGet();
       }
       catch (DirectoryException de)
       {
@@ -842,26 +729,27 @@
     return pluginResult.continueProcessing();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  private AccessControlHandler<?> getACIHandler()
+  {
+    return AccessControlConfigManager.getInstance().getAccessControlHandler();
+  }
+
+  /** {@inheritDoc} */
   @Override
   public final boolean returnReference(DN dn, SearchResultReference reference)
   {
     return returnReference(dn, reference, true);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final boolean returnReference(DN dn, SearchResultReference reference,
                                        boolean evaluateAci)
   {
     // See if the time limit has expired.  If so, then don't send the entry and
     // indicate that the search should end.
-    if ((getTimeLimit() > 0) && (TimeThread.getTime() >=
-                                                getTimeLimitExpiration()))
+    if (getTimeLimit() > 0
+        && TimeThread.getTime() >= getTimeLimitExpiration())
     {
       setResultCode(ResultCode.TIME_LIMIT_EXCEEDED);
       appendErrorMessage(ERR_SEARCH_TIME_LIMIT_EXCEEDED.get(getTimeLimit()));
@@ -871,22 +759,14 @@
 
     // See if we know that this client can't handle referrals.  If so, then
     // don't even try to send it.
-    if (! isClientAcceptsReferrals())
+    if (!isClientAcceptsReferrals()
+        // See if the client has permission to read this reference.
+        || (evaluateAci && !getACIHandler().maySend(dn, this, reference)))
     {
       return true;
     }
 
 
-    // See if the client has permission to read this reference.
-    if (evaluateAci)
-    {
-      if (AccessControlConfigManager.getInstance()
-        .getAccessControlHandler().maySend(dn, this, reference) == false) {
-        return true;
-      }
-    }
-
-
     // Invoke any search reference plugins that may be registered with the
     // server.
     PluginResult.IntermediateResponse pluginResult =
@@ -906,7 +786,7 @@
       {
         if (sendSearchReference(reference))
         {
-          incrementReferencesSent();
+          referencesSent.incrementAndGet();
 
           // FIXME -- Should the size limit apply here?
         }
@@ -932,9 +812,7 @@
     return pluginResult.continueProcessing();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void sendSearchResultDone()
   {
@@ -943,21 +821,16 @@
     // multithreaded in the event of a persistent search, so do it safely.
     if (responseSent.compareAndSet(false, true))
     {
-      // Log the search result.
       logSearchResultDone(this);
 
-      // Send the response to the client.
       clientConnection.sendResponse(this);
 
-      // Invoke the post-response search plugins.
       invokePostResponsePlugins();
     }
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public final OperationType getOperationType()
   {
     // Note that no debugging will be done in this method because it is a likely
@@ -965,48 +838,36 @@
     return OperationType.SEARCH;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public DN getProxiedAuthorizationDN()
   {
     return proxiedAuthorizationDN;
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public final List<Control> getResponseControls()
   {
     return responseControls;
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public final void addResponseControl(Control control)
   {
     responseControls.add(control);
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public final void removeResponseControl(Control control)
   {
     responseControls.remove(control);
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public void abort(CancelRequest cancelRequest)
   {
     if(cancelResult == null && this.cancelRequest == null)
@@ -1015,12 +876,8 @@
     }
   }
 
-
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override()
+  /** {@inheritDoc} */
+  @Override
   public final void toString(StringBuilder buffer)
   {
     buffer.append("SearchOperation(connID=");
@@ -1036,171 +893,119 @@
     buffer.append(")");
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setTimeLimitExpiration(long timeLimitExpiration)
   {
     this.timeLimitExpiration = timeLimitExpiration;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isReturnSubentriesOnly()
   {
     return returnSubentriesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setReturnSubentriesOnly(boolean returnLDAPSubentries)
   {
     this.returnSubentriesOnly = returnLDAPSubentries;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public MatchedValuesControl getMatchedValuesControl()
   {
     return matchedValuesControl;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setMatchedValuesControl(MatchedValuesControl controls)
   {
     this.matchedValuesControl = controls;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isIncludeUsableControl()
   {
     return includeUsableControl;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setIncludeUsableControl(boolean includeUsableControl)
   {
     this.includeUsableControl = includeUsableControl;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public long getTimeLimitExpiration()
   {
     return timeLimitExpiration;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isClientAcceptsReferrals()
   {
     return clientAcceptsReferrals;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setClientAcceptsReferrals(boolean clientAcceptReferrals)
   {
     this.clientAcceptsReferrals = clientAcceptReferrals;
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void incrementEntriesSent()
-  {
-    entriesSent++;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void incrementReferencesSent()
-  {
-    referencesSent++;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isSendResponse()
   {
     return sendResponse;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setSendResponse(boolean sendResponse)
   {
     this.sendResponse = sendResponse;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isRealAttributesOnly()
   {
     return this.realAttributesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isVirtualAttributesOnly()
   {
     return this.virtualAttributesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setRealAttributesOnly(boolean realAttributesOnly)
   {
     this.realAttributesOnly = realAttributesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setVirtualAttributesOnly(boolean virtualAttributesOnly)
   {
     this.virtualAttributesOnly = virtualAttributesOnly;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void sendSearchEntry(SearchResultEntry searchEntry)
       throws DirectoryException
@@ -1208,9 +1013,7 @@
     getClientConnection().sendSearchEntry(this, searchEntry);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean sendSearchReference(SearchResultReference searchReference)
       throws DirectoryException
@@ -1218,18 +1021,14 @@
     return getClientConnection().sendSearchReference(this, searchReference);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN)
   {
     this.proxiedAuthorizationDN = proxiedAuthorizationDN;
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public final void run()
   {
@@ -1421,8 +1220,8 @@
         // FIXME : technically this is not correct since the presence
         // of draft oc would trigger rfc oc visibility and visa versa.
         String stringValueLC = toLowerCase(v.getValue().toString());
-        if (stringValueLC.equals(OC_LDAP_SUBENTRY_LC) ||
-            stringValueLC.equals(OC_SUBENTRY))
+        if (OC_LDAP_SUBENTRY_LC.equals(stringValueLC) ||
+            OC_SUBENTRY.equals(stringValueLC))
         {
           return true;
         }
diff --git a/opends/src/server/org/opends/server/core/SearchOperationWrapper.java b/opends/src/server/org/opends/server/core/SearchOperationWrapper.java
index b76ff58..dc170e3 100644
--- a/opends/src/server/org/opends/server/core/SearchOperationWrapper.java
+++ b/opends/src/server/org/opends/server/core/SearchOperationWrapper.java
@@ -51,18 +51,14 @@
     super(search);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean returnEntry(Entry entry, List<Control> controls)
   {
     return getOperation().returnEntry(entry, controls);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean returnEntry(Entry entry, List<Control> controls,
                              boolean evaluateAci)
@@ -70,18 +66,14 @@
     return getOperation().returnEntry(entry, controls, evaluateAci);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean returnReference(DN dn, SearchResultReference reference)
   {
     return getOperation().returnReference(dn, reference);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean returnReference(DN dn, SearchResultReference reference,
                                  boolean evaluateAci)
@@ -89,375 +81,277 @@
     return getOperation().returnReference(dn, reference, evaluateAci);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public String toString()
   {
     return getOperation().toString();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public Set<String> getAttributes()
   {
     return getOperation().getAttributes();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public DN getBaseDN()
   {
     return getOperation().getBaseDN();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public DereferencePolicy getDerefPolicy()
   {
     return getOperation().getDerefPolicy();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public int getEntriesSent()
   {
     return getOperation().getEntriesSent();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public SearchFilter getFilter()
   {
     return getOperation().getFilter();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public ByteString getRawBaseDN()
   {
     return getOperation().getRawBaseDN();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public RawFilter getRawFilter()
   {
     return getOperation().getRawFilter();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public int getReferencesSent()
   {
     return getOperation().getReferencesSent();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public SearchScope getScope()
   {
     return getOperation().getScope();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public int getSizeLimit()
   {
     return getOperation().getSizeLimit();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public int getTimeLimit()
   {
     return getOperation().getTimeLimit();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean getTypesOnly()
   {
     return getOperation().getTypesOnly();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void sendSearchResultDone()
   {
     getOperation().sendSearchResultDone();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setAttributes(Set<String> attributes)
   {
     getOperation().setAttributes(attributes);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setBaseDN(DN baseDN)
   {
     getOperation().setBaseDN(baseDN);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setDerefPolicy(DereferencePolicy derefPolicy)
   {
     getOperation().setDerefPolicy(derefPolicy);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setRawBaseDN(ByteString rawBaseDN)
   {
     getOperation().setRawBaseDN(rawBaseDN);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setRawFilter(RawFilter rawFilter)
   {
     getOperation().setRawFilter(rawFilter);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setScope(SearchScope scope)
   {
     getOperation().setScope(scope);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setSizeLimit(int sizeLimit)
   {
     getOperation().setSizeLimit(sizeLimit);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setTimeLimit(int timeLimit)
   {
     getOperation().setTimeLimit(timeLimit);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setTypesOnly(boolean typesOnly)
   {
     getOperation().setTypesOnly(typesOnly);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setTimeLimitExpiration(long timeLimitExpiration)
   {
     getOperation().setTimeLimitExpiration(timeLimitExpiration);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isReturnSubentriesOnly()
   {
     return getOperation().isReturnSubentriesOnly();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setReturnSubentriesOnly(boolean returnLDAPSubentries)
   {
     getOperation().setReturnSubentriesOnly(returnLDAPSubentries);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public MatchedValuesControl getMatchedValuesControl()
   {
     return getOperation().getMatchedValuesControl();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setMatchedValuesControl(MatchedValuesControl controls)
   {
     getOperation().setMatchedValuesControl(controls);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isIncludeUsableControl()
   {
     return getOperation().isIncludeUsableControl();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setIncludeUsableControl(boolean includeUsableControl)
   {
     getOperation().setIncludeUsableControl(includeUsableControl);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public long getTimeLimitExpiration()
   {
     return getOperation().getTimeLimitExpiration();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isClientAcceptsReferrals()
   {
     return getOperation().isClientAcceptsReferrals();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setClientAcceptsReferrals(boolean clientAcceptReferrals)
   {
     getOperation().setClientAcceptsReferrals(clientAcceptReferrals);
   }
 
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void incrementEntriesSent()
-  {
-    getOperation().incrementEntriesSent();
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void incrementReferencesSent()
-  {
-    getOperation().incrementReferencesSent();
-  }
-
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isSendResponse()
   {
     return getOperation().isSendResponse();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setSendResponse(boolean sendResponse)
   {
     getOperation().setSendResponse(sendResponse);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isRealAttributesOnly(){
     return getOperation().isRealAttributesOnly();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setRealAttributesOnly(boolean realAttributesOnly){
     getOperation().setRealAttributesOnly(realAttributesOnly);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean isVirtualAttributesOnly()
   {
     return getOperation().isVirtualAttributesOnly();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setVirtualAttributesOnly(boolean virtualAttributesOnly){
     getOperation().setVirtualAttributesOnly(virtualAttributesOnly);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void sendSearchEntry(SearchResultEntry entry)
       throws DirectoryException
@@ -465,9 +359,7 @@
     getOperation().sendSearchEntry(entry);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public boolean sendSearchReference(SearchResultReference reference)
       throws DirectoryException
@@ -475,18 +367,14 @@
     return getOperation().sendSearchReference(reference);
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public DN getProxiedAuthorizationDN()
   {
     return getOperation().getProxiedAuthorizationDN();
   }
 
-  /**
-   * {@inheritDoc}
-   */
+  /** {@inheritDoc} */
   @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN){
     getOperation().setProxiedAuthorizationDN(proxiedAuthorizationDN);
diff --git a/opends/src/server/org/opends/server/core/WorkflowTopology.java b/opends/src/server/org/opends/server/core/WorkflowTopology.java
index 32b609a..cd61382 100644
--- a/opends/src/server/org/opends/server/core/WorkflowTopology.java
+++ b/opends/src/server/org/opends/server/core/WorkflowTopology.java
@@ -22,14 +22,13 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2014 ForgeRock AS
  */
 package org.opends.server.core;
 
-
 import org.opends.server.types.DN;
 import org.opends.server.types.SearchScope;
 
-
 /**
  * This class is the base class used to build the workflow topology.
  * A workflow topology is a tree of workflows. Each node in the tree
@@ -40,30 +39,10 @@
  * nodes in the workflow topology (WorkflowTopologyNode) and the second
  * one is used to implement the root DSE node (RootDseWorkflowTopology).
  */
-
 public abstract class WorkflowTopology implements Workflow
 {
-  // The workflow implementation containing the task tree (ie. the processing)
-  private WorkflowImpl workflowImpl = null;
-
-
-  /**
-   * Each workflow node may have specific tasks to be executed before
-   * the workflow task tree. The tasks to execute before are stored in
-   * the following array, which is empty at the moment (implementation
-   * will come later on when needed).
-   */
-  // private WorkflowElement[] preWorkflowElements = null;
-
-
-  /**
-   * Each workflow node may have specific tasks to be executed after
-   * the workflow task tree. The tasks to execute after are stored in
-   * the following array, which is empty at the moment (implementation
-   * will come later on when needed).
-   */
-  // private WorkflowElement[] postWorkflowElements = null;
-
+  /** The workflow implementation containing the task tree (ie. the processing). */
+  private WorkflowImpl workflowImpl;
 
   /**
    * Create a new instance of the workflow topology base class.
@@ -97,6 +76,7 @@
    *
    * @return the base DN of the workflow containing the processing.
    */
+  @Override
   public DN getBaseDN()
   {
     return getWorkflowImpl().getBaseDN();
@@ -112,10 +92,7 @@
    * @return the new scope to use for searches on subordinate workflows,
    *         <code>null</code> when current scope is 'base'
    */
-
-  protected SearchScope elaborateScopeForSearchInSubordinates(
-      SearchScope currentScope
-      )
+  protected SearchScope elaborateScopeForSearchInSubordinates(SearchScope currentScope)
   {
     switch (currentScope)
     {
@@ -131,4 +108,11 @@
     }
   }
 
+  /** {@inheritDoc} */
+  @Override
+  public String toString()
+  {
+    return getClass().getSimpleName() + " " + workflowImpl;
+  }
+
 }

--
Gitblit v1.10.0