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

jcduff
23.04.2008 f73b655466092169abac34833fb628fce1fcdebe
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();
}