From b54d8bdf7b583b5d57b7deae2431c32fcd644a1a Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 25 Apr 2013 09:00:37 +0000
Subject: [PATCH] OPENDJ-879 (CR-1603) Add HTTP access log

---
 opends/src/server/org/opends/server/core/LoggerConfigManager.java |  163 +++++++++++++++++++++++++-----------------------------
 1 files changed, 75 insertions(+), 88 deletions(-)

diff --git a/opends/src/server/org/opends/server/core/LoggerConfigManager.java b/opends/src/server/org/opends/server/core/LoggerConfigManager.java
index a6c1a5d..1ef20fd 100644
--- a/opends/src/server/org/opends/server/core/LoggerConfigManager.java
+++ b/opends/src/server/org/opends/server/core/LoggerConfigManager.java
@@ -23,27 +23,29 @@
  *
  *
  *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Portions copyright 2013 ForgeRock AS
  */
 package org.opends.server.core;
-import org.opends.messages.Message;
 
-
-
-import java.util.*;
-
-import org.opends.server.config.ConfigException;
-import org.opends.server.types.*;
-
-import org.opends.server.loggers.debug.DebugLogger;
-import org.opends.server.loggers.ErrorLogger;
-import org.opends.server.loggers.AccessLogger;
 import static org.opends.messages.ConfigMessages.*;
 import static org.opends.server.loggers.ErrorLogger.*;
 
-import org.opends.server.admin.std.server.*;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opends.messages.Message;
 import org.opends.server.admin.server.ConfigurationAddListener;
 import org.opends.server.admin.server.ConfigurationDeleteListener;
 import org.opends.server.admin.server.ServerManagementContext;
+import org.opends.server.admin.std.server.*;
+import org.opends.server.config.ConfigException;
+import org.opends.server.loggers.AbstractLogger;
+import org.opends.server.loggers.AccessLogger;
+import org.opends.server.loggers.ErrorLogger;
+import org.opends.server.loggers.debug.DebugLogger;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.ResultCode;
 
 
 /**
@@ -123,67 +125,77 @@
       logError(WARN_CONFIG_LOGGER_NO_ACTIVE_ERROR_LOGGERS.get());
     }
 
-    DebugLogger.getInstance().initializeDebugLogger(debugPublisherCfgs);
-    AccessLogger.getInstance().initializeAccessLogger(accessPublisherCfgs);
-    ErrorLogger.getInstance().initializeErrorLogger(errorPublisherCfgs);
+    DebugLogger.getInstance().initializeLogger(debugPublisherCfgs);
+    AccessLogger.getInstance().initializeLogger(accessPublisherCfgs);
+    ErrorLogger.getInstance().initializeLogger(errorPublisherCfgs);
+  }
+
+  /**
+   * Returns the logger instance corresponding to the provided config. If no
+   * logger corresponds to it, null will be returned and a message will be added
+   * to the provided messages list.
+   *
+   * @param config
+   *          the config for which to return the logger instance
+   * @param messages
+   *          where the error message will be output if no logger correspond to
+   *          the provided config.
+   * @return the logger corresponding to the provided config, null if no logger
+   *         corresponds.
+   */
+  private AbstractLogger getLoggerInstance(LogPublisherCfg config,
+      List<Message> messages)
+  {
+    if (config instanceof DebugLogPublisherCfg)
+    {
+      return DebugLogger.getInstance();
+    }
+    else if (config instanceof AccessLogPublisherCfg)
+    {
+      return AccessLogger.getInstance();
+    }
+    else if (config instanceof ErrorLogPublisherCfg)
+    {
+      return ErrorLogger.getInstance();
+    }
+    else
+    {
+      messages.add(ERR_CONFIG_LOGGER_INVALID_OBJECTCLASS.get(String
+          .valueOf(config.dn())));
+      return null;
+    }
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationAddAcceptable(LogPublisherCfg config,
                                               List<Message> unacceptableReasons)
   {
-    if(config instanceof DebugLogPublisherCfg)
+    AbstractLogger instance = getLoggerInstance(config, unacceptableReasons);
+    if (instance != null)
     {
-      return DebugLogger.getInstance().isConfigurationAddAcceptable(
-          (DebugLogPublisherCfg)config, unacceptableReasons);
+      return instance.isConfigurationAddAcceptable(config, unacceptableReasons);
     }
-   else if(config instanceof AccessLogPublisherCfg)
-   {
-     return AccessLogger.getInstance().isConfigurationAddAcceptable(
-         (AccessLogPublisherCfg)config, unacceptableReasons);
-   }
-   else if(config instanceof ErrorLogPublisherCfg)
-   {
-     return ErrorLogger.getInstance().isConfigurationAddAcceptable(
-         (ErrorLogPublisherCfg)config, unacceptableReasons);
-   }
-    else
-    {
-
-      unacceptableReasons.add(ERR_CONFIG_LOGGER_INVALID_OBJECTCLASS.get(
-              String.valueOf(config.dn())));
-      return false;
-    }
+    return false;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationAdd(LogPublisherCfg config)
   {
-    if(config instanceof DebugLogPublisherCfg)
+    List<Message> messages = new ArrayList<Message>(1);
+    AbstractLogger instance = getLoggerInstance(config, messages);
+    if (instance != null)
     {
-      return DebugLogger.getInstance().applyConfigurationAdd(
-          (DebugLogPublisherCfg)config);
+      return instance.applyConfigurationAdd(config);
     }
-   else if(config instanceof AccessLogPublisherCfg)
-   {
-     return AccessLogger.getInstance().applyConfigurationAdd(
-         (AccessLogPublisherCfg)config);
-   }
-   else if(config instanceof ErrorLogPublisherCfg)
-   {
-     return ErrorLogger.getInstance().applyConfigurationAdd(
-         (ErrorLogPublisherCfg)config);
-   }
     else
     {
-      ArrayList<Message> messages            = new ArrayList<Message>();
-      messages.add(ERR_CONFIG_LOGGER_INVALID_OBJECTCLASS.
-              get(String.valueOf(config.dn())));
-      boolean           adminActionRequired = false;
+      boolean adminActionRequired = false;
       ResultCode resultCode = ResultCode.UNWILLING_TO_PERFORM;
       return new ConfigChangeResult(resultCode, adminActionRequired, messages);
     }
@@ -192,61 +204,36 @@
   /**
    * {@inheritDoc}
    */
+  @Override
   public boolean isConfigurationDeleteAcceptable(LogPublisherCfg config,
                                               List<Message> unacceptableReasons)
   {
-    if(config instanceof DebugLogPublisherCfg)
+    AbstractLogger instance = getLoggerInstance(config, unacceptableReasons);
+    if (instance != null)
     {
-      return DebugLogger.getInstance().isConfigurationDeleteAcceptable(
-          (DebugLogPublisherCfg)config, unacceptableReasons);
+      return instance.isConfigurationDeleteAcceptable(config,
+          unacceptableReasons);
     }
-   else if(config instanceof AccessLogPublisherCfg)
-   {
-     return AccessLogger.getInstance().isConfigurationDeleteAcceptable(
-         (AccessLogPublisherCfg)config, unacceptableReasons);
-   }
-   else if(config instanceof ErrorLogPublisherCfg)
-   {
-     return ErrorLogger.getInstance().isConfigurationDeleteAcceptable(
-         (ErrorLogPublisherCfg)config, unacceptableReasons);
-   }
-    else
-    {
-      unacceptableReasons.add(ERR_CONFIG_LOGGER_INVALID_OBJECTCLASS.get(
-              String.valueOf(config.dn())));
-      return false;
-    }
+    return false;
   }
 
   /**
    * {@inheritDoc}
    */
+  @Override
   public ConfigChangeResult applyConfigurationDelete(LogPublisherCfg config)
   {
-    if(config instanceof DebugLogPublisherCfg)
+    List<Message> messages = new ArrayList<Message>(1);
+    AbstractLogger instance = getLoggerInstance(config, messages);
+    if (instance != null)
     {
-      return DebugLogger.getInstance().applyConfigurationDelete(
-          (DebugLogPublisherCfg)config);
+      return instance.applyConfigurationDelete(config);
     }
-   else if(config instanceof AccessLogPublisherCfg)
-   {
-     return AccessLogger.getInstance().applyConfigurationDelete(
-         (AccessLogPublisherCfg)config);
-   }
-   else if(config instanceof ErrorLogPublisherCfg)
-   {
-     return ErrorLogger.getInstance().applyConfigurationDelete(
-         (ErrorLogPublisherCfg)config);
-   }
     else
     {
-      ArrayList<Message> messages            = new ArrayList<Message>();
-      messages.add(ERR_CONFIG_LOGGER_INVALID_OBJECTCLASS.get(
-              String.valueOf(config.dn())));
       boolean           adminActionRequired = false;
       ResultCode resultCode = ResultCode.UNWILLING_TO_PERFORM;
       return new ConfigChangeResult(resultCode, adminActionRequired, messages);
     }
   }
 }
-

--
Gitblit v1.10.0