http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultScriptFileComponentBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultScriptFileComponentBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultScriptFileComponentBuilder.java
index 85fbbe4..c9d50ef 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultScriptFileComponentBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultScriptFileComponentBuilder.java
@@ -34,25 +34,25 @@ class DefaultScriptFileComponentBuilder extends 
DefaultComponentAndConfiguration
     }
 
     @Override
-    public DefaultScriptFileComponentBuilder addLanguage(String language) {
+    public DefaultScriptFileComponentBuilder addLanguage(final String 
language) {
         addAttribute("language", language);
         return this;
     }
 
     @Override
-    public DefaultScriptFileComponentBuilder addIsWatched(boolean isWatched) {
+    public DefaultScriptFileComponentBuilder addIsWatched(final boolean 
isWatched) {
         addAttribute("isWatched", Boolean.toString(isWatched));
         return this;
     }
 
     @Override
-    public DefaultScriptFileComponentBuilder addIsWatched(String isWatched) {
+    public DefaultScriptFileComponentBuilder addIsWatched(final String 
isWatched) {
         addAttribute("isWatched", isWatched);
         return this;
     }
 
     @Override
-    public DefaultScriptFileComponentBuilder addCharset(String charset) {
+    public DefaultScriptFileComponentBuilder addCharset(final String charset) {
         addAttribute("charset", charset);
         return this;
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
index 60d98f0..b29e60b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java
@@ -61,7 +61,7 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
      *
      * @param configurations The List of Configurations to merge.
      */
-    public CompositeConfiguration(List<? extends AbstractConfiguration> 
configurations) {
+    public CompositeConfiguration(final List<? extends AbstractConfiguration> 
configurations) {
         super(ConfigurationSource.NULL_SOURCE);
         rootNode = configurations.get(0).getRootNode();
         this.configurations = configurations;
@@ -167,13 +167,13 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
         return new CompositeConfiguration(configs);
     }
 
-    private void staffChildConfiguration(AbstractConfiguration 
childConfiguration) {
+    private void staffChildConfiguration(final AbstractConfiguration 
childConfiguration) {
         childConfiguration.setPluginManager(pluginManager);
         childConfiguration.setScriptManager(scriptManager);
         childConfiguration.setup();
     }
 
-    private void printNodes(String indent, Node node, StringBuilder sb) {
+    private void printNodes(final String indent, final Node node, final 
StringBuilder sb) {
         sb.append(indent).append(node.getName()).append(" type: 
").append(node.getType()).append("\n");
         sb.append(indent).append(node.getAttributes().toString()).append("\n");
         for (Node child : node.getChildren()) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
index ce38e82..e188efa 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/DefaultMergeStrategy.java
@@ -68,7 +68,7 @@ public class DefaultMergeStrategy implements MergeStrategy {
      * @param configuration The configuration to merge.
      */
     @Override
-    public void mergeRootProperties(Node rootNode, AbstractConfiguration 
configuration) {
+    public void mergeRootProperties(final Node rootNode, final 
AbstractConfiguration configuration) {
         for (Map.Entry<String, String> attribute : 
configuration.getRootNode().getAttributes().entrySet()) {
             boolean isFound = false;
             for (Map.Entry<String, String> targetAttribute : 
rootNode.getAttributes().entrySet()) {
@@ -112,7 +112,7 @@ public class DefaultMergeStrategy implements MergeStrategy {
      * @param pluginManager The PluginManager.
      */
     @Override
-    public void mergConfigurations(Node target, Node source, PluginManager 
pluginManager) {
+    public void mergConfigurations(final Node target, final Node source, final 
PluginManager pluginManager) {
         for (Node sourceChildNode : source.getChildren()) {
             boolean isFilter = isFilterNode(sourceChildNode);
             boolean isMerged = false;
@@ -222,7 +222,7 @@ public class DefaultMergeStrategy implements MergeStrategy {
         }
     }
 
-    private Node getLoggerNode(Node parentNode, String name) {
+    private Node getLoggerNode(final Node parentNode, final String name) {
         for (Node node : parentNode.getChildren()) {
             String nodeName = node.getAttributes().get(NAME);
             if (name == null && nodeName == null) {
@@ -235,8 +235,8 @@ public class DefaultMergeStrategy implements MergeStrategy {
         return null;
     }
 
-    private void updateFilterNode(Node target, Node targetChildNode, Node 
sourceChildNode,
-            PluginManager pluginManager) {
+    private void updateFilterNode(final Node target, final Node 
targetChildNode, final Node sourceChildNode,
+            final PluginManager pluginManager) {
         if 
(CompositeFilter.class.isAssignableFrom(targetChildNode.getType().getPluginClass()))
 {
             Node node = new Node(targetChildNode, sourceChildNode.getName(), 
sourceChildNode.getType());
             node.getChildren().addAll(sourceChildNode.getChildren());
@@ -256,15 +256,15 @@ public class DefaultMergeStrategy implements 
MergeStrategy {
         }
     }
 
-    private boolean isFilterNode(Node node) {
+    private boolean isFilterNode(final Node node) {
         return Filter.class.isAssignableFrom(node.getType().getPluginClass());
     }
 
-    private boolean isSameName(Node node1, Node node2) {
+    private boolean isSameName(final Node node1, final Node node2) {
         return 
node1.getAttributes().get(NAME).toLowerCase().equals(node2.getAttributes().get(NAME).toLowerCase());
     }
 
-    private boolean isSameReference(Node node1, Node node2) {
+    private boolean isSameReference(final Node node1, final Node node2) {
         return 
node1.getAttributes().get(REF).toLowerCase().equals(node2.getAttributes().get(REF).toLowerCase());
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
index 90abf56..a5eaae9 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfiguration.java
@@ -30,7 +30,7 @@ import 
org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
  */
 public class PropertiesConfiguration extends BuiltConfiguration implements 
Reconfigurable {
 
-    public PropertiesConfiguration(ConfigurationSource source, Component root) 
{
+    public PropertiesConfiguration(final ConfigurationSource source, final 
Component root) {
         super(source, root);
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
index 2c70234..66f9bba 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/properties/PropertiesConfigurationBuilder.java
@@ -71,7 +71,7 @@ public class PropertiesConfigurationBuilder extends 
ConfigurationBuilderFactory
         return this;
     }
 
-    public PropertiesConfigurationBuilder 
setConfigurationSource(ConfigurationSource source) {
+    public PropertiesConfigurationBuilder setConfigurationSource(final 
ConfigurationSource source) {
         builder.setConfigurationSource(source);
         return this;
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index ca2c0a0..ea1c12b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -187,7 +187,7 @@ public class XmlConfiguration extends AbstractConfiguration 
implements Reconfigu
      * @return a new DocumentBuilder
      * @throws ParserConfigurationException
      */
-    static DocumentBuilder newDocumentBuilder(boolean xIncludeAware) throws 
ParserConfigurationException {
+    static DocumentBuilder newDocumentBuilder(final boolean xIncludeAware) 
throws ParserConfigurationException {
         final DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance();
         factory.setNamespaceAware(true);
         if (xIncludeAware) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
index 65d8ffa..e68c3d1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
@@ -113,7 +113,7 @@ public final class DynamicThresholdFilter extends 
AbstractFilter {
         return true;
     }
 
-    private Result filter(final Level level, Map<String, String> contextMap) {
+    private Result filter(final Level level, final Map<String, String> 
contextMap) {
         final Object value = contextMap.get(key);
         if (value != null) {
             Level ctxLevel = levelMap.get(value);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
index 69a8a22..d7588a6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
@@ -95,7 +95,7 @@ public class Log4jLogEvent implements LogEvent {
         public Builder() {
         }
 
-        public Builder(LogEvent other) {
+        public Builder(final LogEvent other) {
             Objects.requireNonNull(other);
             if (other instanceof RingBufferLogEvent) {
                 ((RingBufferLogEvent) other).initializeBuilder(this);
@@ -165,52 +165,52 @@ public class Log4jLogEvent implements LogEvent {
             return this;
         }
 
-        public Builder setTimeMillis(long timeMillis) {
+        public Builder setTimeMillis(final long timeMillis) {
             this.timeMillis = timeMillis;
             return this;
         }
 
-        public Builder setThrownProxy(ThrowableProxy thrownProxy) {
+        public Builder setThrownProxy(final ThrowableProxy thrownProxy) {
             this.thrownProxy = thrownProxy;
             return this;
         }
 
-        public Builder setContextMap(Map<String, String> contextMap) {
+        public Builder setContextMap(final Map<String, String> contextMap) {
             this.contextMap = contextMap;
             return this;
         }
 
-        public Builder setContextStack(ThreadContext.ContextStack 
contextStack) {
+        public Builder setContextStack(final ThreadContext.ContextStack 
contextStack) {
             this.contextStack = contextStack;
             return this;
         }
 
-        public Builder setThreadId(long threadId) {
+        public Builder setThreadId(final long threadId) {
             this.threadId = threadId;
             return this;
         }
 
-        public Builder setThreadName(String threadName) {
+        public Builder setThreadName(final String threadName) {
             this.threadName = threadName;
             return this;
         }
 
-        public Builder setThreadPriority(int threadPriority) {
+        public Builder setThreadPriority(final int threadPriority) {
             this.threadPriority = threadPriority;
             return this;
         }
 
-        public Builder setSource(StackTraceElement source) {
+        public Builder setSource(final StackTraceElement source) {
             this.source = source;
             return this;
         }
 
-        public Builder setIncludeLocation(boolean includeLocation) {
+        public Builder setIncludeLocation(final boolean includeLocation) {
             this.includeLocation = includeLocation;
             return this;
         }
 
-        public Builder setEndOfBatch(boolean endOfBatch) {
+        public Builder setEndOfBatch(final boolean endOfBatch) {
             this.endOfBatch = endOfBatch;
             return this;
         }
@@ -221,7 +221,7 @@ public class Log4jLogEvent implements LogEvent {
          *          was created.
          * @return this builder
          */
-        public Builder setNanoTime(long nanoTime) {
+        public Builder setNanoTime(final long nanoTime) {
             this.nanoTime = nanoTime;
             return this;
         }
@@ -374,8 +374,8 @@ public Log4jLogEvent(final String loggerName, final Marker 
marker, final String
      */
     private Log4jLogEvent(final String loggerName, final Marker marker, final 
String loggerFQCN, final Level level,
             final Message message, final Throwable thrown, final 
ThrowableProxy thrownProxy,
-            final Map<String, String> contextMap, final 
ThreadContext.ContextStack contextStack, long threadId,
-            final String threadName, int threadPriority, final 
StackTraceElement source, final long timestampMillis,
+            final Map<String, String> contextMap, final 
ThreadContext.ContextStack contextStack, final long threadId,
+            final String threadName, final int threadPriority, final 
StackTraceElement source, final long timestampMillis,
             final long nanoTime) {
         this.loggerName = loggerName;
         this.marker = marker;
@@ -430,7 +430,7 @@ public Log4jLogEvent(final String loggerName, final Marker 
marker, final String
      *
      * @param nanoClock the {@code NanoClock} to use for creating the nanoTime 
timestamp of log events
      */
-    public static void setNanoClock(NanoClock nanoClock) {
+    public static void setNanoClock(final NanoClock nanoClock) {
         Log4jLogEvent.nanoClock = Objects.requireNonNull(nanoClock, "NanoClock 
must be non-null");
         StatusLogger.getLogger().trace("Using {} for nanosecond timestamps.", 
nanoClock.getClass().getSimpleName());
     }
@@ -696,7 +696,7 @@ public Log4jLogEvent(final String loggerName, final Marker 
marker, final String
      *
      * @return a new immutable copy of the data in this {@code Log4jLogEvent}
      */
-    public static Log4jLogEvent createMemento(LogEvent event, final boolean 
includeLocation) {
+    public static Log4jLogEvent createMemento(final LogEvent event, final 
boolean includeLocation) {
         // TODO implement Log4jLogEvent.createMemento()
         return deserialize(serialize(event, includeLocation));
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
index 6e806af..b89dc04 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
@@ -147,7 +147,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return loggerFqcn;
     }
 
-    public void setLoggerFqcn(String loggerFqcn) {
+    public void setLoggerFqcn(final String loggerFqcn) {
         this.loggerFqcn = loggerFqcn;
     }
 
@@ -156,7 +156,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return marker;
     }
 
-    public void setMarker(Marker marker) {
+    public void setMarker(final Marker marker) {
         this.marker = marker;
     }
 
@@ -168,7 +168,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return level;
     }
 
-    public void setLevel(Level level) {
+    public void setLevel(final Level level) {
         this.level = level;
     }
 
@@ -177,7 +177,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return loggerName;
     }
 
-    public void setLoggerName(String loggerName) {
+    public void setLoggerName(final String loggerName) {
         this.loggerName = loggerName;
     }
 
@@ -291,7 +291,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return thrown;
     }
 
-    public void setThrown(Throwable thrown) {
+    public void setThrown(final Throwable thrown) {
         this.thrown = thrown;
     }
 
@@ -300,7 +300,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return timeMillis;
     }
 
-    public void setTimeMillis(long timeMillis) {
+    public void setTimeMillis(final long timeMillis) {
         this.timeMillis = timeMillis;
     }
 
@@ -338,7 +338,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return contextMap;
     }
 
-    public void setContextMap(Map<String, String> contextMap) {
+    public void setContextMap(final Map<String, String> contextMap) {
         this.contextMap = contextMap;
     }
 
@@ -347,7 +347,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return contextStack;
     }
 
-    public void setContextStack(ThreadContext.ContextStack contextStack) {
+    public void setContextStack(final ThreadContext.ContextStack contextStack) 
{
         this.contextStack = contextStack;
     }
 
@@ -356,7 +356,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return threadId;
     }
 
-    public void setThreadId(long threadId) {
+    public void setThreadId(final long threadId) {
         this.threadId = threadId;
     }
 
@@ -365,7 +365,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return threadName;
     }
 
-    public void setThreadName(String threadName) {
+    public void setThreadName(final String threadName) {
         this.threadName = threadName;
     }
 
@@ -374,7 +374,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return threadPriority;
     }
 
-    public void setThreadPriority(int threadPriority) {
+    public void setThreadPriority(final int threadPriority) {
         this.threadPriority = threadPriority;
     }
 
@@ -384,7 +384,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
     }
 
     @Override
-    public void setIncludeLocation(boolean includeLocation) {
+    public void setIncludeLocation(final boolean includeLocation) {
         this.includeLocation = includeLocation;
     }
 
@@ -394,7 +394,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
     }
 
     @Override
-    public void setEndOfBatch(boolean endOfBatch) {
+    public void setEndOfBatch(final boolean endOfBatch) {
         this.endOfBatch = endOfBatch;
     }
 
@@ -403,7 +403,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
         return nanoTime;
     }
 
-    public void setNanoTime(long nanoTime) {
+    public void setNanoTime(final long nanoTime) {
         this.nanoTime = nanoTime;
     }
 
@@ -433,7 +433,7 @@ public class MutableLogEvent implements LogEvent, 
ReusableMessage {
      * Initializes the specified {@code Log4jLogEvent.Builder} from this 
{@code MutableLogEvent}.
      * @param builder the builder whose fields to populate
      */
-    public void initializeBuilder(Log4jLogEvent.Builder builder) {
+    public void initializeBuilder(final Log4jLogEvent.Builder builder) {
         builder.setContextMap(contextMap) //
                 .setContextStack(contextStack) //
                 .setEndOfBatch(endOfBatch) //

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
index 6694943..4d4e761 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/AbstractStringLayout.java
@@ -207,7 +207,7 @@ public abstract class AbstractStringLayout extends 
AbstractLayout<String> implem
         return headerSerializer;
     }
 
-    protected byte[] serializeToBytes(final Serializer serializer, byte[] 
defaultValue) {
+    protected byte[] serializeToBytes(final Serializer serializer, final 
byte[] defaultValue) {
         final String serializable = serializeToString(serializer);
         if (serializer == null) {
             return defaultValue;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
index 7db739e..b679fcd 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/GelfLayout.java
@@ -107,7 +107,7 @@ public final class GelfLayout extends AbstractStringLayout {
     private final boolean includeStacktrace;
 
     public GelfLayout(final String host, final KeyValuePair[] 
additionalFields, final CompressionType compressionType,
-                      final int compressionThreshold, boolean 
includeStacktrace) {
+                      final int compressionThreshold, final boolean 
includeStacktrace) {
         super(StandardCharsets.UTF_8);
         this.host = host;
         this.additionalFields = additionalFields;
@@ -182,7 +182,7 @@ public final class GelfLayout extends AbstractStringLayout {
         return text.toString();
     }
 
-    private StringBuilder toText(LogEvent event, StringBuilder builder, 
boolean gcFree) {
+    private StringBuilder toText(final LogEvent event, final StringBuilder 
builder, final boolean gcFree) {
         builder.append('{');
         builder.append("\"version\":\"1.1\",");
         builder.append("\"host\":\"");

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JacksonFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JacksonFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JacksonFactory.java
index 5869435..e230119 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JacksonFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/JacksonFactory.java
@@ -163,12 +163,12 @@ abstract class JacksonFactory {
 
         private static final long serialVersionUID = 1L;
 
-        Log4jXmlPrettyPrinter(int nesting) {
+        Log4jXmlPrettyPrinter(final int nesting) {
             _nesting = nesting;
         }
 
         @Override
-        public void writePrologLinefeed(XMLStreamWriter2 sw) throws 
XMLStreamException {
+        public void writePrologLinefeed(final XMLStreamWriter2 sw) throws 
XMLStreamException {
             // nothing
         }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
index 383f0ed..1a98313 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/MarkerPatternSelector.java
@@ -74,7 +74,7 @@ public class MarkerPatternSelector implements PatternSelector 
{
     }
 
     @Override
-    public PatternFormatter[] getFormatters(LogEvent event) {
+    public PatternFormatter[] getFormatters(final LogEvent event) {
         Marker marker = event.getMarker();
         if (marker == null) {
             return defaultFormatters;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ScriptPatternSelector.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ScriptPatternSelector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ScriptPatternSelector.java
index 6a02c46..01ade28 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ScriptPatternSelector.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/ScriptPatternSelector.java
@@ -83,7 +83,7 @@ public class ScriptPatternSelector implements PatternSelector 
{
     }
 
     @Override
-    public PatternFormatter[] getFormatters(LogEvent event) {
+    public PatternFormatter[] getFormatters(final LogEvent event) {
         SimpleBindings bindings = new SimpleBindings();
         bindings.putAll(configuration.getProperties());
         bindings.put("substitutor", configuration.getStrSubstitutor());
@@ -99,7 +99,7 @@ public class ScriptPatternSelector implements PatternSelector 
{
 
 
     @PluginFactory
-    public static ScriptPatternSelector 
createSelector(@PluginElement("Script") AbstractScript script,
+    public static ScriptPatternSelector 
createSelector(@PluginElement("Script") final AbstractScript script,
                                                        
@PluginElement("PatternMatch") final PatternMatch[] properties,
                                                        
@PluginAttribute("defaultPattern") String defaultPattern,
                                                        @PluginAttribute(value 
= "alwaysWriteExceptions", defaultBoolean = true) final boolean 
alwaysWriteExceptions,

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
index 7d27830..8778acb 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/TextEncoderHelper.java
@@ -130,7 +130,7 @@ public class TextEncoderHelper {
         return temp;
     }
 
-    private static ByteBuffer drainIfByteBufferFull(ByteBufferDestination 
destination, ByteBuffer temp, CoderResult result) {
+    private static ByteBuffer drainIfByteBufferFull(final 
ByteBufferDestination destination, ByteBuffer temp, final CoderResult result) {
         if (result.isOverflow()) { // byte buffer full
 
             // SHOULD NOT HAPPEN:

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index 6683f1d..a6bbad8 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -67,7 +67,7 @@ public class SmtpManager extends AbstractManager {
 
     private final FactoryData data;
 
-    private static MimeMessage createMimeMessage(final FactoryData data, final 
Session session, LogEvent appendEvent)
+    private static MimeMessage createMimeMessage(final FactoryData data, final 
Session session, final LogEvent appendEvent)
             throws MessagingException {
         return new 
MimeMessageBuilder(session).setFrom(data.from).setReplyTo(data.replyto)
                 .setRecipients(Message.RecipientType.TO, 
data.to).setRecipients(Message.RecipientType.CC, data.cc)
@@ -295,7 +295,7 @@ public class SmtpManager extends AbstractManager {
         }
     }
 
-    private synchronized void connect(LogEvent appendEvent) {
+    private synchronized void connect(final LogEvent appendEvent) {
         if (message != null) {
             return;
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
index d518aee..4d83d97 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/TcpSocketManager.java
@@ -116,7 +116,7 @@ public class TcpSocketManager extends AbstractSocketManager 
{
     }
 
     @Override
-    protected void write(final byte[] bytes, final int offset, final int 
length, boolean immediateFlush)  {
+    protected void write(final byte[] bytes, final int offset, final int 
length, final boolean immediateFlush)  {
         if (socket == null) {
             if (connector != null && !immediateFail) {
                 connector.latch();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
index bb8464c..d4a2310 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/EqualsReplacementConverter.java
@@ -77,7 +77,7 @@ public final class EqualsReplacementConverter extends 
LogEventPatternConverter {
      * @param parser       The PatternParser.
      */
     private EqualsReplacementConverter(final List<PatternFormatter> 
formatters, final String testString,
-                                       final String substitution, 
PatternParser parser) {
+                                       final String substitution, final 
PatternParser parser) {
         super("equals", "equals");
         this.testString = testString;
         this.substitution = substitution;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
index a59cc5f..bc114f1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
@@ -226,7 +226,7 @@ public abstract class NameAbbreviator {
             }
         }
 
-        private void abbreviateForDrop(String original, StringBuilder 
destination) {
+        private void abbreviateForDrop(final String original, final 
StringBuilder destination) {
             // If a path does not contain enough path elements to drop, none 
will be dropped.
             int start = 0;
             int nextStart = 0;
@@ -242,7 +242,7 @@ public abstract class NameAbbreviator {
             destination.append(original, start, original.length());
         }
 
-        private void abbreviateForRetain(String original, StringBuilder 
destination) {
+        private void abbreviateForRetain(final String original, final 
StringBuilder destination) {
             // We subtract 1 from 'len' when assigning to 'end' to avoid out of
             // bounds exception in return r.substring(end+1, len). This can 
happen if
             // precision is 1 and the category name ends with a dot.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
index 3f0c1da..0eff8df 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/Script.java
@@ -32,7 +32,7 @@ public class Script extends AbstractScript {
 
     private static final Logger logger = StatusLogger.getLogger();
 
-    public Script(String name, String language, String scriptText) {
+    public Script(final String name, final String language, final String 
scriptText) {
         super(name, language, scriptText);
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
index f2fe085..31f11d9 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptFile.java
@@ -48,7 +48,7 @@ public class ScriptFile extends AbstractScript {
     private final boolean isWatched;
 
 
-    public ScriptFile(String name, Path filePath, String language, boolean 
isWatched, String scriptText) {
+    public ScriptFile(final String name, final Path filePath, final String 
language, final boolean isWatched, final String scriptText) {
         super(name, language, scriptText);
         this.filePath = filePath;
         this.isWatched = isWatched;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
index ff73662..1cad47c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptManager.java
@@ -52,7 +52,7 @@ public class ScriptManager implements FileWatcher, 
Serializable {
     private final WatchManager watchManager;
     private static final SecurityManager SECURITY_MANAGER = 
System.getSecurityManager();
 
-    public ScriptManager(WatchManager watchManager) {
+    public ScriptManager(final WatchManager watchManager) {
         this.watchManager = watchManager;
         final List<ScriptEngineFactory> factories = 
manager.getEngineFactories();
         if (logger.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
index 0ace830..d70da09 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/script/ScriptRef.java
@@ -34,7 +34,7 @@ public class ScriptRef extends AbstractScript {
     private static final Logger logger = StatusLogger.getLogger();
     private final ScriptManager scriptManager;
 
-    public ScriptRef(String name, ScriptManager scriptManager) {
+    public ScriptRef(final String name, final ScriptManager scriptManager) {
         super(name, null, null);
         this.scriptManager = scriptManager;
     }
@@ -56,7 +56,7 @@ public class ScriptRef extends AbstractScript {
     public static ScriptRef createReference(
             // @formatter:off
             @PluginAttribute("ref") final String name,
-            @PluginConfiguration Configuration configuration) {
+            @PluginConfiguration final Configuration configuration) {
             // @formatter:on
         if (name == null) {
             logger.error("No script name provided");

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
index dbb5a9d..2c0bfe4 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/CronExpression.java
@@ -262,7 +262,7 @@ public final class CronExpression {
      * @throws java.text.ParseException if the string expression cannot be 
parsed into a valid
      *                                  <CODE>CronExpression</CODE>
      */
-    public CronExpression(String cronExpression) throws ParseException {
+    public CronExpression(final String cronExpression) throws ParseException {
         if (cronExpression == null) {
             throw new IllegalArgumentException("cronExpression cannot be 
null");
         }
@@ -281,7 +281,7 @@ public final class CronExpression {
      * @return a boolean indicating whether the given date satisfies the cron
      * expression
      */
-    public boolean isSatisfiedBy(Date date) {
+    public boolean isSatisfiedBy(final Date date) {
         Calendar testDateCal = Calendar.getInstance(getTimeZone());
         testDateCal.setTime(date);
         testDateCal.set(Calendar.MILLISECOND, 0);
@@ -302,7 +302,7 @@ public final class CronExpression {
      *             date/time
      * @return the next valid date/time
      */
-    public Date getNextValidTimeAfter(Date date) {
+    public Date getNextValidTimeAfter(final Date date) {
         return getTimeAfter(date);
     }
 
@@ -314,7 +314,7 @@ public final class CronExpression {
      *             invalid date/time
      * @return the next valid date/time
      */
-    public Date getNextInvalidTimeAfter(Date date) {
+    public Date getNextInvalidTimeAfter(final Date date) {
         long difference = 1000;
 
         //move back to the nearest second so differences will be accurate
@@ -362,7 +362,7 @@ public final class CronExpression {
      * Sets the time zone for which  this <code>CronExpression</code>
      * will be resolved.
      */
-    public void setTimeZone(TimeZone timeZone) {
+    public void setTimeZone(final TimeZone timeZone) {
         this.timeZone = timeZone;
     }
 
@@ -384,7 +384,7 @@ public final class CronExpression {
      * @return a boolean indicating whether the given expression is a valid 
cron
      * expression
      */
-    public static boolean isValidExpression(String cronExpression) {
+    public static boolean isValidExpression(final String cronExpression) {
 
         try {
             new CronExpression(cronExpression);
@@ -395,7 +395,7 @@ public final class CronExpression {
         return true;
     }
 
-    public static void validateExpression(String cronExpression) throws 
ParseException {
+    public static void validateExpression(final String cronExpression) throws 
ParseException {
 
         new CronExpression(cronExpression);
     }
@@ -407,7 +407,7 @@ public final class CronExpression {
     //
     
////////////////////////////////////////////////////////////////////////////
 
-    protected void buildExpression(String expression) throws ParseException {
+    protected void buildExpression(final String expression) throws 
ParseException {
         expressionParsed = true;
 
         try {
@@ -493,7 +493,7 @@ public final class CronExpression {
         }
     }
 
-    protected int storeExpressionVals(int pos, String s, int type)
+    protected int storeExpressionVals(final int pos, final String s, final int 
type)
             throws ParseException {
 
         int incr = 0;
@@ -684,7 +684,7 @@ public final class CronExpression {
         return i;
     }
 
-    protected int checkNext(int pos, String s, int val, int type)
+    protected int checkNext(final int pos, final String s, final int val, 
final int type)
             throws ParseException {
 
         int end = -1;
@@ -861,7 +861,7 @@ public final class CronExpression {
         return buf.toString();
     }
 
-    protected String getExpressionSetSummary(java.util.Set<Integer> set) {
+    protected String getExpressionSetSummary(final java.util.Set<Integer> set) 
{
 
         if (set.contains(NO_SPEC)) {
             return "?";
@@ -887,7 +887,7 @@ public final class CronExpression {
         return buf.toString();
     }
 
-    protected String getExpressionSetSummary(java.util.ArrayList<Integer> 
list) {
+    protected String getExpressionSetSummary(final 
java.util.ArrayList<Integer> list) {
 
         if (list.contains(NO_SPEC)) {
             return "?";
@@ -913,7 +913,7 @@ public final class CronExpression {
         return buf.toString();
     }
 
-    protected int skipWhiteSpace(int i, String s) {
+    protected int skipWhiteSpace(int i, final String s) {
         for (; i < s.length() && (s.charAt(i) == ' ' || s.charAt(i) == '\t'); 
i++) {
             ;
         }
@@ -921,7 +921,7 @@ public final class CronExpression {
         return i;
     }
 
-    protected int findNextWhiteSpace(int i, String s) {
+    protected int findNextWhiteSpace(int i, final String s) {
         for (; i < s.length() && (s.charAt(i) != ' ' || s.charAt(i) != '\t'); 
i++) {
             ;
         }
@@ -929,7 +929,7 @@ public final class CronExpression {
         return i;
     }
 
-    protected void addToSet(int val, int end, int incr, int type)
+    protected void addToSet(final int val, final int end, int incr, final int 
type)
             throws ParseException {
 
         TreeSet<Integer> set = getSet(type);
@@ -1076,7 +1076,7 @@ public final class CronExpression {
         }
     }
 
-    TreeSet<Integer> getSet(int type) {
+    TreeSet<Integer> getSet(final int type) {
         switch (type) {
             case SECOND:
                 return seconds;
@@ -1097,7 +1097,7 @@ public final class CronExpression {
         }
     }
 
-    protected ValueSet getValue(int v, String s, int i) {
+    protected ValueSet getValue(final int v, final String s, int i) {
         char c = s.charAt(i);
         StringBuilder s1 = new StringBuilder(String.valueOf(v));
         while (c >= '0' && c <= '9') {
@@ -1115,13 +1115,13 @@ public final class CronExpression {
         return val;
     }
 
-    protected int getNumericValue(String s, int i) {
+    protected int getNumericValue(final String s, final int i) {
         int endOfVal = findNextWhiteSpace(i, s);
         String val = s.substring(i, endOfVal);
         return Integer.parseInt(val);
     }
 
-    protected int getMonthNumber(String s) {
+    protected int getMonthNumber(final String s) {
         Integer integer = monthMap.get(s);
 
         if (integer == null) {
@@ -1131,7 +1131,7 @@ public final class CronExpression {
         return integer;
     }
 
-    protected int getDayOfWeekNumber(String s) {
+    protected int getDayOfWeekNumber(final String s) {
         Integer integer = dayMap.get(s);
 
         if (integer == null) {
@@ -1558,7 +1558,7 @@ public final class CronExpression {
      * @param cal  the calendar to operate on
      * @param hour the hour to set
      */
-    protected void setCalendarHour(Calendar cal, int hour) {
+    protected void setCalendarHour(final Calendar cal, final int hour) {
         cal.set(java.util.Calendar.HOUR_OF_DAY, hour);
         if (cal.get(java.util.Calendar.HOUR_OF_DAY) != hour && hour != 24) {
             cal.set(java.util.Calendar.HOUR_OF_DAY, hour + 1);
@@ -1569,7 +1569,7 @@ public final class CronExpression {
      * NOT YET IMPLEMENTED: Returns the time before the given time
      * that the <code>CronExpression</code> matches.
      */
-    public Date getTimeBefore(Date endTime) {
+    public Date getTimeBefore(final Date endTime) {
         // FUTURE_TODO: implement QUARTZ-423
         return null;
     }
@@ -1583,11 +1583,11 @@ public final class CronExpression {
         return null;
     }
 
-    protected boolean isLeapYear(int year) {
+    protected boolean isLeapYear(final int year) {
         return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
     }
 
-    protected int getLastDayOfMonth(int monthNum, int year) {
+    protected int getLastDayOfMonth(final int monthNum, final int year) {
 
         switch (monthNum) {
             case 1:

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DummyNanoClock.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DummyNanoClock.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DummyNanoClock.java
index 8200c38..e3d6c2b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DummyNanoClock.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/DummyNanoClock.java
@@ -1,48 +1,48 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.util;
-
-/**
- * Implementation of the {@code NanoClock} interface that always returns a 
fixed value.
- */
-public final class DummyNanoClock implements NanoClock {
-
-    private final long fixedNanoTime;
-
-    public DummyNanoClock() {
-        this(0L);
-    }
-
-    /**
-     * Constructs a new DummyNanoClock with the specified value to return.
-     * @param fixedNanoTime the value to return from {@link #nanoTime()}.
-     */
-    public DummyNanoClock(long fixedNanoTime) {
-        this.fixedNanoTime = fixedNanoTime;
-    }
-
-    /**
-     * Returns the constructor value.
-     * 
-     * @return the constructor value
-     */
-    @Override
-    public long nanoTime() {
-        return fixedNanoTime;
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.util;
+
+/**
+ * Implementation of the {@code NanoClock} interface that always returns a 
fixed value.
+ */
+public final class DummyNanoClock implements NanoClock {
+
+    private final long fixedNanoTime;
+
+    public DummyNanoClock() {
+        this(0L);
+    }
+
+    /**
+     * Constructs a new DummyNanoClock with the specified value to return.
+     * @param fixedNanoTime the value to return from {@link #nanoTime()}.
+     */
+    public DummyNanoClock(final long fixedNanoTime) {
+        this.fixedNanoTime = fixedNanoTime;
+    }
+
+    /**
+     * Returns the constructor value.
+     * 
+     * @return the constructor value
+     */
+    @Override
+    public long nanoTime() {
+        return fixedNanoTime;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ExtensionLanguageMapping.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ExtensionLanguageMapping.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ExtensionLanguageMapping.java
index c3442ee..22c005b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ExtensionLanguageMapping.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/ExtensionLanguageMapping.java
@@ -36,7 +36,7 @@ public enum ExtensionLanguageMapping {
     private final String extension;
     private final String language;
 
-    ExtensionLanguageMapping(String extension, String language) {
+    ExtensionLanguageMapping(final String extension, final String language) {
         this.extension = extension;
         this.language = language;
     }
@@ -49,7 +49,7 @@ public enum ExtensionLanguageMapping {
         return this.language;
     }
 
-    public static ExtensionLanguageMapping getByExtension(String extension) {
+    public static ExtensionLanguageMapping getByExtension(final String 
extension) {
         for (final ExtensionLanguageMapping mapping : values()) {
             if (mapping.extension.equals(extension)) {
                 return mapping;
@@ -58,7 +58,7 @@ public enum ExtensionLanguageMapping {
         return null;
     }
 
-    public static List<ExtensionLanguageMapping> getByLanguage(String 
language) {
+    public static List<ExtensionLanguageMapping> getByLanguage(final String 
language) {
         final List<ExtensionLanguageMapping> list = new ArrayList<>();
         for (final ExtensionLanguageMapping mapping : values()) {
             if (mapping.language.equals(language)) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
index ad675ed..258773f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/FileUtils.java
@@ -93,7 +93,7 @@ public final class FileUtils {
         return url != null && (url.getProtocol().equals(PROTOCOL_FILE) || 
url.getProtocol().equals(JBOSS_FILE));
     }
 
-    public static String getFileExtension(File file) {
+    public static String getFileExtension(final File file) {
         String fileName = file.getName();
         if (fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) 
{
             return fileName.substring(fileName.lastIndexOf(".") + 1);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/JsonUtils.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/JsonUtils.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/JsonUtils.java
index bca5417..685d12f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/JsonUtils.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/JsonUtils.java
@@ -46,7 +46,7 @@ public final class JsonUtils {
     /**
      * Quote text contents using JSON standard quoting, and append results to 
a supplied {@link StringBuilder}.
      */
-    public static void quoteAsString(CharSequence input, StringBuilder output) 
{
+    public static void quoteAsString(final CharSequence input, final 
StringBuilder output) {
         final char[] qbuf = getQBuf();
         final int[] escCodes = CharTypes.get7BitOutputEscapes();
         final int escCodeCount = escCodes.length;
@@ -77,7 +77,7 @@ public final class JsonUtils {
         }
     }
 
-    private static int _appendNumeric(int value, char[] qbuf) {
+    private static int _appendNumeric(final int value, final char[] qbuf) {
         qbuf[1] = 'u';
         // We know it's a control char, so only the last 2 chars are non-0
         qbuf[4] = HC[value >> 4];
@@ -85,7 +85,7 @@ public final class JsonUtils {
         return 6;
     }
 
-    private static int _appendNamed(int esc, char[] qbuf) {
+    private static int _appendNamed(final int esc, final char[] qbuf) {
         qbuf[1] = (char) esc;
         return 2;
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
index a2011cb..a9c3548 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/StringEncoder.java
@@ -59,7 +59,7 @@ public final class StringEncoder {
      * @return the encoded String
      * @see <a 
href="https://issues.apache.org/jira/browse/LOG4J2-1151";>LOG4J2-1151</a>
      */
-    public static byte[] encodeSingleByteChars(CharSequence s) {
+    public static byte[] encodeSingleByteChars(final CharSequence s) {
         final int length = s.length();
         final byte[] result = new byte[length];
         encodeString(s, 0, length, result);
@@ -71,7 +71,7 @@ public final class StringEncoder {
      * Implementation note: this is the fast path. If the char array contains 
only ISO-8859-1 characters, all the work
      * will be done here.
      */
-    public static int encodeIsoChars(CharSequence charArray, int charIndex, 
byte[] byteArray, int byteIndex, int length) {
+    public static int encodeIsoChars(final CharSequence charArray, int 
charIndex, final byte[] byteArray, int byteIndex, final int length) {
         int i = 0;
         for (; i < length; i++) {
             char c = charArray.charAt(charIndex++);
@@ -84,7 +84,7 @@ public final class StringEncoder {
     }
 
     // LOG4J2-1151
-    public static int encodeString(CharSequence charArray, int charOffset, int 
charLength, byte[] byteArray) {
+    public static int encodeString(final CharSequence charArray, int 
charOffset, int charLength, final byte[] byteArray) {
         int byteOffset = 0;
         int length = Math.min(charLength, byteArray.length);
         int charDoneIndex = charOffset + length;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
index 146bff7..746c2d5 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/WatchManager.java
@@ -40,11 +40,11 @@ public class WatchManager extends AbstractLifeCycle {
     private ScheduledFuture<?> future;
     private final ConfigurationScheduler scheduler;
 
-    public WatchManager(ConfigurationScheduler scheduler) {
+    public WatchManager(final ConfigurationScheduler scheduler) {
         this.scheduler = scheduler;
     }
 
-    public void setIntervalSeconds(int intervalSeconds) {
+    public void setIntervalSeconds(final int intervalSeconds) {
         if (!isStarted()) {
             if (this.intervalSeconds > 0 && intervalSeconds == 0) {
                 scheduler.decrementScheduledItems();
@@ -74,7 +74,7 @@ public class WatchManager extends AbstractLifeCycle {
         super.stop();
     }
 
-    public void watchFile(File file, FileWatcher watcher) {
+    public void watchFile(final File file, final FileWatcher watcher) {
         watchers.put(file, new FileMonitor(file.lastModified(), watcher));
 
     }
@@ -103,7 +103,7 @@ public class WatchManager extends AbstractLifeCycle {
             }
         }
 
-        private boolean fileModified(FileMonitor fileMonitor, long 
lastModfied) {
+        private boolean fileModified(final FileMonitor fileMonitor, final long 
lastModfied) {
             return lastModfied != fileMonitor.lastModified;
         }
     }
@@ -112,7 +112,7 @@ public class WatchManager extends AbstractLifeCycle {
         private final FileWatcher fileWatcher;
         private long lastModified;
 
-        public FileMonitor(long lastModified, FileWatcher fileWatcher) {
+        public FileMonitor(final long lastModified, final FileWatcher 
fileWatcher) {
             this.fileWatcher = fileWatcher;
             this.lastModified = lastModified;
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7a5dcd43/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index 631d334..e36bba1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -1,343 +1,343 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-
-package org.apache.logging.log4j.core.util.datetime;
-
-import java.util.Calendar;
-import java.util.Objects;
-
-/**
- * Custom time formatter that trades flexibility for performance. This 
formatter only supports the date patterns defined
- * in {@link FixedFormat}. For any other date patterns use {@link 
FastDateFormat}.
- * <p>
- * Related benchmarks: 
/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
 and
- * 
/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadsafeDateFormatBenchmark.java
- */
-public class FixedDateFormat {
-    /**
-     * Enumeration over the supported date/time format patterns.
-     * <p>
-     * Package protected for unit tests.
-     */
-    public enum FixedFormat {
-        /**
-         * ABSOLUTE time format: {@code "HH:mm:ss,SSS"}.
-         */
-        ABSOLUTE("HH:mm:ss,SSS", null, 0, ':', 1, ',', 1),
-
-        /**
-         * ABSOLUTE time format variation with period separator: {@code 
"HH:mm:ss.SSS"}.
-         */
-        ABSOLUTE_PERIOD("HH:mm:ss.SSS", null, 0, ':', 1, '.', 1),
-
-        /**
-         * COMPACT time format: {@code "yyyyMMddHHmmssSSS"}.
-         */
-        COMPACT("yyyyMMddHHmmssSSS", "yyyyMMdd", 0, ' ', 0, ' ', 0),
-
-        /**
-         * DATE_AND_TIME time format: {@code "dd MMM yyyy HH:mm:ss,SSS"}.
-         */
-        DATE("dd MMM yyyy HH:mm:ss,SSS", "dd MMM yyyy ", 0, ':', 1, ',', 1),
-
-        /**
-         * DATE_AND_TIME time format variation with period separator: {@code 
"dd MMM yyyy HH:mm:ss.SSS"}.
-         */
-        DATE_PERIOD("dd MMM yyyy HH:mm:ss.SSS", "dd MMM yyyy ", 0, ':', 1, 
'.', 1),
-
-        /**
-         * DEFAULT time format: {@code "yyyy-MM-dd HH:mm:ss,SSS"}.
-         */
-        DEFAULT("yyyy-MM-dd HH:mm:ss,SSS", "yyyy-MM-dd ", 0, ':', 1, ',', 1),
-
-        /**
-         * DEFAULT time format variation with period separator: {@code 
"yyyy-MM-dd HH:mm:ss.SSS"}.
-         */
-        DEFAULT_PERIOD("yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd ", 0, ':', 1, 
'.', 1),
-
-        /**
-         * ISO8601_BASIC time format: {@code "yyyyMMdd'T'HHmmss,SSS"}.
-         */
-        ISO8601_BASIC("yyyyMMdd'T'HHmmss,SSS", "yyyyMMdd'T'", 2, ' ', 0, ',', 
1),
-
-        /**
-         * ISO8601 time format: {@code "yyyy-MM-dd'T'HH:mm:ss,SSS"}.
-         */
-        ISO8601("yyyy-MM-dd'T'HH:mm:ss,SSS", "yyyy-MM-dd'T'", 2, ':', 1, ',', 
1);
-
-        private final String pattern;
-        private final String datePattern;
-        private final int escapeCount;
-        private final char timeSeparatorChar;
-        private final int timeSeparatorLength;
-        private final char millisSeparatorChar;
-        private final int millisSeparatorLength;
-
-        FixedFormat(final String pattern, final String datePattern, final int 
escapeCount, final char timeSeparator,
-                    final int timeSepLength, final char millisSeparator, final 
int millisSepLength) {
-            this.timeSeparatorChar = timeSeparator;
-            this.timeSeparatorLength = timeSepLength;
-            this.millisSeparatorChar = millisSeparator;
-            this.millisSeparatorLength = millisSepLength;
-            this.pattern = Objects.requireNonNull(pattern);
-            this.datePattern = datePattern; // may be null
-            this.escapeCount = escapeCount;
-        }
-
-        /**
-         * Returns the full pattern.
-         *
-         * @return the full pattern
-         */
-        public String getPattern() {
-            return pattern;
-        }
-
-        /**
-         * Returns the date part of the pattern.
-         *
-         * @return the date part of the pattern
-         */
-        public String getDatePattern() {
-            return datePattern;
-        }
-
-        /**
-         * Returns the FixedFormat with the name or pattern matching the 
specified string or {@code null} if not found.
-         *
-         * @param nameOrPattern the name or pattern to find a FixedFormat for
-         * @return the FixedFormat with the name or pattern matching the 
specified string
-         */
-        public static FixedFormat lookup(final String nameOrPattern) {
-            for (final FixedFormat type : FixedFormat.values()) {
-                if (type.name().equals(nameOrPattern) || 
type.getPattern().equals(nameOrPattern)) {
-                    return type;
-                }
-            }
-            return null;
-        }
-
-        /**
-         * Returns the length of the resulting formatted date and time strings.
-         *
-         * @return the length of the resulting formatted date and time strings
-         */
-        public int getLength() {
-            return pattern.length() - escapeCount;
-        }
-
-        /**
-         * Returns the length of the date part of the resulting formatted 
string.
-         *
-         * @return the length of the date part of the resulting formatted 
string
-         */
-        public int getDatePatternLength() {
-            return getDatePattern() == null ? 0 : getDatePattern().length() - 
escapeCount;
-        }
-
-        /**
-         * Returns the {@code FastDateFormat} object for formatting the date 
part of the pattern or {@code null} if the
-         * pattern does not have a date part.
-         *
-         * @return the {@code FastDateFormat} object for formatting the date 
part of the pattern or {@code null}
-         */
-        public FastDateFormat getFastDateFormat() {
-            return getDatePattern() == null ? null : 
FastDateFormat.getInstance(getDatePattern());
-        }
-    }
-
-    private final FixedFormat fixedFormat;
-    private final int length;
-    private final FastDateFormat fastDateFormat; // may be null
-    private final char timeSeparatorChar;
-    private final char millisSeparatorChar;
-    private final int timeSeparatorLength;
-    private final int millisSeparatorLength;
-
-    private volatile long midnightToday = 0;
-    private volatile long midnightTomorrow = 0;
-    // cachedDate does not need to be volatile because
-    // there is a write to a volatile field *after* cachedDate is modified,
-    // and there is a read from a volatile field *before* cachedDate is read.
-    // The Java memory model guarantees that because of the above,
-    // changes to cachedDate in one thread are visible to other threads.
-    // See http://g.oswego.edu/dl/jmm/cookbook.html
-    private char[] cachedDate; // may be null
-    private int dateLength;
-
-    /**
-     * Constructs a FixedDateFormat for the specified fixed format.
-     * <p>
-     * Package protected for unit tests.
-     *
-     * @param fixedFormat the fixed format
-     */
-    FixedDateFormat(final FixedFormat fixedFormat) {
-        this.fixedFormat = Objects.requireNonNull(fixedFormat);
-        this.timeSeparatorChar = fixedFormat.timeSeparatorChar;
-        this.timeSeparatorLength = fixedFormat.timeSeparatorLength;
-        this.millisSeparatorChar = fixedFormat.millisSeparatorChar;
-        this.millisSeparatorLength = fixedFormat.millisSeparatorLength;
-        this.length = fixedFormat.getLength();
-        this.fastDateFormat = fixedFormat.getFastDateFormat();
-    }
-
-    public static FixedDateFormat createIfSupported(final String... options) {
-        if (options == null || options.length == 0 || options[0] == null) {
-            return new FixedDateFormat(FixedFormat.DEFAULT);
-        }
-        if (options.length > 1) {
-            return null; // time zone not supported
-        }
-        final FixedFormat type = FixedFormat.lookup(options[0]);
-        return type == null ? null : new FixedDateFormat(type);
-    }
-
-    /**
-     * Returns a new {@code FixedDateFormat} object for the specified {@code 
FixedFormat} and a {@code null} TimeZone.
-     *
-     * @param format the format to use
-     * @return a new {@code FixedDateFormat} object
-     */
-    public static FixedDateFormat create(FixedFormat format) {
-        return new FixedDateFormat(format);
-    }
-
-    /**
-     * Returns the full pattern of the selected fixed format.
-     *
-     * @return the full date-time pattern
-     */
-    public String getFormat() {
-        return fixedFormat.getPattern();
-    }
-
-    // Profiling showed this method is important to log4j performance. Modify 
with care!
-    // 30 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
-    private long millisSinceMidnight(final long now) {
-        if (now >= midnightTomorrow || now < midnightToday) {
-            updateMidnightMillis(now);
-        }
-        return now - midnightToday;
-    }
-
-    private void updateMidnightMillis(final long now) {
-
-        updateCachedDate(now);
-
-        midnightToday = calcMidnightMillis(now, 0);
-        midnightTomorrow = calcMidnightMillis(now, 1);
-    }
-
-    static long calcMidnightMillis(final long time, final int addDays) {
-        final Calendar cal = Calendar.getInstance();
-        cal.setTimeInMillis(time);
-        cal.set(Calendar.HOUR_OF_DAY, 0);
-        cal.set(Calendar.MINUTE, 0);
-        cal.set(Calendar.SECOND, 0);
-        cal.set(Calendar.MILLISECOND, 0);
-        cal.add(Calendar.DATE, addDays);
-        return cal.getTimeInMillis();
-    }
-
-    private void updateCachedDate(final long now) {
-        if (fastDateFormat != null) {
-            final StringBuilder result = fastDateFormat.format(now, new 
StringBuilder());
-            cachedDate = result.toString().toCharArray();
-            dateLength = result.length();
-        }
-    }
-
-    // Profiling showed this method is important to log4j performance. Modify 
with care!
-    // 28 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
-    public String format(final long time) {
-        final char[] result = new char[length << 1]; // double size for 
locales with lengthy DateFormatSymbols
-        int written = format(time, result, 0);
-        return new String(result, 0, written);
-    }
-
-    // Profiling showed this method is important to log4j performance. Modify 
with care!
-    // 31 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
-    public int format(final long time, final char[] buffer, final int 
startPos) {
-        // Calculate values by getting the ms values first and do then
-        // calculate the hour minute and second values divisions.
-
-        // Get daytime in ms: this does fit into an int
-        // int ms = (int) (time % 86400000);
-        final int ms = (int) (millisSinceMidnight(time));
-        writeDate(buffer, startPos);
-        return writeTime(ms, buffer, startPos + dateLength) - startPos;
-    }
-
-    // Profiling showed this method is important to log4j performance. Modify 
with care!
-    // 22 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
-    private void writeDate(final char[] buffer, final int startPos) {
-        if (cachedDate != null) {
-            System.arraycopy(cachedDate, 0, buffer, startPos, dateLength);
-        }
-    }
-
-    // Profiling showed this method is important to log4j performance. Modify 
with care!
-    // 262 bytes (will be inlined when hot enough: <= -XX:FreqInlineSize=325 
bytes on Linux)
-    private int writeTime(int ms, final char[] buffer, int pos) {
-        final int hours = ms / 3600000;
-        ms -= 3600000 * hours;
-
-        final int minutes = ms / 60000;
-        ms -= 60000 * minutes;
-
-        final int seconds = ms / 1000;
-        ms -= 1000 * seconds;
-
-        // Hour
-        int temp = hours / 10;
-        buffer[pos++] = ((char) (temp + '0'));
-
-        // Do subtract to get remainder instead of doing % 10
-        buffer[pos++] = ((char) (hours - 10 * temp + '0'));
-        buffer[pos] = timeSeparatorChar;
-        pos += timeSeparatorLength;
-
-        // Minute
-        temp = minutes / 10;
-        buffer[pos++] = ((char) (temp + '0'));
-
-        // Do subtract to get remainder instead of doing % 10
-        buffer[pos++] = ((char) (minutes - 10 * temp + '0'));
-        buffer[pos] = timeSeparatorChar;
-        pos += timeSeparatorLength;
-
-        // Second
-        temp = seconds / 10;
-        buffer[pos++] = ((char) (temp + '0'));
-        buffer[pos++] = ((char) (seconds - 10 * temp + '0'));
-        buffer[pos] = millisSeparatorChar;
-        pos += millisSeparatorLength;
-
-        // Millisecond
-        temp = ms / 100;
-        buffer[pos++] = ((char) (temp + '0'));
-
-        ms -= 100 * temp;
-        temp = ms / 10;
-        buffer[pos++] = ((char) (temp + '0'));
-
-        ms -= 10 * temp;
-        buffer[pos++] = ((char) (ms + '0'));
-        return pos;
-    }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+
+package org.apache.logging.log4j.core.util.datetime;
+
+import java.util.Calendar;
+import java.util.Objects;
+
+/**
+ * Custom time formatter that trades flexibility for performance. This 
formatter only supports the date patterns defined
+ * in {@link FixedFormat}. For any other date patterns use {@link 
FastDateFormat}.
+ * <p>
+ * Related benchmarks: 
/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
 and
+ * 
/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadsafeDateFormatBenchmark.java
+ */
+public class FixedDateFormat {
+    /**
+     * Enumeration over the supported date/time format patterns.
+     * <p>
+     * Package protected for unit tests.
+     */
+    public enum FixedFormat {
+        /**
+         * ABSOLUTE time format: {@code "HH:mm:ss,SSS"}.
+         */
+        ABSOLUTE("HH:mm:ss,SSS", null, 0, ':', 1, ',', 1),
+
+        /**
+         * ABSOLUTE time format variation with period separator: {@code 
"HH:mm:ss.SSS"}.
+         */
+        ABSOLUTE_PERIOD("HH:mm:ss.SSS", null, 0, ':', 1, '.', 1),
+
+        /**
+         * COMPACT time format: {@code "yyyyMMddHHmmssSSS"}.
+         */
+        COMPACT("yyyyMMddHHmmssSSS", "yyyyMMdd", 0, ' ', 0, ' ', 0),
+
+        /**
+         * DATE_AND_TIME time format: {@code "dd MMM yyyy HH:mm:ss,SSS"}.
+         */
+        DATE("dd MMM yyyy HH:mm:ss,SSS", "dd MMM yyyy ", 0, ':', 1, ',', 1),
+
+        /**
+         * DATE_AND_TIME time format variation with period separator: {@code 
"dd MMM yyyy HH:mm:ss.SSS"}.
+         */
+        DATE_PERIOD("dd MMM yyyy HH:mm:ss.SSS", "dd MMM yyyy ", 0, ':', 1, 
'.', 1),
+
+        /**
+         * DEFAULT time format: {@code "yyyy-MM-dd HH:mm:ss,SSS"}.
+         */
+        DEFAULT("yyyy-MM-dd HH:mm:ss,SSS", "yyyy-MM-dd ", 0, ':', 1, ',', 1),
+
+        /**
+         * DEFAULT time format variation with period separator: {@code 
"yyyy-MM-dd HH:mm:ss.SSS"}.
+         */
+        DEFAULT_PERIOD("yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd ", 0, ':', 1, 
'.', 1),
+
+        /**
+         * ISO8601_BASIC time format: {@code "yyyyMMdd'T'HHmmss,SSS"}.
+         */
+        ISO8601_BASIC("yyyyMMdd'T'HHmmss,SSS", "yyyyMMdd'T'", 2, ' ', 0, ',', 
1),
+
+        /**
+         * ISO8601 time format: {@code "yyyy-MM-dd'T'HH:mm:ss,SSS"}.
+         */
+        ISO8601("yyyy-MM-dd'T'HH:mm:ss,SSS", "yyyy-MM-dd'T'", 2, ':', 1, ',', 
1);
+
+        private final String pattern;
+        private final String datePattern;
+        private final int escapeCount;
+        private final char timeSeparatorChar;
+        private final int timeSeparatorLength;
+        private final char millisSeparatorChar;
+        private final int millisSeparatorLength;
+
+        FixedFormat(final String pattern, final String datePattern, final int 
escapeCount, final char timeSeparator,
+                    final int timeSepLength, final char millisSeparator, final 
int millisSepLength) {
+            this.timeSeparatorChar = timeSeparator;
+            this.timeSeparatorLength = timeSepLength;
+            this.millisSeparatorChar = millisSeparator;
+            this.millisSeparatorLength = millisSepLength;
+            this.pattern = Objects.requireNonNull(pattern);
+            this.datePattern = datePattern; // may be null
+            this.escapeCount = escapeCount;
+        }
+
+        /**
+         * Returns the full pattern.
+         *
+         * @return the full pattern
+         */
+        public String getPattern() {
+            return pattern;
+        }
+
+        /**
+         * Returns the date part of the pattern.
+         *
+         * @return the date part of the pattern
+         */
+        public String getDatePattern() {
+            return datePattern;
+        }
+
+        /**
+         * Returns the FixedFormat with the name or pattern matching the 
specified string or {@code null} if not found.
+         *
+         * @param nameOrPattern the name or pattern to find a FixedFormat for
+         * @return the FixedFormat with the name or pattern matching the 
specified string
+         */
+        public static FixedFormat lookup(final String nameOrPattern) {
+            for (final FixedFormat type : FixedFormat.values()) {
+                if (type.name().equals(nameOrPattern) || 
type.getPattern().equals(nameOrPattern)) {
+                    return type;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Returns the length of the resulting formatted date and time strings.
+         *
+         * @return the length of the resulting formatted date and time strings
+         */
+        public int getLength() {
+            return pattern.length() - escapeCount;
+        }
+
+        /**
+         * Returns the length of the date part of the resulting formatted 
string.
+         *
+         * @return the length of the date part of the resulting formatted 
string
+         */
+        public int getDatePatternLength() {
+            return getDatePattern() == null ? 0 : getDatePattern().length() - 
escapeCount;
+        }
+
+        /**
+         * Returns the {@code FastDateFormat} object for formatting the date 
part of the pattern or {@code null} if the
+         * pattern does not have a date part.
+         *
+         * @return the {@code FastDateFormat} object for formatting the date 
part of the pattern or {@code null}
+         */
+        public FastDateFormat getFastDateFormat() {
+            return getDatePattern() == null ? null : 
FastDateFormat.getInstance(getDatePattern());
+        }
+    }
+
+    private final FixedFormat fixedFormat;
+    private final int length;
+    private final FastDateFormat fastDateFormat; // may be null
+    private final char timeSeparatorChar;
+    private final char millisSeparatorChar;
+    private final int timeSeparatorLength;
+    private final int millisSeparatorLength;
+
+    private volatile long midnightToday = 0;
+    private volatile long midnightTomorrow = 0;
+    // cachedDate does not need to be volatile because
+    // there is a write to a volatile field *after* cachedDate is modified,
+    // and there is a read from a volatile field *before* cachedDate is read.
+    // The Java memory model guarantees that because of the above,
+    // changes to cachedDate in one thread are visible to other threads.
+    // See http://g.oswego.edu/dl/jmm/cookbook.html
+    private char[] cachedDate; // may be null
+    private int dateLength;
+
+    /**
+     * Constructs a FixedDateFormat for the specified fixed format.
+     * <p>
+     * Package protected for unit tests.
+     *
+     * @param fixedFormat the fixed format
+     */
+    FixedDateFormat(final FixedFormat fixedFormat) {
+        this.fixedFormat = Objects.requireNonNull(fixedFormat);
+        this.timeSeparatorChar = fixedFormat.timeSeparatorChar;
+        this.timeSeparatorLength = fixedFormat.timeSeparatorLength;
+        this.millisSeparatorChar = fixedFormat.millisSeparatorChar;
+        this.millisSeparatorLength = fixedFormat.millisSeparatorLength;
+        this.length = fixedFormat.getLength();
+        this.fastDateFormat = fixedFormat.getFastDateFormat();
+    }
+
+    public static FixedDateFormat createIfSupported(final String... options) {
+        if (options == null || options.length == 0 || options[0] == null) {
+            return new FixedDateFormat(FixedFormat.DEFAULT);
+        }
+        if (options.length > 1) {
+            return null; // time zone not supported
+        }
+        final FixedFormat type = FixedFormat.lookup(options[0]);
+        return type == null ? null : new FixedDateFormat(type);
+    }
+
+    /**
+     * Returns a new {@code FixedDateFormat} object for the specified {@code 
FixedFormat} and a {@code null} TimeZone.
+     *
+     * @param format the format to use
+     * @return a new {@code FixedDateFormat} object
+     */
+    public static FixedDateFormat create(final FixedFormat format) {
+        return new FixedDateFormat(format);
+    }
+
+    /**
+     * Returns the full pattern of the selected fixed format.
+     *
+     * @return the full date-time pattern
+     */
+    public String getFormat() {
+        return fixedFormat.getPattern();
+    }
+
+    // Profiling showed this method is important to log4j performance. Modify 
with care!
+    // 30 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
+    private long millisSinceMidnight(final long now) {
+        if (now >= midnightTomorrow || now < midnightToday) {
+            updateMidnightMillis(now);
+        }
+        return now - midnightToday;
+    }
+
+    private void updateMidnightMillis(final long now) {
+
+        updateCachedDate(now);
+
+        midnightToday = calcMidnightMillis(now, 0);
+        midnightTomorrow = calcMidnightMillis(now, 1);
+    }
+
+    static long calcMidnightMillis(final long time, final int addDays) {
+        final Calendar cal = Calendar.getInstance();
+        cal.setTimeInMillis(time);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        cal.add(Calendar.DATE, addDays);
+        return cal.getTimeInMillis();
+    }
+
+    private void updateCachedDate(final long now) {
+        if (fastDateFormat != null) {
+            final StringBuilder result = fastDateFormat.format(now, new 
StringBuilder());
+            cachedDate = result.toString().toCharArray();
+            dateLength = result.length();
+        }
+    }
+
+    // Profiling showed this method is important to log4j performance. Modify 
with care!
+    // 28 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
+    public String format(final long time) {
+        final char[] result = new char[length << 1]; // double size for 
locales with lengthy DateFormatSymbols
+        int written = format(time, result, 0);
+        return new String(result, 0, written);
+    }
+
+    // Profiling showed this method is important to log4j performance. Modify 
with care!
+    // 31 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
+    public int format(final long time, final char[] buffer, final int 
startPos) {
+        // Calculate values by getting the ms values first and do then
+        // calculate the hour minute and second values divisions.
+
+        // Get daytime in ms: this does fit into an int
+        // int ms = (int) (time % 86400000);
+        final int ms = (int) (millisSinceMidnight(time));
+        writeDate(buffer, startPos);
+        return writeTime(ms, buffer, startPos + dateLength) - startPos;
+    }
+
+    // Profiling showed this method is important to log4j performance. Modify 
with care!
+    // 22 bytes (allows immediate JVM inlining: <= -XX:MaxInlineSize=35 bytes)
+    private void writeDate(final char[] buffer, final int startPos) {
+        if (cachedDate != null) {
+            System.arraycopy(cachedDate, 0, buffer, startPos, dateLength);
+        }
+    }
+
+    // Profiling showed this method is important to log4j performance. Modify 
with care!
+    // 262 bytes (will be inlined when hot enough: <= -XX:FreqInlineSize=325 
bytes on Linux)
+    private int writeTime(int ms, final char[] buffer, int pos) {
+        final int hours = ms / 3600000;
+        ms -= 3600000 * hours;
+
+        final int minutes = ms / 60000;
+        ms -= 60000 * minutes;
+
+        final int seconds = ms / 1000;
+        ms -= 1000 * seconds;
+
+        // Hour
+        int temp = hours / 10;
+        buffer[pos++] = ((char) (temp + '0'));
+
+        // Do subtract to get remainder instead of doing % 10
+        buffer[pos++] = ((char) (hours - 10 * temp + '0'));
+        buffer[pos] = timeSeparatorChar;
+        pos += timeSeparatorLength;
+
+        // Minute
+        temp = minutes / 10;
+        buffer[pos++] = ((char) (temp + '0'));
+
+        // Do subtract to get remainder instead of doing % 10
+        buffer[pos++] = ((char) (minutes - 10 * temp + '0'));
+        buffer[pos] = timeSeparatorChar;
+        pos += timeSeparatorLength;
+
+        // Second
+        temp = seconds / 10;
+        buffer[pos++] = ((char) (temp + '0'));
+        buffer[pos++] = ((char) (seconds - 10 * temp + '0'));
+        buffer[pos] = millisSeparatorChar;
+        pos += millisSeparatorLength;
+
+        // Millisecond
+        temp = ms / 100;
+        buffer[pos++] = ((char) (temp + '0'));
+
+        ms -= 100 * temp;
+        temp = ms / 10;
+        buffer[pos++] = ((char) (temp + '0'));
+
+        ms -= 10 * temp;
+        buffer[pos++] = ((char) (ms + '0'));
+        return pos;
+    }
+}

Reply via email to