From 84c248d0cedde00d4f85f3ad60e141925658acb0 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 16 Apr 2013 08:46:37 +0000
Subject: [PATCH] (Matthew Swift reviewed) Code cleanup.

---
 opendj-sdk/opends/src/server/org/opends/server/core/AddOperationWrapper.java      |   64 ++++--
 opendj-sdk/opends/src/server/org/opends/server/core/BindOperationWrapper.java     |   79 ++++---
 opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationWrapper.java   |  170 ++++++++++-------
 opendj-sdk/opends/src/server/org/opends/server/core/CompareOperationWrapper.java  |   53 +++--
 opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperationWrapper.java |   71 ++++--
 opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperationWrapper.java   |   50 +++--
 opendj-sdk/opends/src/server/org/opends/server/core/OperationWrapper.java         |   23 +
 opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperationWrapper.java   |   34 ++-
 8 files changed, 333 insertions(+), 211 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AddOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/AddOperationWrapper.java
index d48f069..c247a4d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AddOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/AddOperationWrapper.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
 package org.opends.server.core;
 
@@ -35,13 +36,11 @@
 /**
  * This abstract class wraps/decorates a given add operation.
  * This class will be extended by sub-classes to enhance the
- * functionnality of the AddOperationBasis.
+ * functionality of the AddOperationBasis.
  */
-public abstract class AddOperationWrapper extends OperationWrapper
-       implements AddOperation
+public abstract class AddOperationWrapper extends
+    OperationWrapper<AddOperation> implements AddOperation
 {
-  // The wrapped operation.
-  private AddOperation add;
 
   /**
    * Creates a new add operation based on the provided add operation.
@@ -51,152 +50,169 @@
   public AddOperationWrapper(AddOperation add)
   {
     super(add);
-    this.add = add;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addObjectClass(ObjectClass objectClass, String name)
   {
-    add.addObjectClass(objectClass, name);
+    getOperation().addObjectClass(objectClass, name);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addRawAttribute(RawAttribute rawAttribute)
   {
-    add.addRawAttribute(rawAttribute);
+    getOperation().addRawAttribute(rawAttribute);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public long getChangeNumber()
   {
-    return add.getChangeNumber();
+    return getOperation().getChangeNumber();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getEntryDN()
   {
-    return add.getEntryDN();
+    return getOperation().getEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Map<ObjectClass, String> getObjectClasses()
   {
-    return add.getObjectClasses();
+    return getOperation().getObjectClasses();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Map<AttributeType, List<Attribute>> getOperationalAttributes()
   {
-    return add.getOperationalAttributes();
+    return getOperation().getOperationalAttributes();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public List<RawAttribute> getRawAttributes()
   {
-    return add.getRawAttributes();
+    return getOperation().getRawAttributes();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawEntryDN()
   {
-    return add.getRawEntryDN();
+    return getOperation().getRawEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Map<AttributeType, List<Attribute>> getUserAttributes()
   {
-    return add.getUserAttributes();
+    return getOperation().getUserAttributes();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void removeAttribute(AttributeType attributeType)
   {
-    add.removeAttribute(attributeType);
+    getOperation().removeAttribute(attributeType);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void removeObjectClass(ObjectClass objectClass)
   {
-    add.removeObjectClass(objectClass);
+    getOperation().removeObjectClass(objectClass);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAttribute(AttributeType attributeType,
       List<Attribute> attributeList)
   {
-    add.setAttribute(attributeType, attributeList);
+    getOperation().setAttribute(attributeType, attributeList);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setChangeNumber(long changeNumber)
   {
-    add.setChangeNumber(changeNumber);
+    getOperation().setChangeNumber(changeNumber);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawAttributes(List<RawAttribute> rawAttributes)
   {
-    add.setRawAttributes(rawAttributes);
+    getOperation().setRawAttributes(rawAttributes);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawEntryDN(ByteString rawEntryDN)
   {
-    add.setRawEntryDN(rawEntryDN);
+    getOperation().setRawEntryDN(rawEntryDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String toString()
   {
-    return add.toString();
+    return getOperation().toString();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getProxiedAuthorizationDN()
   {
-    return add.getProxiedAuthorizationDN();
+    return getOperation().getProxiedAuthorizationDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN)
   {
-    add.setProxiedAuthorizationDN(proxiedAuthorizationDN);
+    getOperation().setProxiedAuthorizationDN(proxiedAuthorizationDN);
   }
 
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/BindOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/BindOperationWrapper.java
index 4734dec..17ae26d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/BindOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/BindOperationWrapper.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
 package org.opends.server.core;
 import org.opends.messages.Message;
@@ -34,14 +35,11 @@
 /**
  * This abstract class wraps/decorates a given bind operation.
  * This class will be extended by sub-classes to enhance the
- * functionnality of the BindOperationBasis.
+ * functionality of the BindOperationBasis.
  */
-public abstract class BindOperationWrapper extends OperationWrapper
-       implements BindOperation
+public abstract class BindOperationWrapper extends
+    OperationWrapper<BindOperation> implements BindOperation
 {
-  // The wrapped operation.
-  private BindOperation bind;
-
   /**
    * Creates a new bind operation based on the provided bind operation.
    *
@@ -50,190 +48,211 @@
   protected BindOperationWrapper(BindOperation bind)
   {
     super(bind);
-    this.bind = bind;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public AuthenticationInfo getAuthenticationInfo()
   {
-    return bind.getAuthenticationInfo();
+    return getOperation().getAuthenticationInfo();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public AuthenticationType getAuthenticationType()
   {
-    return bind.getAuthenticationType();
+    return getOperation().getAuthenticationType();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Message getAuthFailureReason()
   {
-    return bind.getAuthFailureReason();
+    return getOperation().getAuthFailureReason();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getBindDN()
   {
-    return bind.getBindDN();
+    return getOperation().getBindDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawBindDN()
   {
-    return bind.getRawBindDN();
+    return getOperation().getRawBindDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Entry getSASLAuthUserEntry()
   {
-    return bind.getSASLAuthUserEntry();
+    return getOperation().getSASLAuthUserEntry();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getSASLCredentials()
   {
-    return bind.getSASLCredentials();
+    return getOperation().getSASLCredentials();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String getSASLMechanism()
   {
-    return bind.getSASLMechanism();
+    return getOperation().getSASLMechanism();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getServerSASLCredentials()
   {
-    return bind.getServerSASLCredentials();
+    return getOperation().getServerSASLCredentials();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getSimplePassword()
   {
-    return bind.getSimplePassword();
+    return getOperation().getSimplePassword();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getUserEntryDN()
   {
-    return bind.getUserEntryDN();
+    return getOperation().getUserEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAuthenticationInfo(AuthenticationInfo authInfo)
   {
-    bind.setAuthenticationInfo(authInfo);
+    getOperation().setAuthenticationInfo(authInfo);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAuthFailureReason(Message reason)
   {
     if (DirectoryServer.returnBindErrorMessages())
     {
-      bind.appendErrorMessage(reason);
+      getOperation().appendErrorMessage(reason);
     }
     else
     {
-      bind.setAuthFailureReason(reason);
+      getOperation().setAuthFailureReason(reason);
     }
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawBindDN(ByteString rawBindDN)
   {
-    bind.setRawBindDN(rawBindDN);
+    getOperation().setRawBindDN(rawBindDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setSASLAuthUserEntry(Entry saslAuthUserEntry)
   {
-    bind.setSASLAuthUserEntry(saslAuthUserEntry);
+    getOperation().setSASLAuthUserEntry(saslAuthUserEntry);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setSASLCredentials(String saslMechanism,
       ByteString saslCredentials)
   {
-    bind.setSASLCredentials(saslMechanism, saslCredentials);
+    getOperation().setSASLCredentials(saslMechanism, saslCredentials);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setServerSASLCredentials(ByteString serverSASLCredentials)
   {
-    bind.setServerSASLCredentials(serverSASLCredentials);
+    getOperation().setServerSASLCredentials(serverSASLCredentials);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setSimplePassword(ByteString simplePassword)
   {
-    bind.setSimplePassword(simplePassword);
+    getOperation().setSimplePassword(simplePassword);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setUserEntryDN(DN userEntryDN){
-    bind.setUserEntryDN(userEntryDN);
+    getOperation().setUserEntryDN(userEntryDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String toString()
   {
-    return bind.toString();
+    return getOperation().toString();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProtocolVersion(String protocolVersion)
   {
-    bind.setProtocolVersion(protocolVersion);
+    getOperation().setProtocolVersion(protocolVersion);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String getProtocolVersion()
   {
-    return bind.getProtocolVersion();
+    return getOperation().getProtocolVersion();
   }
 
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperationWrapper.java
index fc2f142..f6ed8b5 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperationWrapper.java
@@ -23,27 +23,24 @@
  *
  *
  *      Copyright 2008-2009 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
 package org.opends.server.core;
 
+import java.util.Set;
 
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DN;
-import java.util.Set;
 
 /**
  * This abstract class wraps/decorates a given compare operation.
  * This class will be extended by sub-classes to enhance the
- * functionnality of the CompareOperationBasis.
+ * functionality of the CompareOperationBasis.
  */
-public abstract class CompareOperationWrapper
-  extends OperationWrapper
-  implements CompareOperation
+public abstract class CompareOperationWrapper extends
+    OperationWrapper<CompareOperation> implements CompareOperation
 {
-  // The wrapped operation
-  private CompareOperation compare;
-
 
   /**
    * Creates a new compare operation based on the provided compare operation.
@@ -53,124 +50,136 @@
   public CompareOperationWrapper(CompareOperation compare)
   {
     super(compare);
-    this.compare = compare;
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawEntryDN()
   {
-    return compare.getRawEntryDN();
+    return getOperation().getRawEntryDN();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawEntryDN(ByteString rawEntryDN)
   {
-    compare.setRawEntryDN(rawEntryDN);
+    getOperation().setRawEntryDN(rawEntryDN);
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getEntryDN()
   {
-    return compare.getEntryDN();
+    return getOperation().getEntryDN();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String getRawAttributeType()
   {
-    return compare.getRawAttributeType();
+    return getOperation().getRawAttributeType();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawAttributeType(String rawAttributeType)
   {
-    compare.setRawAttributeType(rawAttributeType);
+    getOperation().setRawAttributeType(rawAttributeType);
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public AttributeType getAttributeType()
   {
-    return compare.getAttributeType();
+    return getOperation().getAttributeType();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAttributeType(AttributeType attributeType)
   {
-    compare.setAttributeType(attributeType);
+    getOperation().setAttributeType(attributeType);
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Set<String> getAttributeOptions()
   {
-    return compare.getAttributeOptions();
+    return getOperation().getAttributeOptions();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAttributeOptions(Set<String> attributeOptions)
   {
-    compare.setAttributeOptions(attributeOptions);
+    getOperation().setAttributeOptions(attributeOptions);
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getAssertionValue()
   {
-    return compare.getAssertionValue();
+    return getOperation().getAssertionValue();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAssertionValue(ByteString assertionValue)
   {
-    compare.setAssertionValue(assertionValue);
+    getOperation().setAssertionValue(assertionValue);
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getProxiedAuthorizationDN()
   {
-    return compare.getProxiedAuthorizationDN();
+    return getOperation().getProxiedAuthorizationDN();
   }
 
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN)
   {
-    compare.setProxiedAuthorizationDN(proxiedAuthorizationDN);
+    getOperation().setProxiedAuthorizationDN(proxiedAuthorizationDN);
   }
 
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperationWrapper.java
index 9782c95..5f2712e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperationWrapper.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
 package org.opends.server.core;
 
@@ -34,13 +35,11 @@
 /**
  * This abstract class wraps/decorates a given delete operation.
  * This class will be extended by sub-classes to enhance the
- * functionnality of the DeleteOperationBasis.
+ * functionality of the DeleteOperationBasis.
  */
-public abstract class DeleteOperationWrapper extends OperationWrapper
-       implements DeleteOperation
+public abstract class DeleteOperationWrapper extends
+    OperationWrapper<DeleteOperation> implements DeleteOperation
 {
-  // The wrapped operation.
-  DeleteOperation delete;
 
   /**
    * Creates a new delete operation based on the provided delete operation.
@@ -50,71 +49,78 @@
   public DeleteOperationWrapper(DeleteOperation delete)
   {
     super(delete);
-    this.delete = delete;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getEntryDN()
   {
-    return delete.getEntryDN();
+    return getOperation().getEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawEntryDN()
   {
-    return delete.getRawEntryDN();
+    return getOperation().getRawEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawEntryDN(ByteString rawEntryDN)
   {
-    delete.setRawEntryDN(rawEntryDN);
+    getOperation().setRawEntryDN(rawEntryDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public final long getChangeNumber()
   {
-    return delete.getChangeNumber();
+    return getOperation().getChangeNumber();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public final void setChangeNumber(long changeNumber)
   {
-    delete.setChangeNumber(changeNumber);
+    getOperation().setChangeNumber(changeNumber);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String toString()
   {
-    return delete.toString();
+    return getOperation().toString();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getProxiedAuthorizationDN()
   {
-    return delete.getProxiedAuthorizationDN();
+    return getOperation().getProxiedAuthorizationDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN)
   {
-    delete.setProxiedAuthorizationDN(proxiedAuthorizationDN);
+    getOperation().setProxiedAuthorizationDN(proxiedAuthorizationDN);
   }
 
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperationWrapper.java
index 22d8182..7243125 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperationWrapper.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
+ *      Portions Copyright 2013 ForgeRock AS
  */
 package org.opends.server.core;
 
@@ -33,13 +34,11 @@
 /**
  * This abstract class wraps/decorates a given moddn operation.
  * This class will be extended by sub-classes to enhance the
- * functionnality of the ModifyDNOperationBasis.
+ * functionality of the ModifyDNOperationBasis.
  */
-public abstract class ModifyDNOperationWrapper
-  extends OperationWrapper
-  implements ModifyDNOperation
+public abstract class ModifyDNOperationWrapper extends
+    OperationWrapper<ModifyDNOperation> implements ModifyDNOperation
 {
-  ModifyDNOperation modifyDN;
 
   /**
    * Creates a new moddn operation based on the provided moddn operation.
@@ -49,148 +48,168 @@
   public ModifyDNOperationWrapper(ModifyDNOperation modifyDN)
   {
     super(modifyDN);
-    this.modifyDN = modifyDN;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addModification(Modification modification) {
-    modifyDN.addModification(modification);
+    getOperation().addModification(modification);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean deleteOldRDN() {
-    return modifyDN.deleteOldRDN();
+    return getOperation().deleteOldRDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public long getChangeNumber() {
-    return modifyDN.getChangeNumber();
+    return getOperation().getChangeNumber();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getEntryDN() {
-    return modifyDN.getEntryDN();
+    return getOperation().getEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public List<Modification> getModifications() {
-    return modifyDN.getModifications();
+    return getOperation().getModifications();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public RDN getNewRDN() {
-    return modifyDN.getNewRDN();
+    return getOperation().getNewRDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getNewSuperior() {
-    return modifyDN.getNewSuperior();
+    return getOperation().getNewSuperior();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Entry getOriginalEntry() {
-    return modifyDN.getOriginalEntry();
+    return getOperation().getOriginalEntry();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getProxiedAuthorizationDN() {
-    return modifyDN.getProxiedAuthorizationDN();
+    return getOperation().getProxiedAuthorizationDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawEntryDN() {
-    return modifyDN.getRawEntryDN();
+    return getOperation().getRawEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawNewRDN() {
-    return modifyDN.getRawNewRDN();
+    return getOperation().getRawNewRDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawNewSuperior() {
-    return modifyDN.getRawNewSuperior();
+    return getOperation().getRawNewSuperior();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Entry getUpdatedEntry() {
-    return modifyDN.getUpdatedEntry();
+    return getOperation().getUpdatedEntry();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setChangeNumber(long changeNumber) {
-    modifyDN.setChangeNumber(changeNumber);
+    getOperation().setChangeNumber(changeNumber);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setDeleteOldRDN(boolean deleteOldRDN) {
-    modifyDN.setDeleteOldRDN(deleteOldRDN);
+    getOperation().setDeleteOldRDN(deleteOldRDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawEntryDN(ByteString rawEntryDN) {
-    modifyDN.setRawEntryDN(rawEntryDN);
+    getOperation().setRawEntryDN(rawEntryDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawNewRDN(ByteString rawNewRDN) {
-    modifyDN.setRawNewRDN(rawNewRDN);
+    getOperation().setRawNewRDN(rawNewRDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawNewSuperior(ByteString rawNewSuperior) {
-    modifyDN.setRawNewSuperior(rawNewSuperior);
+    getOperation().setRawNewSuperior(rawNewSuperior);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProxiedAuthorizationDN(DN dn)
   {
-    modifyDN.setProxiedAuthorizationDN(dn);
+    getOperation().setProxiedAuthorizationDN(dn);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getNewDN()
   {
-    return modifyDN.getNewDN();
+    return getOperation().getNewDN();
   }
+
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperationWrapper.java
index ebecafd..609fb63 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperationWrapper.java
@@ -23,7 +23,7 @@
  *
  *
  *      Copyright 2008 Sun Microsystems, Inc.
- *      Portions Copyright 2011 ForgeRock AS
+ *      Portions Copyright 2011-2013 ForgeRock AS
  */
 package org.opends.server.core;
 
@@ -36,13 +36,11 @@
 /**
  * This abstract class wraps/decorates a given modify operation.
  * This class will be extended by sub-classes to enhance the
- * functionnality of the ModifyOperationBasis.
+ * functionality of the ModifyOperationBasis.
  */
-public abstract class ModifyOperationWrapper extends OperationWrapper
-       implements ModifyOperation
+public abstract class ModifyOperationWrapper extends
+    OperationWrapper<ModifyOperation> implements ModifyOperation
 {
-  // The wrapped operation.
-  private ModifyOperation modify;
 
   /**
    * Creates a new modify operation based on the provided modify operation.
@@ -52,110 +50,122 @@
   protected ModifyOperationWrapper(ModifyOperation modify)
   {
     super(modify);
-    this.modify = modify;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addModification(Modification modification)
     throws DirectoryException
   {
-    modify.addModification(modification);
+    getOperation().addModification(modification);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void addRawModification(RawModification rawModification)
   {
-    modify.addRawModification(rawModification);
+    getOperation().addRawModification(rawModification);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getEntryDN()
   {
-    return modify.getEntryDN();
+    return getOperation().getEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public List<Modification> getModifications()
   {
-    return modify.getModifications();
+    return getOperation().getModifications();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawEntryDN()
   {
-    return modify.getRawEntryDN();
+    return getOperation().getRawEntryDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public List<RawModification> getRawModifications()
   {
-    return modify.getRawModifications();
+    return getOperation().getRawModifications();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawEntryDN(ByteString rawEntryDN)
   {
-    modify.setRawEntryDN(rawEntryDN);
+    getOperation().setRawEntryDN(rawEntryDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawModifications(List<RawModification> rawModifications)
   {
-    modify.setRawModifications(rawModifications);
+    getOperation().setRawModifications(rawModifications);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String toString()
   {
-    return modify.toString();
+    return getOperation().toString();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public final long getChangeNumber(){
-    return modify.getChangeNumber();
+    return getOperation().getChangeNumber();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setChangeNumber(long changeNumber)
   {
-    modify.setChangeNumber(changeNumber);
+    getOperation().setChangeNumber(changeNumber);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getProxiedAuthorizationDN()
   {
-    return modify.getProxiedAuthorizationDN();
+    return getOperation().getProxiedAuthorizationDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN){
-    modify.setProxiedAuthorizationDN(proxiedAuthorizationDN);
+    getOperation().setProxiedAuthorizationDN(proxiedAuthorizationDN);
   }
 
 }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/OperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/OperationWrapper.java
index 429679d..0e21cff 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/OperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/OperationWrapper.java
@@ -38,13 +38,16 @@
 
 
 /**
- * This abstract class is a generic operation wrapper intended to be
- * subclassed by a specific operation wrapper.
+ * This abstract class is a generic operation wrapper intended to be subclassed
+ * by a specific operation wrapper.
+ *
+ * @param <W>
+ *          the type of the object wrapped by this class
  */
-public class OperationWrapper implements Operation
+public class OperationWrapper<W extends Operation> implements Operation
 {
   /** The wrapped operation. */
-  private Operation operation;
+  private W operation;
 
 
   /**
@@ -52,7 +55,7 @@
    *
    * @param operation  the generic operation to wrap
    */
-  public OperationWrapper(Operation operation)
+  public OperationWrapper(W operation)
   {
     this.operation = operation;
   }
@@ -234,6 +237,16 @@
   }
 
   /**
+   * Returns the wrapped {@link Operation}.
+   *
+   * @return the wrapped {@link Operation}.
+   */
+  protected W getOperation()
+  {
+    return operation;
+  }
+
+  /**
    * {@inheritDoc}
    */
   @Override
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationWrapper.java b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationWrapper.java
index 76bdd8c..474e3fa 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationWrapper.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperationWrapper.java
@@ -40,11 +40,9 @@
  * This class will be extended by sub-classes to enhance the
  * functionality of the SearchOperationBasis.
  */
-public abstract class SearchOperationWrapper extends OperationWrapper
-       implements SearchOperation
+public abstract class SearchOperationWrapper extends
+    OperationWrapper<SearchOperation> implements SearchOperation
 {
-  // The wrapped operation.
-  private SearchOperation search;
 
   /**
    * Creates a new search operation based on the provided search operation.
@@ -54,414 +52,446 @@
   protected SearchOperationWrapper(SearchOperation search)
   {
     super(search);
-    this.search = search;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean returnEntry(Entry entry, List<Control> controls)
   {
-    boolean result;
-
-    result = this.search.returnEntry(entry, controls);
-
-    return result;
+    return getOperation().returnEntry(entry, controls);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean returnEntry(Entry entry, List<Control> controls,
                              boolean evaluateAci)
   {
-    boolean result;
-
-    result = this.search.returnEntry(entry, controls, evaluateAci);
-
-    return result;
+    return getOperation().returnEntry(entry, controls, evaluateAci);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean returnReference(DN dn, SearchResultReference reference)
   {
-    boolean result;
-
-    result = this.search.returnReference(dn, reference);
-
-    return result;
+    return getOperation().returnReference(dn, reference);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean returnReference(DN dn, SearchResultReference reference,
                                  boolean evaluateAci)
   {
-    boolean result;
-
-    result = this.search.returnReference(dn, reference, evaluateAci);
-
-    return result;
+    return getOperation().returnReference(dn, reference, evaluateAci);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public String toString()
   {
-    return search.toString();
+    return getOperation().toString();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Set<String> getAttributes()
   {
-    return search.getAttributes();
+    return getOperation().getAttributes();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getBaseDN()
   {
-    return search.getBaseDN();
+    return getOperation().getBaseDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DereferencePolicy getDerefPolicy()
   {
-    return search.getDerefPolicy();
+    return getOperation().getDerefPolicy();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public int getEntriesSent()
   {
-    return search.getEntriesSent();
+    return getOperation().getEntriesSent();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public SearchFilter getFilter()
   {
-    return search.getFilter();
+    return getOperation().getFilter();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ByteString getRawBaseDN()
   {
-    return search.getRawBaseDN();
+    return getOperation().getRawBaseDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public RawFilter getRawFilter()
   {
-    return search.getRawFilter();
+    return getOperation().getRawFilter();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public int getReferencesSent()
   {
-    return search.getReferencesSent();
+    return getOperation().getReferencesSent();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public SearchScope getScope()
   {
-    return search.getScope();
+    return getOperation().getScope();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public int getSizeLimit()
   {
-    return search.getSizeLimit();
+    return getOperation().getSizeLimit();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public int getTimeLimit()
   {
-    return search.getTimeLimit();
+    return getOperation().getTimeLimit();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean getTypesOnly()
   {
-    return search.getTypesOnly();
+    return getOperation().getTypesOnly();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void sendSearchResultDone()
   {
-    search.sendSearchResultDone();
+    getOperation().sendSearchResultDone();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setAttributes(Set<String> attributes)
   {
-    search.setAttributes(attributes);
+    getOperation().setAttributes(attributes);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setBaseDN(DN baseDN)
   {
-    search.setBaseDN(baseDN);
+    getOperation().setBaseDN(baseDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setDerefPolicy(DereferencePolicy derefPolicy)
   {
-    search.setDerefPolicy(derefPolicy);
+    getOperation().setDerefPolicy(derefPolicy);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawBaseDN(ByteString rawBaseDN)
   {
-    search.setRawBaseDN(rawBaseDN);
+    getOperation().setRawBaseDN(rawBaseDN);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRawFilter(RawFilter rawFilter)
   {
-    search.setRawFilter(rawFilter);
+    getOperation().setRawFilter(rawFilter);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setScope(SearchScope scope)
   {
-    search.setScope(scope);
+    getOperation().setScope(scope);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setSizeLimit(int sizeLimit)
   {
-    search.setSizeLimit(sizeLimit);
+    getOperation().setSizeLimit(sizeLimit);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setTimeLimit(int timeLimit)
   {
-    search.setTimeLimit(timeLimit);
+    getOperation().setTimeLimit(timeLimit);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setTypesOnly(boolean typesOnly)
   {
-    search.setTypesOnly(typesOnly);
+    getOperation().setTypesOnly(typesOnly);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setTimeLimitExpiration(Long timeLimitExpiration)
   {
-    search.setTimeLimitExpiration(timeLimitExpiration);
+    getOperation().setTimeLimitExpiration(timeLimitExpiration);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isReturnSubentriesOnly()
   {
-    return search.isReturnSubentriesOnly();
+    return getOperation().isReturnSubentriesOnly();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setReturnSubentriesOnly(boolean returnLDAPSubentries)
   {
-    search.setReturnSubentriesOnly(returnLDAPSubentries);
+    getOperation().setReturnSubentriesOnly(returnLDAPSubentries);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public MatchedValuesControl getMatchedValuesControl()
   {
-    return search.getMatchedValuesControl();
+    return getOperation().getMatchedValuesControl();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setMatchedValuesControl(MatchedValuesControl controls)
   {
-    search.setMatchedValuesControl(controls);
+    getOperation().setMatchedValuesControl(controls);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isIncludeUsableControl()
   {
-    return search.isIncludeUsableControl();
+    return getOperation().isIncludeUsableControl();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setIncludeUsableControl(boolean includeUsableControl)
   {
-    search.setIncludeUsableControl(includeUsableControl);
+    getOperation().setIncludeUsableControl(includeUsableControl);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public Long getTimeLimitExpiration()
   {
-    return search.getTimeLimitExpiration();
+    return getOperation().getTimeLimitExpiration();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isClientAcceptsReferrals()
   {
-    return search.isClientAcceptsReferrals();
+    return getOperation().isClientAcceptsReferrals();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setClientAcceptsReferrals(boolean clientAcceptReferrals)
   {
-    search.setClientAcceptsReferrals(clientAcceptReferrals);
+    getOperation().setClientAcceptsReferrals(clientAcceptReferrals);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void incrementEntriesSent()
   {
-    search.incrementEntriesSent();
+    getOperation().incrementEntriesSent();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void incrementReferencesSent()
   {
-    search.incrementReferencesSent();
+    getOperation().incrementReferencesSent();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isSendResponse()
   {
-    return search.isSendResponse();
+    return getOperation().isSendResponse();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setSendResponse(boolean sendResponse)
   {
-    search.setSendResponse(sendResponse);
+    getOperation().setSendResponse(sendResponse);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isRealAttributesOnly(){
-    return search.isRealAttributesOnly();
+    return getOperation().isRealAttributesOnly();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setRealAttributesOnly(boolean realAttributesOnly){
-    search.setRealAttributesOnly(realAttributesOnly);
+    getOperation().setRealAttributesOnly(realAttributesOnly);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isVirtualAttributesOnly(){
-    return search.isVirtualAttributesOnly();
+    return getOperation().isVirtualAttributesOnly();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setVirtualAttributesOnly(boolean virtualAttributesOnly){
-    search.setVirtualAttributesOnly(virtualAttributesOnly);
+    getOperation().setVirtualAttributesOnly(virtualAttributesOnly);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void sendSearchEntry(SearchResultEntry entry)
     throws DirectoryException
     {
-    search.sendSearchEntry(entry);
+    getOperation().sendSearchEntry(entry);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean sendSearchReference(SearchResultReference reference)
     throws DirectoryException
     {
-    return search.sendSearchReference(reference);
+    return getOperation().sendSearchReference(reference);
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public DN getProxiedAuthorizationDN()
   {
-    return search.getProxiedAuthorizationDN();
+    return getOperation().getProxiedAuthorizationDN();
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public void setProxiedAuthorizationDN(DN proxiedAuthorizationDN){
-    search.setProxiedAuthorizationDN(proxiedAuthorizationDN);
+    getOperation().setProxiedAuthorizationDN(proxiedAuthorizationDN);
   }
 
 }

--
Gitblit v1.10.0