From b4f8838b15342670c31753a484abf0129e3c9653 Mon Sep 17 00:00:00 2001
From: jcduff <jcduff@localhost>
Date: Thu, 23 Oct 2008 14:04:24 +0000
Subject: [PATCH] The commit will bring the following features :     - An updated version of the underlying database. BDB JE 3.3 is now used.     - Attribute API refactoring providing a better abstraction and offering improved performances.     - A new GUI called the Control-Panel to replace the Status-Panel: the specifications for this       GUI are available on OpenDS Wiki and contains a link to a mockup.        See <https://www.opends.org/wiki/page/ControlPanelUISpecification>.     - Some changes in the replication protocol to implement "Assured Replication Mode". The        specifications are on OpenDS Wiki at <https://www.opends.org/wiki/page/AssuredMode> and section 7       described some of the replication changes required to support this. Assured Replication is not finished,       but the main replication protocol changes to support it are done. As explained by Gilles on an email on       the Dev mailing list (http://markmail.org/message/46rgo3meq3vriy4a), with these changes the newer versions       of OpenDS may not be able to replicate with OpenDS 1.0 instances.     - Support for Service Tags on the platforms where the functionality is available and enabled. Specifications       are published at <https://www.opends.org/wiki/page/OpenDSServiceTagEnabled>. For more information on       Service Tags see <http://wikis.sun.com/display/ServiceTag/Sun+Service+Tag+FAQ>.     - The Admin Connector service. In order to provide agentry of the OpenDS server at any time, a new service       has been added, dedicated to the administration, configuration and monitoring of the server.       An overview of the Admin Connector service and it's use is available on the       OpenDS wiki <https://www.opends.org/wiki/page/ManagingAdministrationTrafficToTheServer>     - Updates to the various command line tools to support the Admin Connector service.     - Some internal re-architecting of the server to put the foundation of future developments such as virtual       directory services. The new NetworkGroups and WorkFlow internal services which have been specified in       <https://www.opends.org/wiki/page/BasicOperationRoutingThroughNetworkGroup> are now implemented.     - Many bug fixes...

---
 opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java |  676 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 520 insertions(+), 156 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java
index ce6fc12..1a259c7 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/api/AccessLogPublisher.java
@@ -29,6 +29,7 @@
 
 
 import java.util.List;
+import java.util.Map;
 
 import org.opends.server.admin.std.server.AccessLogPublisherCfg;
 import org.opends.server.config.ConfigException;
@@ -37,71 +38,70 @@
 import org.opends.messages.Message;
 
 
+
 /**
  * This class defines the set of methods and structures that must be
  * implemented for a Directory Server access log publisher.
  *
- * @param  <T>  The type of access log publisher configuration handled
- *              by this log publisher implementation.
+ * @param <T>
+ *          The type of access log publisher configuration handled by
+ *          this log publisher implementation.
  */
 @org.opends.server.types.PublicAPI(
-     stability=org.opends.server.types.StabilityLevel.VOLATILE,
-     mayInstantiate=false,
-     mayExtend=true,
-     mayInvoke=false)
+    stability = org.opends.server.types.StabilityLevel.VOLATILE,
+    mayInstantiate = false,
+    mayExtend = true,
+    mayInvoke = false)
 public abstract class AccessLogPublisher
-       <T extends AccessLogPublisherCfg>
+  <T extends AccessLogPublisherCfg>
 {
+
   /**
    * Initializes this access publisher provider based on the
    * information in the provided debug publisher configuration.
    *
-   * @param  config  The access publisher configuration that contains
-   *                 the information to use to initialize this access
-   *                 publisher.
-   *
-   * @throws  ConfigException  If an unrecoverable problem arises in
-   *                           the process of performing the
-   *                           initialization as a result of the
-   *                           server configuration.
-   *
-   * @throws  InitializationException  If a problem occurs during
-   *                                   initialization that is not
-   *                                   related to the server
-   *                                   configuration.
+   * @param config
+   *          The access publisher configuration that contains the
+   *          information to use to initialize this access publisher.
+   * @throws ConfigException
+   *           If an unrecoverable problem arises in the process of
+   *           performing the initialization as a result of the server
+   *           configuration.
+   * @throws InitializationException
+   *           If a problem occurs during initialization that is not
+   *           related to the server configuration.
    */
   public abstract void initializeAccessLogPublisher(T config)
-         throws ConfigException, InitializationException;
+      throws ConfigException, InitializationException;
 
 
 
   /**
    * Indicates whether the provided configuration is acceptable for
-   * this access log publisher.  It should be possible to call this
-   * method on an uninitialized access log publisher instance in
-   * order to determine whether the access log publisher would be able
-   * to use the provided configuration.
-   * <BR><BR>
+   * this access log publisher. It should be possible to call this
+   * method on an uninitialized access log publisher instance in order
+   * to determine whether the access log publisher would be able to
+   * use the provided configuration. <BR>
+   * <BR>
    * Note that implementations which use a subclass of the provided
-   * configuration class will likely need to cast the configuration
-   * to the appropriate subclass type.
+   * configuration class will likely need to cast the configuration to
+   * the appropriate subclass type.
    *
-   * @param  configuration        The access log publisher
-   *                              configuration for which to make the
-   *                              determination.
-   * @param  unacceptableReasons  A list that may be used to hold the
-   *                              reasons that the provided
-   *                              configuration is not acceptable.
-   *
-   * @return  {@code true} if the provided configuration is acceptable
-   *          for this access log publisher, or {@code false} if not.
+   * @param configuration
+   *          The access log publisher configuration for which to make
+   *          the determination.
+   * @param unacceptableReasons
+   *          A list that may be used to hold the reasons that the
+   *          provided configuration is not acceptable.
+   * @return {@code true} if the provided configuration is acceptable
+   *         for this access log publisher, or {@code false} if not.
    */
   public boolean isConfigurationAcceptable(
-                      AccessLogPublisherCfg configuration,
-                      List<Message> unacceptableReasons)
+      AccessLogPublisherCfg configuration,
+      List<Message> unacceptableReasons)
   {
     // This default implementation does not perform any special
-    // validation.  It should be overridden by access log publisher
+    // validation. It should be overridden by access log publisher
     // implementations that wish to perform more detailed validation.
     return true;
   }
@@ -119,167 +119,398 @@
    * Writes a message to the access logger with information about a
    * new client connection that has been established, regardless of
    * whether it will be immediately terminated.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  clientConnection  The client connection that has been
-   *                           established.
+   * @param clientConnection
+   *          The client connection that has been established.
    */
-  public abstract void logConnect(ClientConnection clientConnection);
+  public void logConnect(ClientConnection clientConnection)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * termination of an existing client connection.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  clientConnection  The client connection that has been
-   *                           terminated.
-   * @param  disconnectReason  A generic disconnect reason for the
-   *                           connection termination.
-   * @param  message           A human-readable message that can
-   *                           provide additional information about
-   *                           the disconnect.
+   * @param clientConnection
+   *          The client connection that has been terminated.
+   * @param disconnectReason
+   *          A generic disconnect reason for the connection
+   *          termination.
+   * @param message
+   *          A human-readable message that can provide additional
+   *          information about the disconnect.
    */
-  public abstract void logDisconnect(
-                            ClientConnection clientConnection,
-                            DisconnectReason disconnectReason,
-                            Message message);
+  public void logDisconnect(ClientConnection clientConnection,
+      DisconnectReason disconnectReason, Message message)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * abandon request associated with the provided abandon operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  abandonOperation  The abandon operation containing the
-   *                           information to use to log the abandon
-   *                           request.
+   * @param abandonOperation
+   *          The abandon operation containing the information to use
+   *          to log the abandon request.
    */
-  public abstract void logAbandonRequest(
-                            AbandonOperation abandonOperation);
+  public void logAbandonRequest(AbandonOperation abandonOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided abandon operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param abandonOperation
+   *          The abandon operation containing the information to use
+   *          to log the abandon request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logAbandonIntermediateMessage(
+      AbandonOperation abandonOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing.
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * result of the provided abandon operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  abandonOperation  The abandon operation containing the
-   *                           information to use to log the abandon
-   *                           request.
+   * @param abandonOperation
+   *          The abandon operation containing the information to use
+   *          to log the abandon request.
    */
-  public abstract void logAbandonResult(
-                            AbandonOperation abandonOperation);
+  public void logAbandonResult(AbandonOperation abandonOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * add request associated with the provided add operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  addOperation  The add operation containing the
-   *                       information to use to log the add request.
+   * @param addOperation
+   *          The add operation containing the information to use to
+   *          log the add request.
    */
-  public abstract void logAddRequest(AddOperation addOperation);
+  public void logAddRequest(AddOperation addOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided add operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param addOperation
+   *          The add operation containing the information to use to
+   *          log the add request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logAddIntermediateMessage(AddOperation addOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * add response associated with the provided add operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  addOperation  The add operation containing the
-   *                       information to use to log the add response.
+   * @param addOperation
+   *          The add operation containing the information to use to
+   *          log the add response.
    */
-  public abstract void logAddResponse(AddOperation addOperation);
+  public void logAddResponse(AddOperation addOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * bind request associated with the provided bind operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  bindOperation  The bind operation containing the
-   *                        information to use to log the bind
-   *                        request.
+   * @param bindOperation
+   *          The bind operation containing the information to use to
+   *          log the bind request.
    */
-  public abstract void logBindRequest(BindOperation bindOperation);
+  public void logBindRequest(BindOperation bindOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided bind operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param bindOperation
+   *          The bind operation containing the information to use to
+   *          log the bind request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logBindIntermediateMessage(BindOperation bindOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * bind response associated with the provided bind operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  bindOperation  The bind operation containing the
-   *                        information to use to log the bind
-   *                        response.
+   * @param bindOperation
+   *          The bind operation containing the information to use to
+   *          log the bind response.
    */
-  public abstract void logBindResponse(BindOperation bindOperation);
+  public void logBindResponse(BindOperation bindOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * compare request associated with the provided compare operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  compareOperation  The compare operation containing the
-   *                           information to use to log the compare
-   *                           request.
+   * @param compareOperation
+   *          The compare operation containing the information to use
+   *          to log the compare request.
    */
-  public abstract void logCompareRequest(
-                            CompareOperation compareOperation);
+  public void logCompareRequest(CompareOperation compareOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided compare operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param compareOperation
+   *          The compare operation containing the information to use
+   *          to log the abandon compare.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logCompareIntermediateMessage(
+      CompareOperation compareOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * compare response associated with the provided compare operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  compareOperation  The compare operation containing the
-   *                           information to use to log the compare
-   *                           response.
+   * @param compareOperation
+   *          The compare operation containing the information to use
+   *          to log the compare response.
    */
-  public abstract void logCompareResponse(
-                            CompareOperation compareOperation);
+  public void logCompareResponse(CompareOperation compareOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * delete request associated with the provided delete operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  deleteOperation  The delete operation containing the
-   *                          information to use to log the delete
-   *                          request.
+   * @param deleteOperation
+   *          The delete operation containing the information to use
+   *          to log the delete request.
    */
-  public abstract void logDeleteRequest(
-                            DeleteOperation deleteOperation);
+  public void logDeleteRequest(DeleteOperation deleteOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided delete operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param deleteOperation
+   *          The delete operation containing the information to use
+   *          to log the delete request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logDeleteIntermediateMessage(
+      DeleteOperation deleteOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * delete response associated with the provided delete operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  deleteOperation  The delete operation containing the
-   *                          information to use to log the delete
-   *                          response.
+   * @param deleteOperation
+   *          The delete operation containing the information to use
+   *          to log the delete response.
    */
-  public abstract void logDeleteResponse(
-                            DeleteOperation deleteOperation);
+  public void logDeleteResponse(DeleteOperation deleteOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * extended request associated with the provided extended operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  extendedOperation  The extended operation containing the
-   *                            information to use to log the extended
-   *                            request.
+   * @param extendedOperation
+   *          The extended operation containing the information to use
+   *          to log the extended request.
    */
-  public abstract void logExtendedRequest(
-                            ExtendedOperation extendedOperation);
+  public void logExtendedRequest(ExtendedOperation extendedOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided extended operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param extendedOperation
+   *          The extended operation containing the information to use
+   *          to log the extended request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logExtendedIntermediateMessage(
+      ExtendedOperation extendedOperation, String category,
+      Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
@@ -287,39 +518,80 @@
    * Writes a message to the access logger with information about the
    * extended response associated with the provided extended
    * operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  extendedOperation  The extended operation containing the
-   *                            information to use to log the extended
-   *                            response.
+   * @param extendedOperation
+   *          The extended operation containing the information to use
+   *          to log the extended response.
    */
-  public abstract void logExtendedResponse(
-                            ExtendedOperation extendedOperation);
+  public void logExtendedResponse(ExtendedOperation extendedOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * modify request associated with the provided modify operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  modifyOperation  The modify operation containing the
-   *                          information to use to log the modify
-   *                          request.
+   * @param modifyOperation
+   *          The modify operation containing the information to use
+   *          to log the modify request.
    */
-  public abstract void logModifyRequest(
-                            ModifyOperation modifyOperation);
+  public void logModifyRequest(ModifyOperation modifyOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided modify operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param modifyOperation
+   *          The modify operation containing the information to use
+   *          to log the modify request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logModifyIntermediateMessage(
+      ModifyOperation modifyOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * modify response associated with the provided modify operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  modifyOperation  The modify operation containing the
-   *                          information to use to log the modify
-   *                          response.
+   * @param modifyOperation
+   *          The modify operation containing the information to use
+   *          to log the modify response.
    */
-  public abstract void logModifyResponse(
-                            ModifyOperation modifyOperation);
+  public void logModifyResponse(ModifyOperation modifyOperation)
+  {
+    // Do nothing
+  }
 
 
 
@@ -327,13 +599,46 @@
    * Writes a message to the access logger with information about the
    * modify DN request associated with the provided modify DN
    * operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  modifyDNOperation  The modify DN operation containing the
-   *                            information to use to log the modify
-   *                            DN request.
+   * @param modifyDNOperation
+   *          The modify DN operation containing the information to
+   *          use to log the modify DN request.
    */
-  public abstract void logModifyDNRequest(
-                            ModifyDNOperation modifyDNOperation);
+  public void logModifyDNRequest(ModifyDNOperation modifyDNOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided modify DN operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param modifyDNOperation
+   *          The modify DN operation containing the information to
+   *          use to log the modify DN request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logModifyDNIntermediateMessage(
+      ModifyDNOperation modifyDNOperation, String category,
+      Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
@@ -341,26 +646,63 @@
    * Writes a message to the access logger with information about the
    * modify DN response associated with the provided modify DN
    * operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  modifyDNOperation  The modify DN operation containing the
-   *                            information to use to log the modify
-   *                            DN response.
+   * @param modifyDNOperation
+   *          The modify DN operation containing the information to
+   *          use to log the modify DN response.
    */
-  public abstract void logModifyDNResponse(
-                            ModifyDNOperation modifyDNOperation);
+  public void logModifyDNResponse(ModifyDNOperation modifyDNOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * search request associated with the provided search operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  searchOperation  The search operation containing the
-   *                          information to use to log the search
-   *                          request.
+   * @param searchOperation
+   *          The search operation containing the information to use
+   *          to log the search request.
    */
-  public abstract void logSearchRequest(
-                            SearchOperation searchOperation);
+  public void logSearchRequest(SearchOperation searchOperation)
+  {
+    // Do nothing
+  }
+
+
+
+  /**
+   * Writes a message to the access logger containing additional
+   * information associated with the provided search operation.
+   * <p>
+   * This method will only be called after the request has been logged
+   * and before the response. Implementations can choose to ignore
+   * intermediate responses or filter them based on their category.
+   * <p>
+   * The default implementation is to not log anything.
+   *
+   * @param searchOperation
+   *          The search operation containing the information to use
+   *          to log the search request.
+   * @param category
+   *          The category of the intermediate message.
+   * @param content
+   *          The content of the intermediate message. This comprises
+   *          of one or more key/value pairs which form the content of
+   *          the intermediate message.
+   */
+  public void logSearchIntermediateMessage(
+      SearchOperation searchOperation,
+      String category, Map<String, String> content)
+  {
+    // Do nothing
+  }
 
 
 
@@ -368,14 +710,20 @@
    * Writes a message to the access logger with information about the
    * search result entry that matches the criteria associated with the
    * provided search operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  searchOperation  The search operation with which the
-   *                          search result entry is associated.
-   * @param  searchEntry      The search result entry to be logged.
+   * @param searchOperation
+   *          The search operation with which the search result entry
+   *          is associated.
+   * @param searchEntry
+   *          The search result entry to be logged.
    */
-  public abstract void logSearchResultEntry(
-                            SearchOperation searchOperation,
-                            SearchResultEntry searchEntry);
+  public void logSearchResultEntry(SearchOperation searchOperation,
+      SearchResultEntry searchEntry)
+  {
+    // Do nothing
+  }
 
 
 
@@ -383,40 +731,57 @@
    * Writes a message to the access logger with information about the
    * search result reference returned while processing the associated
    * search operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  searchOperation  The search operation with which the
-   *                          search result reference is associated.
-   * @param  searchReference  The search result reference to be
-   *                          logged.
+   * @param searchOperation
+   *          The search operation with which the search result
+   *          reference is associated.
+   * @param searchReference
+   *          The search result reference to be logged.
    */
-  public abstract void logSearchResultReference(
-                            SearchOperation searchOperation,
-                            SearchResultReference searchReference);
+  public void logSearchResultReference(
+      SearchOperation searchOperation,
+      SearchResultReference searchReference)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * completion of the provided search operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  searchOperation  The search operation containing the
-   *                          information to use to log the search
-   *                          result done message.
+   * @param searchOperation
+   *          The search operation containing the information to use
+   *          to log the search result done message.
    */
-  public abstract void logSearchResultDone(
-                            SearchOperation searchOperation);
+  public void logSearchResultDone(SearchOperation searchOperation)
+  {
+    // Do nothing
+  }
 
 
 
   /**
    * Writes a message to the access logger with information about the
    * unbind request associated with the provided unbind operation.
+   * <p>
+   * The default implementation is to not log anything.
    *
-   * @param  unbindOperation  The unbind operation containing the
-   *                          information to use to log the unbind
-   *                          request.
+   * @param unbindOperation
+   *          The unbind operation containing the information to use
+   *          to log the unbind request.
    */
-  public abstract void logUnbind(UnbindOperation unbindOperation);
+  public void logUnbind(UnbindOperation unbindOperation)
+  {
+    // Do nothing
+  }
+
+
 
   /**
    * Gets the DN of the configuration entry for this access log
@@ -427,4 +792,3 @@
   public abstract DN getDN();
 
 }
-

--
Gitblit v1.10.0