From f8e01cac63c2468e082a77889c3a7b354eb14c8e Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 06 Oct 2015 08:08:53 +0000
Subject: [PATCH] Text*LogPublisher.java: Code cleanup Extracted methods newParallelWriter(), newAsyncWriter(), configure(). In applyConfigurationChange(), rewrote the conditions to make them more readable.

---
 opendj-server-legacy/src/main/java/org/opends/server/loggers/TextAuditLogPublisher.java |  175 ++++++++++++++++++++++-----------------------------------
 1 files changed, 68 insertions(+), 107 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/loggers/TextAuditLogPublisher.java b/opendj-server-legacy/src/main/java/org/opends/server/loggers/TextAuditLogPublisher.java
index e1a25db..5491222 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/loggers/TextAuditLogPublisher.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/loggers/TextAuditLogPublisher.java
@@ -26,8 +26,8 @@
  */
 package org.opends.server.loggers;
 
-import static org.opends.messages.ConfigMessages.*;
 import static org.forgerock.opendj.ldap.ResultCode.*;
+import static org.opends.messages.ConfigMessages.*;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
@@ -36,52 +36,36 @@
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.admin.server.ConfigurationChangeListener;
-import org.opends.server.admin.std.server.FileBasedAuditLogPublisherCfg;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
-import org.opends.server.core.*;
-import org.opends.server.types.*;
 import org.forgerock.opendj.ldap.ByteSequence;
 import org.forgerock.opendj.ldap.ByteString;
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.server.FileBasedAuditLogPublisherCfg;
+import org.opends.server.core.*;
+import org.opends.server.types.*;
 import org.opends.server.util.Base64;
 import org.opends.server.util.StaticUtils;
 import org.opends.server.util.TimeThread;
 
-/**
- * This class provides the implementation of the audit logger used by
- * the directory server.
- */
+/** This class provides the implementation of the audit logger used by the directory server. */
 public final class TextAuditLogPublisher extends
     AbstractTextAccessLogPublisher<FileBasedAuditLogPublisherCfg> implements
     ConfigurationChangeListener<FileBasedAuditLogPublisherCfg>
 {
-
   private TextWriter writer;
   private FileBasedAuditLogPublisherCfg cfg;
 
-  /** {@inheritDoc} */
   @Override
-  public ConfigChangeResult applyConfigurationChange(
-      FileBasedAuditLogPublisherCfg config)
+  public ConfigChangeResult applyConfigurationChange(FileBasedAuditLogPublisherCfg config)
   {
     final ConfigChangeResult ccr = new ConfigChangeResult();
 
-    File logFile = getFileForPath(config.getLogFile());
-    FileNamingPolicy fnPolicy = new TimeStampNaming(logFile);
-
     try
     {
-      FilePermission perm = FilePermission.decodeUNIXMode(config
-          .getLogFilePermissions());
-
-      boolean writerAutoFlush = config.isAutoFlush()
-          && !config.isAsynchronous();
-
-      TextWriter currentWriter;
-      // Determine the writer we are using. If we were writing
-      // asynchronously,
+      // Determine the writer we are using. If we were writing asynchronously,
       // we need to modify the underlying writer.
+      TextWriter currentWriter;
       if (writer instanceof AsynchronousTextWriter)
       {
         currentWriter = ((AsynchronousTextWriter) writer).getWrappedWriter();
@@ -93,43 +77,26 @@
 
       if (currentWriter instanceof MultifileTextWriter)
       {
-        MultifileTextWriter mfWriter = (MultifileTextWriter) currentWriter;
+        final MultifileTextWriter mfWriter = (MultifileTextWriter) currentWriter;
+        configure(mfWriter, config);
 
-        mfWriter.setNamingPolicy(fnPolicy);
-        mfWriter.setFilePermissions(perm);
-        mfWriter.setAppend(config.isAppend());
-        mfWriter.setAutoFlush(writerAutoFlush);
-        mfWriter.setBufferSize((int) config.getBufferSize());
-        mfWriter.setInterval(config.getTimeInterval());
-
-        mfWriter.removeAllRetentionPolicies();
-        mfWriter.removeAllRotationPolicies();
-
-        for (DN dn : config.getRotationPolicyDNs())
+        if (config.isAsynchronous())
         {
-          mfWriter.addRotationPolicy(DirectoryServer.getRotationPolicy(dn));
+          if (!(writer instanceof AsynchronousTextWriter))
+          {
+            // The asynchronous setting is being turned on.
+            writer = newAsyncWriter(mfWriter, config);
+          }
         }
-
-        for (DN dn : config.getRetentionPolicyDNs())
+        else
         {
-          mfWriter.addRetentionPolicy(DirectoryServer.getRetentionPolicy(dn));
-        }
-
-        if (writer instanceof AsynchronousTextWriter
-            && !config.isAsynchronous())
-        {
-          // The asynchronous setting is being turned off.
-          AsynchronousTextWriter asyncWriter = (AsynchronousTextWriter) writer;
-          writer = mfWriter;
-          asyncWriter.shutdown(false);
-        }
-
-        if (!(writer instanceof AsynchronousTextWriter)
-            && config.isAsynchronous())
-        {
-          // The asynchronous setting is being turned on.
-          writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + config.dn(),
-              config.getQueueSize(), config.isAutoFlush(), mfWriter);
+          if (writer instanceof AsynchronousTextWriter)
+          {
+            // The asynchronous setting is being turned off.
+            AsynchronousTextWriter asyncWriter = (AsynchronousTextWriter) writer;
+            writer = mfWriter;
+            asyncWriter.shutdown(false);
+          }
         }
 
         if (cfg.isAsynchronous() && config.isAsynchronous()
@@ -151,9 +118,38 @@
     return ccr;
   }
 
+  private void configure(MultifileTextWriter mfWriter, FileBasedAuditLogPublisherCfg config) throws DirectoryException
+  {
+    final FilePermission perm = FilePermission.decodeUNIXMode(config.getLogFilePermissions());
+    final boolean writerAutoFlush = config.isAutoFlush() && !config.isAsynchronous();
 
+    final File logFile = getLogFile(config);
+    final FileNamingPolicy fnPolicy = new TimeStampNaming(logFile);
 
-  /** {@inheritDoc} */
+    mfWriter.setNamingPolicy(fnPolicy);
+    mfWriter.setFilePermissions(perm);
+    mfWriter.setAppend(config.isAppend());
+    mfWriter.setAutoFlush(writerAutoFlush);
+    mfWriter.setBufferSize((int) config.getBufferSize());
+    mfWriter.setInterval(config.getTimeInterval());
+
+    mfWriter.removeAllRetentionPolicies();
+    mfWriter.removeAllRotationPolicies();
+    for (final DN dn : config.getRotationPolicyDNs())
+    {
+      mfWriter.addRotationPolicy(DirectoryServer.getRotationPolicy(dn));
+    }
+    for (final DN dn : config.getRetentionPolicyDNs())
+    {
+      mfWriter.addRetentionPolicy(DirectoryServer.getRetentionPolicy(dn));
+    }
+  }
+
+  private File getLogFile(final FileBasedAuditLogPublisherCfg config)
+  {
+    return getFileForPath(config.getLogFile());
+  }
+
   @Override
   protected void close0()
   {
@@ -161,26 +157,18 @@
     cfg.removeFileBasedAuditChangeListener(this);
   }
 
-
-
-  /** {@inheritDoc} */
   @Override
   public void initializeLogPublisher(FileBasedAuditLogPublisherCfg cfg, ServerContext serverContext)
       throws ConfigException, InitializationException
   {
-    File logFile = getFileForPath(cfg.getLogFile());
+    File logFile = getLogFile(cfg);
     FileNamingPolicy fnPolicy = new TimeStampNaming(logFile);
 
     try
     {
-      FilePermission perm = FilePermission.decodeUNIXMode(cfg
-          .getLogFilePermissions());
-
-      LogPublisherErrorHandler errorHandler = new LogPublisherErrorHandler(
-          cfg.dn());
-
-      boolean writerAutoFlush = cfg.isAutoFlush()
-          && !cfg.isAsynchronous();
+      final FilePermission perm = FilePermission.decodeUNIXMode(cfg.getLogFilePermissions());
+      final LogPublisherErrorHandler errorHandler = new LogPublisherErrorHandler(cfg.dn());
+      final boolean writerAutoFlush = cfg.isAutoFlush() && !cfg.isAsynchronous();
 
       MultifileTextWriter writer = new MultifileTextWriter("Multifile Text Writer for " + cfg.dn(),
           cfg.getTimeInterval(), fnPolicy, perm, errorHandler, "UTF-8",
@@ -191,7 +179,6 @@
       {
         writer.addRotationPolicy(DirectoryServer.getRotationPolicy(dn));
       }
-
       for (DN dn : cfg.getRetentionPolicyDNs())
       {
         writer.addRetentionPolicy(DirectoryServer.getRetentionPolicy(dn));
@@ -199,8 +186,7 @@
 
       if (cfg.isAsynchronous())
       {
-        this.writer = new AsynchronousTextWriter("Asynchronous Text Writer for " + cfg.dn(),
-            cfg.getQueueSize(), cfg.isAutoFlush(), writer);
+        this.writer = newAsyncWriter(writer, cfg);
       }
       else
       {
@@ -223,9 +209,12 @@
     cfg.addFileBasedAuditChangeListener(this);
   }
 
+  private AsynchronousTextWriter newAsyncWriter(MultifileTextWriter writer, FileBasedAuditLogPublisherCfg cfg)
+  {
+    String name = "Asynchronous Text Writer for " + cfg.dn();
+    return new AsynchronousTextWriter(name, cfg.getQueueSize(), cfg.isAutoFlush(), writer);
+  }
 
-
-  /** {@inheritDoc} */
   @Override
   public boolean isConfigurationAcceptable(
       FileBasedAuditLogPublisherCfg configuration,
@@ -235,9 +224,6 @@
         && isConfigurationChangeAcceptable(configuration, unacceptableReasons);
   }
 
-
-
-  /** {@inheritDoc} */
   @Override
   public boolean isConfigurationChangeAcceptable(
       FileBasedAuditLogPublisherCfg config, List<LocalizableMessage> unacceptableReasons)
@@ -245,12 +231,10 @@
     // Make sure the permission is valid.
     try
     {
-      FilePermission filePerm = FilePermission.decodeUNIXMode(config
-          .getLogFilePermissions());
+      FilePermission filePerm = FilePermission.decodeUNIXMode(config.getLogFilePermissions());
       if (!filePerm.isOwnerWritable())
       {
-        LocalizableMessage message = ERR_CONFIG_LOGGING_INSANE_MODE.get(config
-            .getLogFilePermissions());
+        LocalizableMessage message = ERR_CONFIG_LOGGING_INSANE_MODE.get(config.getLogFilePermissions());
         unacceptableReasons.add(message);
         return false;
       }
@@ -264,9 +248,6 @@
     return true;
   }
 
-
-
-  /** {@inheritDoc} */
   @Override
   public void logAddResponse(AddOperation addOperation)
   {
@@ -300,8 +281,7 @@
       }
     }
 
-    for (List<Attribute> attrList : addOperation.getOperationalAttributes()
-        .values())
+    for (List<Attribute> attrList : addOperation.getOperationalAttributes().values())
     {
       for (Attribute a : attrList)
       {
@@ -312,9 +292,6 @@
     writer.writeRecord(buffer.toString());
   }
 
-
-
-  /** {@inheritDoc} */
   @Override
   public void logDeleteResponse(DeleteOperation deleteOperation)
   {
@@ -336,9 +313,6 @@
     writer.writeRecord(buffer.toString());
   }
 
-
-
-  /** {@inheritDoc} */
   @Override
   public void logModifyDNResponse(ModifyDNOperation modifyDNOperation)
   {
@@ -383,9 +357,6 @@
     writer.writeRecord(buffer.toString());
   }
 
-
-
-  /** {@inheritDoc} */
   @Override
   public void logModifyResponse(ModifyOperation modifyOperation)
   {
@@ -445,8 +416,6 @@
     writer.writeRecord(buffer.toString());
   }
 
-
-
   private void append(StringBuilder buffer, Attribute a)
   {
     for (ByteString v : a)
@@ -458,8 +427,6 @@
     }
   }
 
-
-
   /** Appends the common log header information to the provided buffer. */
   private void appendHeader(Operation operation, StringBuilder buffer)
   {
@@ -472,8 +439,6 @@
     buffer.append(EOL);
   }
 
-
-
   /**
    * Appends the appropriately-encoded attribute value to the provided
    * buffer.
@@ -497,8 +462,6 @@
     }
   }
 
-
-
   /**
    * Appends the appropriately-encoded attribute value to the provided
    * buffer.
@@ -522,8 +485,6 @@
     }
   }
 
-
-
   /** Determines whether the provided operation should be logged. */
   private boolean isLoggable(Operation operation)
   {

--
Gitblit v1.10.0