Use final.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/ce4492f6
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ce4492f6
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ce4492f6

Branch: refs/heads/master
Commit: ce4492f633fb7e54805fd8a2b98cf2bc7c44a725
Parents: 018ca8a
Author: ggregory <ggreg...@apache.org>
Authored: Fri Jun 3 11:17:55 2016 -0700
Committer: ggregory <ggreg...@apache.org>
Committed: Fri Jun 3 11:17:55 2016 -0700

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/Logger.java   |   2 +-
 .../log4j/core/appender/AbstractManager.java    |   2 +-
 .../log4j/core/appender/SocketAppender.java     |   2 +-
 .../core/appender/mom/kafka/KafkaAppender.java  | 226 +++++++-------
 .../appender/rolling/CronTriggeringPolicy.java  |   4 +-
 .../rolling/DefaultRolloverStrategy.java        |   6 +-
 .../appender/rolling/RollingFileManager.java    |   4 +-
 .../appender/rolling/action/DeleteAction.java   |   2 +-
 .../core/appender/rolling/action/Duration.java  |  22 +-
 .../rolling/action/FileRenameAction.java        |   2 +-
 .../core/appender/rolling/action/IfAll.java     |   2 +-
 .../core/appender/rolling/action/IfAny.java     | 172 +++++------
 .../core/appender/routing/IdlePurgePolicy.java  |  12 +-
 .../core/appender/routing/RoutingAppender.java  |   2 +-
 ...syncLoggerConfigDefaultExceptionHandler.java |   4 +-
 .../AsyncLoggerDefaultExceptionHandler.java     |   4 +-
 .../logging/log4j/core/async/DisruptorUtil.java |   2 +-
 .../log4j/core/async/RingBufferLogEvent.java    |   6 +-
 .../core/config/AbstractConfiguration.java      |   8 +-
 .../log4j/core/config/AppenderControl.java      |   2 +-
 ...AwaitUnconditionallyReliabilityStrategy.java |   2 +-
 .../log4j/core/config/ConfigurationFactory.java |   8 +-
 .../core/config/ConfigurationScheduler.java     |  14 +-
 .../log4j/core/config/ConfigurationSource.java  |   6 +-
 .../logging/log4j/core/config/Configurator.java |   8 +-
 .../core/config/ReliabilityStrategyFactory.java | 140 ++++-----
 .../config/builder/impl/BuiltConfiguration.java |   6 +-
 .../composite/CompositeConfiguration.java       |  44 +--
 .../config/composite/DefaultMergeStrategy.java  |  60 ++--
 .../core/config/json/JsonConfiguration.java     |   2 +-
 .../PropertiesConfigurationBuilder.java         |  30 +-
 .../PropertiesConfigurationFactory.java         |   2 +-
 .../log4j/core/config/xml/XmlConfiguration.java |   4 +-
 .../logging/log4j/core/filter/BurstFilter.java  |   2 +-
 .../log4j/core/filter/CompositeFilter.java      |   8 +-
 .../logging/log4j/core/filter/ScriptFilter.java |  16 +-
 .../logging/log4j/core/filter/TimeFilter.java   |   2 +-
 .../log4j/core/impl/Log4jContextFactory.java    |   8 +-
 .../logging/log4j/core/impl/Log4jLogEvent.java  |   2 +-
 .../log4j/core/impl/MutableLogEvent.java        |   4 +-
 .../logging/log4j/core/layout/GelfLayout.java   |   8 +-
 .../core/layout/MarkerPatternSelector.java      |  18 +-
 .../log4j/core/layout/PatternLayout.java        |   4 +-
 .../core/layout/ScriptPatternSelector.java      |  20 +-
 .../log4j/core/layout/TextEncoderHelper.java    |   2 +-
 .../ExtendedThrowablePatternConverter.java      |   2 +-
 .../core/pattern/MessagePatternConverter.java   |   2 +-
 .../pattern/RootThrowablePatternConverter.java  |   2 +-
 .../VariablesNotEmptyReplacementConverter.java  |   2 +-
 .../logging/log4j/core/script/ScriptFile.java   |  10 +-
 .../log4j/core/script/ScriptManager.java        |  12 +-
 .../logging/log4j/core/script/ScriptRef.java    |   4 +-
 .../logging/log4j/core/util/CronExpression.java | 132 ++++----
 .../logging/log4j/core/util/FileUtils.java      |   2 +-
 .../logging/log4j/core/util/JsonUtils.java      |   8 +-
 .../logging/log4j/core/util/StringEncoder.java  |   8 +-
 .../logging/log4j/core/util/WatchManager.java   |  12 +-
 .../core/util/datetime/FixedDateFormat.java     |   2 +-
 .../log4j/core/GcFreeLoggingTestUtil.java       |   2 +-
 .../logging/log4j/core/Log4j1222Test.java       |   2 +-
 .../apache/logging/log4j/core/LogEventTest.java |   4 +-
 .../apache/logging/log4j/core/LoggerTest.java   |  14 +-
 .../logging/log4j/core/PatternSelectorTest.java |  16 +-
 .../log4j/core/PropertiesFileConfigTest.java    |   2 +-
 .../AsyncAppenderQueueFullPolicyTest.java       |   4 +-
 .../log4j/core/appender/HangingAppender.java    |   6 +-
 .../log4j/core/appender/SocketAppenderTest.java |   2 +-
 .../appender/XmlCompleteFileAppenderTest.java   |   2 +-
 .../appender/mom/kafka/KafkaAppenderTest.java   |   8 +-
 .../rolling/RollingAppenderCronTest.java        |  10 +-
 .../RollingAppenderCustomDeleteActionTest.java  |  10 +-
 ...lingAppenderDeleteAccumulatedCount1Test.java |  20 +-
 ...lingAppenderDeleteAccumulatedCount2Test.java |  20 +-
 ...ollingAppenderDeleteAccumulatedSizeTest.java |   4 +-
 .../RollingAppenderDeleteMaxDepthTest.java      |  20 +-
 .../RollingAppenderDeleteNestedTest.java        |  20 +-
 .../RollingAppenderDeleteScriptFri13thTest.java |   8 +-
 .../RollingAppenderDeleteScriptTest.java        |   8 +-
 ...ollingAppenderNoUnconditionalDeleteTest.java |   4 +-
 .../rolling/RollingAppenderSizeTest.java        |  14 +-
 .../rolling/action/DeleteActionTest.java        |  36 +--
 .../rolling/action/DeletingVisitorTest.java     |  46 +--
 .../appender/rolling/action/DurationTest.java   | 298 +++++++++----------
 .../action/IfAccumulatedFileCountTest.java      | 150 +++++-----
 .../action/IfAccumulatedFileSizeTest.java       | 260 ++++++++--------
 .../rolling/action/IfLastModifiedTest.java      | 194 ++++++------
 .../action/PathSortByModificationTimeTest.java  |  20 +-
 .../rolling/action/ScriptConditionTest.java     | 260 ++++++++--------
 .../rolling/action/SortingVisitorTest.java      | 188 ++++++------
 .../routing/RoutingAppenderWithPurgingTest.java |   4 +-
 .../core/async/AsyncLoggerTestNanoTime.java     |   2 +-
 .../async/AsyncQueueFullPolicyFactoryTest.java  |   4 +-
 .../async/DefaultAsyncQueueFullPolicyTest.java  |   4 +-
 .../DiscardingAsyncQueueFullPolicyTest.java     |  22 +-
 .../core/async/perftest/ResponseTimeTest.java   |  22 +-
 .../core/async/perftest/SimplePerfTest.java     |  26 +-
 .../core/config/AbstractLog4j2_1100Test.java    | 136 ++++-----
 .../config/AppenderControlArraySetTest.java     |  12 +-
 .../core/config/CompositeConfigurationTest.java |   6 +-
 .../log4j/core/config/TestConfigurator.java     |  20 +-
 .../builder/ConfigurationAssemblerTest.java     |  12 +-
 .../builder/CustomConfigurationFactory.java     |   4 +-
 ...opertiesConfigurationRootLoggerOnlyTest.java |  10 +-
 .../properties/PropertiesConfigurationTest.java |  10 +-
 .../properties/RollingFilePropertiesTest.java   |  10 +-
 .../core/filter/AbstractFilterableTest.java     |  86 +++---
 .../core/filter/AbstractScriptFilterTest.java   |   8 +-
 .../core/impl/Log4jLogEventNanoTimeTest.java    |   2 +-
 .../log4j/core/impl/Log4jLogEventTest.java      |  12 +-
 .../log4j/core/impl/MutableLogEventTest.java    |  12 +-
 .../core/impl/ReusableLogEventFactoryTest.java  |  12 +-
 .../layout/CsvParameterLayoutAllAsyncTest.java  |   6 +-
 .../core/layout/CsvParameterLayoutTest.java     |   6 +-
 .../log4j/core/layout/GelfLayoutTest.java       |   2 +-
 .../layout/PatternLayoutMainMapLookupTest.java  | 128 ++++----
 .../log4j/core/layout/PatternLayoutTest.java    |   8 +-
 .../log4j/core/layout/PatternSelectorTest.java  |   4 +-
 .../core/layout/StringBuilderEncoderTest.java   |   6 +-
 .../server/UdpSerializedSocketServerTest.java   |   2 +
 .../core/net/ssl/SslConfigurationTest.java      |   4 +-
 .../pattern/EqualsReplacementConverterTest.java |   2 +-
 .../log4j/core/pattern/PatternParserTest.java   |   8 +-
 .../log4j/core/util/CronExpressionTest.java     |  32 +-
 .../log4j/core/util/WatchManagerTest.java       |  16 +-
 .../apache/logging/log4j/junit/CleanFiles.java  |   6 +-
 .../logging/log4j/junit/LoggerContextRule.java  |   2 +-
 ...MutableLogEventWithReusableParamMsgTest.java |   4 +-
 .../log4j/test/appender/BlockingAppender.java   |   2 +-
 .../test/appender/EncodingListAppender.java     |   8 +-
 .../log4j/flume/appender/FlumeAppenderTest.java |   2 +-
 .../nosql/appender/mongodb/MongoDbProvider.java |   4 +-
 .../message/ParameterFormatterBenchmark.java    |  40 +--
 ...ractStringLayoutStringEncodingBenchmark.java |  32 +-
 .../log4j/perf/jmh/CollectionsBenchmark.java    |  12 +-
 .../log4j/perf/jmh/FileAppenderBenchmark.java   |  10 +-
 .../perf/jmh/FileAppenderParamsBenchmark.java   |  10 +-
 .../jmh/Log4j2AppenderComparisonBenchmark.java  |   6 +-
 .../log4j/perf/jmh/LoggerConfigBenchmark.java   |   2 +-
 .../jmh/MemoryHandlerJULLocationBenchmark.java  |   2 +-
 .../perf/jmh/ParameterizedMessageBenchmark.java |   2 +-
 .../ParameterizedMessageInliningBenchmark.java  |  20 +-
 .../jmh/PatternLayoutComparisonBenchmark.java   |   2 +-
 .../log4j/perf/jmh/StringEncodingBenchmark.java |  30 +-
 .../perf/jmh/TextEncoderHelperBenchmark.java    |  12 +-
 ...ThreadLocalVsConcurrentHashMapBenchmark.java |   6 +-
 .../perf/jmh/ThreadLocalVsPoolBenchmark.java    |  14 +-
 .../perf/jmh/ThreadsafeDateFormatBenchmark.java |   4 +-
 .../log4j/perf/jmh/VarargsBenchmark.java        |   6 +-
 .../logging/log4j/perf/nogc/AbstractLogger.java |   6 +-
 .../logging/log4j/perf/nogc/ClassicLogger.java  |   2 +-
 .../logging/log4j/perf/nogc/DemoAppender.java   |  12 +-
 .../logging/log4j/perf/nogc/NoGcLayout.java     |  16 +-
 .../logging/log4j/perf/nogc/NoGcLogger.java     |   2 +-
 .../logging/log4j/perf/nogc/NoGcMessage.java    |  10 +-
 .../log4j/perf/nogc/ParameterizedMessage.java   |   6 +-
 .../apache/logging/log4j/perf/nogc/Test.java    |  24 +-
 .../logging/log4j/perf/util/DemoAppender.java   |  10 +-
 .../configuration/CustomConfiguration.java      |   2 +-
 .../logging/log4j/lookup/CustomLookup.java      |   8 +-
 .../logging/log4j/lookup/CustomMapMessage.java  |   2 +-
 .../logging/log4j/lookup/MapMessageLookup.java  |  10 +-
 .../logging/log4j/CustomPropertiesTest.java     |   8 +-
 .../log4j/taglib/Log4jTaglibLoggerContext.java  |   4 +-
 .../logging/slf4j/SLF4JLoggerContext.java       |   4 +-
 .../log4j/web/ServletRequestThreadContext.java  |   8 +-
 165 files changed, 1895 insertions(+), 1893 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
index 99f4207..ef90b40 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
@@ -604,7 +604,7 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append("PrivateConfig [loggerConfig=");
             builder.append(loggerConfig);
             builder.append(", config=");

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
index fd15f17..9c67f24 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
@@ -151,7 +151,7 @@ public abstract class AbstractManager {
     }
 
     protected void log(final Level level, final String message, final 
Throwable throwable) {
-        Message m = LOGGER.getMessageFactory().newMessage("{} {} {}: {}",
+        final Message m = LOGGER.getMessageFactory().newMessage("{} {} {}: {}",
                 getClass().getSimpleName(), getName(), message, throwable);
         LOGGER.log(level, m, throwable);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
index c49ed46..3b610bc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
@@ -204,7 +204,7 @@ public class SocketAppender extends 
AbstractOutputStreamAppender<AbstractSocketM
             final String advertise,
             final Configuration config) {
             // @formatter:on
-        boolean isFlush = Booleans.parseBoolean(immediateFlush, true);
+        final boolean isFlush = Booleans.parseBoolean(immediateFlush, true);
         final boolean isAdvertise = Boolean.parseBoolean(advertise);
         final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true);
         final boolean fail = Booleans.parseBoolean(immediateFail, true);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
index 18f5c52..8619f3d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/kafka/KafkaAppender.java
@@ -1,113 +1,113 @@
-/*
- * 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.appender.mom.kafka;
-
-import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
-
-import org.apache.logging.log4j.core.Appender;
-import org.apache.logging.log4j.core.Filter;
-import org.apache.logging.log4j.core.Layout;
-import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.appender.AbstractAppender;
-import org.apache.logging.log4j.core.appender.AppenderLoggingException;
-import org.apache.logging.log4j.core.config.Node;
-import org.apache.logging.log4j.core.config.Property;
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
-import org.apache.logging.log4j.core.layout.SerializedLayout;
-import org.apache.logging.log4j.core.util.StringEncoder;
-
-/**
- * Sends log events to an Apache Kafka topic.
- */
-@Plugin(name = "Kafka", category = Node.CATEGORY, elementType = 
Appender.ELEMENT_TYPE, printObject = true)
-public final class KafkaAppender extends AbstractAppender {
-
-    @PluginFactory
-    public static KafkaAppender createAppender(
-            @PluginElement("Layout") final Layout<? extends Serializable> 
layout,
-            @PluginElement("Filter") final Filter filter,
-            @Required(message = "No name provided for KafkaAppender") 
@PluginAttribute("name") final String name,
-            @PluginAttribute(value = "ignoreExceptions", defaultBoolean = 
true) final boolean ignoreExceptions,
-            @Required(message = "No topic provided for KafkaAppender") 
@PluginAttribute("topic") final String topic,
-            @PluginElement("Properties") final Property[] properties) {
-        final KafkaManager kafkaManager = new KafkaManager(name, topic, 
properties);
-        return new KafkaAppender(name, layout, filter, ignoreExceptions, 
kafkaManager);
-    }
-
-    private final KafkaManager manager;
-
-    private KafkaAppender(final String name, final Layout<? extends 
Serializable> layout, final Filter filter, final boolean ignoreExceptions, 
final KafkaManager manager) {
-        super(name, filter, layout, ignoreExceptions);
-        this.manager = manager;
-    }
-
-    @Override
-    public void append(final LogEvent event) {
-        if (event.getLoggerName().startsWith("org.apache.kafka")) {
-            LOGGER.warn("Recursive logging from [{}] for appender [{}].", 
event.getLoggerName(), getName());
-        } else {
-            try {
-                Layout<? extends Serializable> layout = getLayout();
-                byte[] data;
-                if (layout != null) {
-                    if (layout instanceof SerializedLayout) {
-                        byte[] header = layout.getHeader();
-                        byte[] body = layout.toByteArray(event);
-                        data = new byte[header.length + body.length];
-                        System.arraycopy(header, 0, data, 0, header.length);
-                        System.arraycopy(body, 0, data, header.length, 
body.length);
-                    } else {
-                        data = layout.toByteArray(event);
-                    }
-                } else {
-                    data = 
StringEncoder.toBytes(event.getMessage().getFormattedMessage(), 
StandardCharsets.UTF_8);
-                }
-                manager.send(data);
-            } catch (final Exception e) {
-                LOGGER.error("Unable to write to Kafka [{}] for appender 
[{}].", manager.getName(), getName(), e);
-                throw new AppenderLoggingException("Unable to write to Kafka 
in appender: " + e.getMessage(), e);
-            }
-        }
-    }
-
-    @Override
-    public void start() {
-        super.start();
-        manager.startup();
-    }
-
-    @Override
-    public void stop() {
-        super.stop();
-        manager.release();
-    }
-
-    @Override
-    public String toString() {
-        return "KafkaAppender{" +
-            "name=" + getName() +
-            ", state=" + getState() +
-            ", topic=" + manager.getTopic() +
-            '}';
-    }
-}
+/*
+ * 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.appender.mom.kafka;
+
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.appender.AbstractAppender;
+import org.apache.logging.log4j.core.appender.AppenderLoggingException;
+import org.apache.logging.log4j.core.config.Node;
+import org.apache.logging.log4j.core.config.Property;
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
+import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import 
org.apache.logging.log4j.core.config.plugins.validation.constraints.Required;
+import org.apache.logging.log4j.core.layout.SerializedLayout;
+import org.apache.logging.log4j.core.util.StringEncoder;
+
+/**
+ * Sends log events to an Apache Kafka topic.
+ */
+@Plugin(name = "Kafka", category = Node.CATEGORY, elementType = 
Appender.ELEMENT_TYPE, printObject = true)
+public final class KafkaAppender extends AbstractAppender {
+
+    @PluginFactory
+    public static KafkaAppender createAppender(
+            @PluginElement("Layout") final Layout<? extends Serializable> 
layout,
+            @PluginElement("Filter") final Filter filter,
+            @Required(message = "No name provided for KafkaAppender") 
@PluginAttribute("name") final String name,
+            @PluginAttribute(value = "ignoreExceptions", defaultBoolean = 
true) final boolean ignoreExceptions,
+            @Required(message = "No topic provided for KafkaAppender") 
@PluginAttribute("topic") final String topic,
+            @PluginElement("Properties") final Property[] properties) {
+        final KafkaManager kafkaManager = new KafkaManager(name, topic, 
properties);
+        return new KafkaAppender(name, layout, filter, ignoreExceptions, 
kafkaManager);
+    }
+
+    private final KafkaManager manager;
+
+    private KafkaAppender(final String name, final Layout<? extends 
Serializable> layout, final Filter filter, final boolean ignoreExceptions, 
final KafkaManager manager) {
+        super(name, filter, layout, ignoreExceptions);
+        this.manager = manager;
+    }
+
+    @Override
+    public void append(final LogEvent event) {
+        if (event.getLoggerName().startsWith("org.apache.kafka")) {
+            LOGGER.warn("Recursive logging from [{}] for appender [{}].", 
event.getLoggerName(), getName());
+        } else {
+            try {
+                final Layout<? extends Serializable> layout = getLayout();
+                byte[] data;
+                if (layout != null) {
+                    if (layout instanceof SerializedLayout) {
+                        final byte[] header = layout.getHeader();
+                        final byte[] body = layout.toByteArray(event);
+                        data = new byte[header.length + body.length];
+                        System.arraycopy(header, 0, data, 0, header.length);
+                        System.arraycopy(body, 0, data, header.length, 
body.length);
+                    } else {
+                        data = layout.toByteArray(event);
+                    }
+                } else {
+                    data = 
StringEncoder.toBytes(event.getMessage().getFormattedMessage(), 
StandardCharsets.UTF_8);
+                }
+                manager.send(data);
+            } catch (final Exception e) {
+                LOGGER.error("Unable to write to Kafka [{}] for appender 
[{}].", manager.getName(), getName(), e);
+                throw new AppenderLoggingException("Unable to write to Kafka 
in appender: " + e.getMessage(), e);
+            }
+        }
+    }
+
+    @Override
+    public void start() {
+        super.start();
+        manager.startup();
+    }
+
+    @Override
+    public void stop() {
+        super.stop();
+        manager.release();
+    }
+
+    @Override
+    public String toString() {
+        return "KafkaAppender{" +
+            "name=" + getName() +
+            ", state=" + getState() +
+            ", topic=" + manager.getTopic() +
+            '}';
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
index b4d1b1b..863ea9d 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/CronTriggeringPolicy.java
@@ -58,7 +58,7 @@ public final class CronTriggeringPolicy implements 
TriggeringPolicy {
     public void initialize(final RollingFileManager aManager) {
         this.manager = aManager;
         if (checkOnStartup) {
-            Date nextDate = cronExpression.getNextValidTimeAfter(new 
Date(this.manager.getFileTime()));
+            final Date nextDate = cronExpression.getNextValidTimeAfter(new 
Date(this.manager.getFileTime()));
             if (nextDate.getTime() < System.currentTimeMillis()) {
                 manager.rollover();
             }
@@ -110,7 +110,7 @@ public final class CronTriggeringPolicy implements 
TriggeringPolicy {
     private static CronExpression getSchedule(final String expression) {
         try {
             return new CronExpression(expression);
-        } catch (ParseException pe) {
+        } catch (final ParseException pe) {
             LOGGER.error("Invalid cron expression - " + expression, pe);
             return null;
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
index 6097586..2a83861 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/DefaultRolloverStrategy.java
@@ -132,7 +132,7 @@ public class DefaultRolloverStrategy implements 
RolloverStrategy {
         };
 
         static FileExtensions lookup(final String fileExtension) {
-            for (FileExtensions ext : values()) {
+            for (final FileExtensions ext : values()) {
                 if (ext.isExtensionFor(fileExtension)) {
                     return ext;
                 }
@@ -537,7 +537,7 @@ public class DefaultRolloverStrategy implements 
RolloverStrategy {
         final String compressedName = renameTo;
         Action compressAction = null;
 
-        for (FileExtensions ext : FileExtensions.values()) { // LOG4J2-1077 
support other compression formats
+        for (final FileExtensions ext : FileExtensions.values()) { // 
LOG4J2-1077 support other compression formats
             if (ext.isExtensionFor(renameTo)) {
                 renameTo = renameTo.substring(0, renameTo.length() - 
ext.length()); // LOG4J2-1135 omit extension!
                 compressAction = ext.createCompressAction(renameTo, 
compressedName, true, compressionLevel);
@@ -552,7 +552,7 @@ public class DefaultRolloverStrategy implements 
RolloverStrategy {
     }
 
     private int suffixLength(final String lowFilename) {
-        for (FileExtensions extension : FileExtensions.values()) {
+        for (final FileExtensions extension : FileExtensions.values()) {
             if (extension.isExtensionFor(lowFilename)) {
                 return extension.length();
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
index 9c573eb..ade19b3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/RollingFileManager.java
@@ -289,7 +289,7 @@ public class RollingFileManager extends FileManager {
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append(super.toString());
             builder.append("[action=");
             builder.append(action);
@@ -354,7 +354,7 @@ public class RollingFileManager extends FileManager {
 
         @Override
         public String toString() {
-            StringBuilder builder = new StringBuilder();
+            final StringBuilder builder = new StringBuilder();
             builder.append(super.toString());
             builder.append("[pattern=");
             builder.append(pattern);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteAction.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteAction.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteAction.java
index 8176470..1d0b75a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteAction.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/DeleteAction.java
@@ -131,7 +131,7 @@ public class DeleteAction extends AbstractPathAction {
         final List<PathWithAttributes> sortedPaths = getSortedPaths();
         trace("Sorted paths:", sortedPaths);
 
-        for (PathWithAttributes element : sortedPaths) {
+        for (final PathWithAttributes element : sortedPaths) {
             try {
                 visitor.visitFile(element.getPath(), element.getAttributes());
             } catch (final IOException ioex) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/Duration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/Duration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/Duration.java
index a5103f7..5305c91 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/Duration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/Duration.java
@@ -116,22 +116,22 @@ public class Duration implements Serializable, 
Comparable<Duration> {
      */
     public static Duration parse(final CharSequence text) {
         Objects.requireNonNull(text, "text");
-        Matcher matcher = PATTERN.matcher(text);
+        final Matcher matcher = PATTERN.matcher(text);
         if (matcher.matches()) {
             // check for letter T but no time sections
             if ("T".equals(matcher.group(2)) == false) {
-                String dayMatch = matcher.group(1);
-                String hourMatch = matcher.group(3);
-                String minuteMatch = matcher.group(4);
-                String secondMatch = matcher.group(5);
+                final String dayMatch = matcher.group(1);
+                final String hourMatch = matcher.group(3);
+                final String minuteMatch = matcher.group(4);
+                final String secondMatch = matcher.group(5);
                 if (dayMatch != null || hourMatch != null || minuteMatch != 
null || secondMatch != null) {
-                    long daysAsSecs = parseNumber(text, dayMatch, 
SECONDS_PER_DAY, "days");
-                    long hoursAsSecs = parseNumber(text, hourMatch, 
SECONDS_PER_HOUR, "hours");
-                    long minsAsSecs = parseNumber(text, minuteMatch, 
SECONDS_PER_MINUTE, "minutes");
-                    long seconds = parseNumber(text, secondMatch, 1, 
"seconds");
+                    final long daysAsSecs = parseNumber(text, dayMatch, 
SECONDS_PER_DAY, "days");
+                    final long hoursAsSecs = parseNumber(text, hourMatch, 
SECONDS_PER_HOUR, "hours");
+                    final long minsAsSecs = parseNumber(text, minuteMatch, 
SECONDS_PER_MINUTE, "minutes");
+                    final long seconds = parseNumber(text, secondMatch, 1, 
"seconds");
                     try {
                         return create(daysAsSecs, hoursAsSecs, minsAsSecs, 
seconds);
-                    } catch (ArithmeticException ex) {
+                    } catch (final ArithmeticException ex) {
                         throw new IllegalArgumentException("Text cannot be 
parsed to a Duration (overflow) " + text, ex);
                     }
                 }
@@ -188,7 +188,7 @@ public class Duration implements Serializable, 
Comparable<Duration> {
         if (!(obj instanceof Duration)) {
             return false;
         }
-        Duration other = (Duration) obj;
+        final Duration other = (Duration) obj;
         return other.seconds == this.seconds;
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
index 83f7caf..142b7e3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/FileRenameAction.java
@@ -115,7 +115,7 @@ public class FileRenameAction extends AbstractAction {
                     return false;
                 }
             }
-            Path sourcePath = source.toPath();
+            final Path sourcePath = source.toPath();
             try {
                 Files.move(sourcePath, destination.toPath());
                 return true;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
index 9591804..2b3088c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAll.java
@@ -92,7 +92,7 @@ public final class IfAll implements PathCondition {
      * @param nestedConditions the conditions to call {@link 
#beforeFileTreeWalk()} on
      */
     public static void beforeFileTreeWalk(final PathCondition[] 
nestedConditions) {
-        for (PathCondition condition : nestedConditions) {
+        for (final PathCondition condition : nestedConditions) {
             condition.beforeFileTreeWalk();
         }
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAny.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAny.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAny.java
index 30529d4..6b71542 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAny.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/IfAny.java
@@ -1,86 +1,86 @@
-/*
- * 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.appender.rolling.action;
-
-import java.nio.file.Path;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.Arrays;
-import java.util.Objects;
-
-import org.apache.logging.log4j.core.config.plugins.Plugin;
-import org.apache.logging.log4j.core.config.plugins.PluginElement;
-import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-
-/**
- * Composite {@code PathCondition} that accepts objects that are accepted by 
<em>any</em> component conditions.
- * Corresponds to logical "OR".
- */
-@Plugin(name = "IfAny", category = "Core", printObject = true)
-public final class IfAny implements PathCondition {
-
-    private final PathCondition[] components;
-
-    private IfAny(final PathCondition... filters) {
-        this.components = Objects.requireNonNull(filters, "filters");
-    }
-
-    public PathCondition[] getDeleteFilters() {
-        return components;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.logging.log4j.core.appender.rolling.action.PathCondition#accept(java.nio.file.Path,
 java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes)
-     */
-    @Override
-    public boolean accept(final Path baseDir, final Path relativePath, final 
BasicFileAttributes attrs) {
-        for (final PathCondition component : components) {
-            if (component.accept(baseDir, relativePath, attrs)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /*
-     * (non-Javadoc)
-     * @see 
org.apache.logging.log4j.core.appender.rolling.action.PathCondition#beforeFileTreeWalk()
-     */
-    @Override
-    public void beforeFileTreeWalk() {
-        for (PathCondition condition : components) {
-            condition.beforeFileTreeWalk();
-        }
-    }
-
-    /**
-     * Create a Composite PathCondition: accepts if any of the nested 
conditions accepts.
-     * 
-     * @param components The component conditions.
-     * @return A Composite PathCondition.
-     */
-    @PluginFactory
-    public static IfAny createOrCondition( //
-            @PluginElement("PathConditions") final PathCondition... 
components) {
-        return new IfAny(components);
-    }
-
-    @Override
-    public String toString() {
-        return "IfAny" + Arrays.toString(components);
-    }
-}
+/*
+ * 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.appender.rolling.action;
+
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Arrays;
+import java.util.Objects;
+
+import org.apache.logging.log4j.core.config.plugins.Plugin;
+import org.apache.logging.log4j.core.config.plugins.PluginElement;
+import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+
+/**
+ * Composite {@code PathCondition} that accepts objects that are accepted by 
<em>any</em> component conditions.
+ * Corresponds to logical "OR".
+ */
+@Plugin(name = "IfAny", category = "Core", printObject = true)
+public final class IfAny implements PathCondition {
+
+    private final PathCondition[] components;
+
+    private IfAny(final PathCondition... filters) {
+        this.components = Objects.requireNonNull(filters, "filters");
+    }
+
+    public PathCondition[] getDeleteFilters() {
+        return components;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.logging.log4j.core.appender.rolling.action.PathCondition#accept(java.nio.file.Path,
 java.nio.file.Path, java.nio.file.attribute.BasicFileAttributes)
+     */
+    @Override
+    public boolean accept(final Path baseDir, final Path relativePath, final 
BasicFileAttributes attrs) {
+        for (final PathCondition component : components) {
+            if (component.accept(baseDir, relativePath, attrs)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.logging.log4j.core.appender.rolling.action.PathCondition#beforeFileTreeWalk()
+     */
+    @Override
+    public void beforeFileTreeWalk() {
+        for (final PathCondition condition : components) {
+            condition.beforeFileTreeWalk();
+        }
+    }
+
+    /**
+     * Create a Composite PathCondition: accepts if any of the nested 
conditions accepts.
+     * 
+     * @param components The component conditions.
+     * @return A Composite PathCondition.
+     */
+    @PluginFactory
+    public static IfAny createOrCondition( //
+            @PluginElement("PathConditions") final PathCondition... 
components) {
+        return new IfAny(components);
+    }
+
+    @Override
+    public String toString() {
+        return "IfAny" + Arrays.toString(components);
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
index e9e7469..f4f6e35 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/IdlePurgePolicy.java
@@ -69,8 +69,8 @@ public class IdlePurgePolicy extends AbstractLifeCycle 
implements PurgePolicy, R
      */
     @Override
     public void purge() {
-        long createTime = System.currentTimeMillis() - timeToLive;
-        for (Entry<String, Long> entry : appendersUsage.entrySet()) {
+        final long createTime = System.currentTimeMillis() - timeToLive;
+        for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
             if (entry.getValue() < createTime) {
                 LOGGER.debug("Removing appender " + entry.getKey());
                 appendersUsage.remove(entry.getKey());
@@ -81,7 +81,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle 
implements PurgePolicy, R
 
     @Override
     public void update(final String key, final LogEvent event) {
-        long now = System.currentTimeMillis();
+        final long now = System.currentTimeMillis();
         appendersUsage.put(key, now);
         if (future == null) {
             synchronized (this) {
@@ -101,13 +101,13 @@ public class IdlePurgePolicy extends AbstractLifeCycle 
implements PurgePolicy, R
 
     private void scheduleNext() {
         long createTime = Long.MAX_VALUE;
-        for (Entry<String, Long> entry : appendersUsage.entrySet()) {
+        for (final Entry<String, Long> entry : appendersUsage.entrySet()) {
             if (entry.getValue() < createTime) {
                 createTime = entry.getValue();
             }
         }
         if (createTime < Long.MAX_VALUE) {
-            long interval = timeToLive - (System.currentTimeMillis() - 
createTime);
+            final long interval = timeToLive - (System.currentTimeMillis() - 
createTime);
             future = scheduler.schedule(this, interval, TimeUnit.MILLISECONDS);
         }
     }
@@ -135,7 +135,7 @@ public class IdlePurgePolicy extends AbstractLifeCycle 
implements PurgePolicy, R
         } else {
             try {
                 units = TimeUnit.valueOf(timeUnit.toUpperCase());
-            } catch (Exception ex) {
+            } catch (final Exception ex) {
                 LOGGER.error("Invalid time unit {}", timeUnit);
                 units = TimeUnit.MINUTES;
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
index 02f2d33..0df19eb 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
@@ -183,7 +183,7 @@ public final class RoutingAppender extends AbstractAppender 
{
      */
     public void deleteAppender(final String key) {
        LOGGER.debug("Stopping route with key" + key);
-       AppenderControl control = appenders.remove(key);
+       final AppenderControl control = appenders.remove(key);
        control.getAppender().stop();
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDefaultExceptionHandler.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDefaultExceptionHandler.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDefaultExceptionHandler.java
index fa647c6..961c349 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDefaultExceptionHandler.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigDefaultExceptionHandler.java
@@ -27,11 +27,11 @@ public class AsyncLoggerConfigDefaultExceptionHandler
     @Override
     public void handleEventException(final Throwable throwable, final long 
sequence,
             final AsyncLoggerConfigDisruptor.Log4jEventWrapper event) {
-        StringBuilder sb = new StringBuilder(512);
+        final StringBuilder sb = new StringBuilder(512);
         sb.append("AsyncLogger error handling event 
seq=").append(sequence).append(", value='");
         try {
             sb.append(event);
-        } catch (Exception ignored) {
+        } catch (final Exception ignored) {
             sb.append("[ERROR calling 
").append(event.getClass()).append(".toString(): ");
             sb.append(ignored).append("]");
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.java
index 081a097..e224e1e 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerDefaultExceptionHandler.java
@@ -25,11 +25,11 @@ public class AsyncLoggerDefaultExceptionHandler implements 
ExceptionHandler<Ring
 
     @Override
     public void handleEventException(final Throwable throwable, final long 
sequence, final RingBufferLogEvent event) {
-        StringBuilder sb = new StringBuilder(512);
+        final StringBuilder sb = new StringBuilder(512);
         sb.append("AsyncLogger error handling event 
seq=").append(sequence).append(", value='");
         try {
             sb.append(event);
-        } catch (Exception ignored) {
+        } catch (final Exception ignored) {
             sb.append("[ERROR calling 
").append(event.getClass()).append(".toString(): ");
             sb.append(ignored).append("]");
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
index 774a1cc..4fc5ea0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/DisruptorUtil.java
@@ -133,7 +133,7 @@ final class DisruptorUtil {
      * @return the thread ID of the background appender thread
      */
     public static long getExecutorThreadId(final ExecutorService executor) {
-        Future<Long> result = executor.submit(new Callable<Long>() {
+        final Future<Long> result = executor.submit(new Callable<Long>() {
             @Override
             public Long call() {
                 return Thread.currentThread().getId();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
index 5d8d4fd..463536c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
@@ -58,7 +58,7 @@ public class RingBufferLogEvent implements LogEvent, 
ReusableMessage, CharSequen
 
         @Override
         public RingBufferLogEvent newInstance() {
-            RingBufferLogEvent result = new RingBufferLogEvent();
+            final RingBufferLogEvent result = new RingBufferLogEvent();
             if (Constants.ENABLE_THREADLOCALS) {
                 result.messageText = new 
StringBuilder(Constants.INITIAL_REUSABLE_MESSAGE_SIZE);
                 result.parameters = new Object[10];
@@ -114,7 +114,7 @@ public class RingBufferLogEvent implements LogEvent, 
ReusableMessage, CharSequen
 
     private void setMessage(final Message msg) {
         if (msg instanceof ReusableMessage) {
-            ReusableMessage reusable = (ReusableMessage) msg;
+            final ReusableMessage reusable = (ReusableMessage) msg;
             reusable.formatTo(getMessageTextForWriting());
             if (parameters != null) {
                 parameters = reusable.swapParameters(parameters);
@@ -271,7 +271,7 @@ public class RingBufferLogEvent implements LogEvent, 
ReusableMessage, CharSequen
         if (message != null) {
             return message;
         }
-        Object[] params = parameters == null ? new Object[0] : 
Arrays.copyOf(parameters, parameterCount);
+        final Object[] params = parameters == null ? new Object[0] : 
Arrays.copyOf(parameters, parameterCount);
         return new ParameterizedMessage(messageText.toString(), params);
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 3562ce4..a152ea7 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -317,7 +317,7 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
         if (!async.isEmpty()) {
             // LOG4J2-511, LOG4J2-392 stop AsyncAppenders first
             LOGGER.trace("{} stopping {} AsyncAppenders.", cls, async.size());
-            for (Appender appender : async) {
+            for (final Appender appender : async) {
                 appender.stop();
             }
         }
@@ -441,13 +441,13 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
                     LOGGER.error("Unable to locate plugin type for " + 
child.getName());
                     continue;
                 }
-                Class<?> clazz = child.getType().getPluginClass();
+                final Class<?> clazz = child.getType().getPluginClass();
                 if (clazz.isAnnotationPresent(Scheduled.class)) {
                     configurationScheduler.incrementScheduledItems();
                 }
                 preConfigure(child);
             }
-        } catch (Exception ex) {
+        } catch (final Exception ex) {
             LOGGER.error("Error capturing node data for node " + 
node.getName(), ex);
         }
     }
@@ -481,7 +481,7 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
                 continue;
             }
             if (child.getName().equalsIgnoreCase("Scripts")) {
-                for (AbstractScript script : 
child.getObject(AbstractScript[].class)) {
+                for (final AbstractScript script : 
child.getObject(AbstractScript[].class)) {
                     if (script instanceof ScriptRef) {
                         LOGGER.error("Script reference to {} not added. 
Scripts definition cannot contain script references",
                                 script.getName());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
index 6b91bd6..68d4db1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AppenderControl.java
@@ -108,7 +108,7 @@ public class AppenderControl extends AbstractFilterable {
     }
 
     private String appenderErrorHandlerMessage(final String prefix) {
-        String result = createErrorMsg(prefix);
+        final String result = createErrorMsg(prefix);
         appender.getHandler().error(result);
         return result;
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AwaitUnconditionallyReliabilityStrategy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AwaitUnconditionallyReliabilityStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AwaitUnconditionallyReliabilityStrategy.java
index 806a1f3..357f18b 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AwaitUnconditionallyReliabilityStrategy.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AwaitUnconditionallyReliabilityStrategy.java
@@ -114,7 +114,7 @@ public class AwaitUnconditionallyReliabilityStrategy 
implements ReliabilityStrat
         if (loggerConfig == configuration.getRootLogger()) {
             try {
                 Thread.sleep(SLEEP_MILLIS);
-            } catch (InterruptedException e) {
+            } catch (final InterruptedException e) {
                 StatusLogger.getLogger().warn("Sleep before stop configuration 
was interrupted.");
             }
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
index 05c5823..6497253 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
@@ -393,11 +393,11 @@ public abstract class ConfigurationFactory extends 
ConfigurationBuilderFactory {
                 final String configLocationStr = 
this.substitutor.replace(PropertiesUtil.getProperties()
                         .getStringProperty(CONFIGURATION_FILE_PROPERTY));
                 if (configLocationStr != null) {
-                    String[] sources = configLocationStr.split(",");
+                    final String[] sources = configLocationStr.split(",");
                     if (sources.length > 1) {
-                        List<AbstractConfiguration> configs = new 
ArrayList<>();
-                        for (String sourceLocation : sources) {
-                            Configuration config = 
getConfiguration(sourceLocation.trim());
+                        final List<AbstractConfiguration> configs = new 
ArrayList<>();
+                        for (final String sourceLocation : sources) {
+                            final Configuration config = 
getConfiguration(sourceLocation.trim());
                             if (config != null && config instanceof 
AbstractConfiguration) {
                                 configs.add((AbstractConfiguration) config);
                             } else {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
index 50b8194..3364ca4 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationScheduler.java
@@ -115,9 +115,9 @@ public class ConfigurationScheduler extends 
AbstractLifeCycle {
      * @return a ScheduledFuture representing the next time the command will 
run.
      */
     public CronScheduledFuture<?> scheduleWithCron(final CronExpression 
cronExpression, final Runnable command) {
-        CronRunnable runnable = new CronRunnable(command, cronExpression);
-        ScheduledFuture<?> future = schedule(runnable, 
nextFireInterval(cronExpression), TimeUnit.MILLISECONDS);
-        CronScheduledFuture<?> cronScheduledFuture = new 
CronScheduledFuture<>(future);
+        final CronRunnable runnable = new CronRunnable(command, 
cronExpression);
+        final ScheduledFuture<?> future = schedule(runnable, 
nextFireInterval(cronExpression), TimeUnit.MILLISECONDS);
+        final CronScheduledFuture<?> cronScheduledFuture = new 
CronScheduledFuture<>(future);
         runnable.setScheduledFuture(cronScheduledFuture);
         return cronScheduledFuture;
     }
@@ -171,18 +171,18 @@ public class ConfigurationScheduler extends 
AbstractLifeCycle {
         public void run() {
             try {
                 runnable.run();
-            } catch(Throwable ex) {
+            } catch(final Throwable ex) {
                 LOGGER.error("Error running command", ex);
             } finally {
-                ScheduledFuture<?> future = schedule(this, 
nextFireInterval(cronExpression), TimeUnit.MILLISECONDS);
+                final ScheduledFuture<?> future = schedule(this, 
nextFireInterval(cronExpression), TimeUnit.MILLISECONDS);
                 scheduledFuture.setScheduledFuture(future);
             }
         }
     }
 
     private long nextFireInterval(final CronExpression cronExpression) {
-        Date now = new Date();
-        Date fireDate = cronExpression.getNextValidTimeAfter(now);
+        final Date now = new Date();
+        final Date fireDate = cronExpression.getNextValidTimeAfter(now);
         return fireDate.getTime() - now.getTime();
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
index f1627bb..a3b1580 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java
@@ -141,7 +141,7 @@ public class ConfigurationSource {
         if (url != null) {
             try {
                 sourceURI = url.toURI();
-            } catch (URISyntaxException ex) {
+            } catch (final URISyntaxException ex) {
                     /* Ignore the exception */
             }
         }
@@ -151,11 +151,11 @@ public class ConfigurationSource {
         if (sourceURI == null && location != null) {
             try {
                 sourceURI = new URI(location);
-            } catch (URISyntaxException ex) {
+            } catch (final URISyntaxException ex) {
                 // Assume the scheme was missing.
                 try {
                     sourceURI = new URI("file://" + location);
-                } catch (URISyntaxException uriEx) {
+                } catch (final URISyntaxException uriEx) {
                     /* Ignore the exception */
                 }
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
index f152ac3..6de2506 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
@@ -115,11 +115,11 @@ public final class Configurator {
             return initialize(name, loader, (URI) null, externalContext);
         }
         if (configLocation.contains(",")) {
-            String[] parts = configLocation.split(",");
+            final String[] parts = configLocation.split(",");
             String scheme = null;
-            List<URI> uris = new ArrayList<>(parts.length);
-            for (String part : parts) {
-                URI uri = NetUtils.toURI(scheme != null ? scheme + ":" + 
part.trim() : part.trim());
+            final List<URI> uris = new ArrayList<>(parts.length);
+            for (final String part : parts) {
+                final URI uri = NetUtils.toURI(scheme != null ? scheme + ":" + 
part.trim() : part.trim());
                 if (scheme == null && uri.getScheme() != null) {
                     scheme = uri.getScheme();
                 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ReliabilityStrategyFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ReliabilityStrategyFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ReliabilityStrategyFactory.java
index 637341b..1e9fc05 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ReliabilityStrategyFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ReliabilityStrategyFactory.java
@@ -1,70 +1,70 @@
-/*
- * 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.config;
-
-import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.util.LoaderUtil;
-import org.apache.logging.log4j.util.PropertiesUtil;
-
-/**
- * Factory for ReliabilityStrategies.
- */
-public final class ReliabilityStrategyFactory {
-    private ReliabilityStrategyFactory() {
-    }
-
-    /**
-     * Returns a new {@code ReliabilityStrategy} instance based on the value 
of system property
-     * {@code log4j.ReliabilityStrategy}. If not value was specified this 
method returns a new
-     * {@code AwaitUnconditionallyReliabilityStrategy}.
-     * <p>
-     * Valid values for this system property are {@code 
"AwaitUnconditionally"} (use
-     * {@code AwaitUnconditionallyReliabilityStrategy}), {@code "Locking"} 
(use {@code LockingReliabilityStrategy}) and
-     * {@code "AwaitCompletion"} (use the default {@code 
AwaitCompletionReliabilityStrategy}).
-     * <p>
-     * Users may also use this system property to specify the fully qualified 
class name of a class that implements the
-     * {@code ReliabilityStrategy} and has a constructor that accepts a single 
{@code LoggerConfig} argument.
-     * 
-     * @param loggerConfig the LoggerConfig the resulting {@code 
ReliabilityStrategy} is associated with
-     * @return a ReliabilityStrategy that helps the specified LoggerConfig to 
log events reliably during or after a
-     *         configuration change
-     */
-    public static ReliabilityStrategy getReliabilityStrategy(final 
LoggerConfig loggerConfig) {
-
-        String strategy = 
PropertiesUtil.getProperties().getStringProperty("log4j.ReliabilityStrategy",
-                "AwaitCompletion");
-        if ("AwaitCompletion".equals(strategy)) {
-            return new AwaitCompletionReliabilityStrategy(loggerConfig);
-        }
-        if ("AwaitUnconditionally".equals(strategy)) {
-            return new AwaitUnconditionallyReliabilityStrategy(loggerConfig);
-        }
-        if ("Locking".equals(strategy)) {
-            return new LockingReliabilityStrategy(loggerConfig);
-        }
-        try {
-            final Class<? extends ReliabilityStrategy> cls = 
LoaderUtil.loadClass(strategy).asSubclass(
-                ReliabilityStrategy.class);
-            return 
cls.getConstructor(LoggerConfig.class).newInstance(loggerConfig);
-        } catch (Exception dynamicFailed) {
-            StatusLogger.getLogger().warn(
-                    "Could not create ReliabilityStrategy for '{}', using 
default AwaitCompletionReliabilityStrategy: {}", strategy, dynamicFailed);
-            return new AwaitCompletionReliabilityStrategy(loggerConfig);
-        }
-    }
-}
+/*
+ * 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.config;
+
+import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.LoaderUtil;
+import org.apache.logging.log4j.util.PropertiesUtil;
+
+/**
+ * Factory for ReliabilityStrategies.
+ */
+public final class ReliabilityStrategyFactory {
+    private ReliabilityStrategyFactory() {
+    }
+
+    /**
+     * Returns a new {@code ReliabilityStrategy} instance based on the value 
of system property
+     * {@code log4j.ReliabilityStrategy}. If not value was specified this 
method returns a new
+     * {@code AwaitUnconditionallyReliabilityStrategy}.
+     * <p>
+     * Valid values for this system property are {@code 
"AwaitUnconditionally"} (use
+     * {@code AwaitUnconditionallyReliabilityStrategy}), {@code "Locking"} 
(use {@code LockingReliabilityStrategy}) and
+     * {@code "AwaitCompletion"} (use the default {@code 
AwaitCompletionReliabilityStrategy}).
+     * <p>
+     * Users may also use this system property to specify the fully qualified 
class name of a class that implements the
+     * {@code ReliabilityStrategy} and has a constructor that accepts a single 
{@code LoggerConfig} argument.
+     * 
+     * @param loggerConfig the LoggerConfig the resulting {@code 
ReliabilityStrategy} is associated with
+     * @return a ReliabilityStrategy that helps the specified LoggerConfig to 
log events reliably during or after a
+     *         configuration change
+     */
+    public static ReliabilityStrategy getReliabilityStrategy(final 
LoggerConfig loggerConfig) {
+
+        final String strategy = 
PropertiesUtil.getProperties().getStringProperty("log4j.ReliabilityStrategy",
+                "AwaitCompletion");
+        if ("AwaitCompletion".equals(strategy)) {
+            return new AwaitCompletionReliabilityStrategy(loggerConfig);
+        }
+        if ("AwaitUnconditionally".equals(strategy)) {
+            return new AwaitUnconditionallyReliabilityStrategy(loggerConfig);
+        }
+        if ("Locking".equals(strategy)) {
+            return new LockingReliabilityStrategy(loggerConfig);
+        }
+        try {
+            final Class<? extends ReliabilityStrategy> cls = 
LoaderUtil.loadClass(strategy).asSubclass(
+                ReliabilityStrategy.class);
+            return 
cls.getConstructor(LoggerConfig.class).newInstance(loggerConfig);
+        } catch (final Exception dynamicFailed) {
+            StatusLogger.getLogger().warn(
+                    "Could not create ReliabilityStrategy for '{}', using 
default AwaitCompletionReliabilityStrategy: {}", strategy, dynamicFailed);
+            return new AwaitCompletionReliabilityStrategy(loggerConfig);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
index f096f84..4dcd293 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
@@ -123,12 +123,12 @@ public class BuiltConfiguration extends 
AbstractConfiguration {
         byte[] buffer = null;
         try {
             if (configSource != null) {
-                InputStream is = configSource.getInputStream();
+                final InputStream is = configSource.getInputStream();
                 if (is != null) {
                     buffer = toByteArray(is);
                 }
             }
-        } catch (IOException ioe) {
+        } catch (final IOException ioe) {
             LOGGER.warn("Unable to read configuration source " + 
configSource.toString());
         }
         super.createAdvertiser(advertiserString, configSource, buffer, 
contentType);
@@ -154,7 +154,7 @@ public class BuiltConfiguration extends 
AbstractConfiguration {
                 if (intervalSeconds > 0) {
                     getWatchManager().setIntervalSeconds(intervalSeconds);
                     if (configFile != null) {
-                        FileWatcher watcher = new 
ConfiguratonFileWatcher((Reconfigurable) this, listeners);
+                        final FileWatcher watcher = new 
ConfiguratonFileWatcher((Reconfigurable) this, listeners);
                         getWatchManager().watchFile(configFile, watcher);
                     }
                 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ce4492f6/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 b29e60b..f272fc1 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
@@ -65,7 +65,7 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
         super(ConfigurationSource.NULL_SOURCE);
         rootNode = configurations.get(0).getRootNode();
         this.configurations = configurations;
-        String mergeStrategyClassName = 
PropertiesUtil.getProperties().getStringProperty(MERGE_STRATEGY_PROPERTY,
+        final String mergeStrategyClassName = 
PropertiesUtil.getProperties().getStringProperty(MERGE_STRATEGY_PROPERTY,
                 DefaultMergeStrategy.class.getName());
         try {
             mergeStrategy = LoaderUtil.newInstanceOf(mergeStrategyClassName);
@@ -73,7 +73,7 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
                 InstantiationException ex) {
             mergeStrategy = new DefaultMergeStrategy();
         }
-        for (AbstractConfiguration config : configurations) {
+        for (final AbstractConfiguration config : configurations) {
             mergeStrategy.mergeRootProperties(rootNode, config);
         }
         final StatusConfiguration statusConfig = new 
StatusConfiguration().withVerboseClasses(VERBOSE_CLASSES)
@@ -100,38 +100,38 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
 
     @Override
     public void setup() {
-        AbstractConfiguration targetConfiguration = configurations.get(0);
+        final AbstractConfiguration targetConfiguration = 
configurations.get(0);
         staffChildConfiguration(targetConfiguration);
-        WatchManager watchManager = getWatchManager();
-        WatchManager targetWatchManager = 
targetConfiguration.getWatchManager();
-        FileWatcher fileWatcher = new ConfiguratonFileWatcher(this, listeners);
+        final WatchManager watchManager = getWatchManager();
+        final WatchManager targetWatchManager = 
targetConfiguration.getWatchManager();
+        final FileWatcher fileWatcher = new ConfiguratonFileWatcher(this, 
listeners);
         if (targetWatchManager.getIntervalSeconds() > 0) {
             
watchManager.setIntervalSeconds(targetWatchManager.getIntervalSeconds());
-            Map<File, FileWatcher> watchers = targetWatchManager.getWatchers();
-            for (Map.Entry<File, FileWatcher> entry : watchers.entrySet()) {
+            final Map<File, FileWatcher> watchers = 
targetWatchManager.getWatchers();
+            for (final Map.Entry<File, FileWatcher> entry : 
watchers.entrySet()) {
                 if (entry.getValue() instanceof ConfiguratonFileWatcher) {
                     watchManager.watchFile(entry.getKey(), fileWatcher);
                 }
             }
         }
-        for (AbstractConfiguration sourceConfiguration : 
configurations.subList(1, configurations.size())) {
+        for (final AbstractConfiguration sourceConfiguration : 
configurations.subList(1, configurations.size())) {
             staffChildConfiguration(sourceConfiguration);
-            Node sourceRoot = sourceConfiguration.getRootNode();
+            final Node sourceRoot = sourceConfiguration.getRootNode();
             mergeStrategy.mergConfigurations(rootNode, sourceRoot, 
getPluginManager());
             if (LOGGER.isEnabled(Level.ALL)) {
-                StringBuilder sb = new StringBuilder();
+                final StringBuilder sb = new StringBuilder();
                 printNodes("", rootNode, sb);
                 System.out.println(sb.toString());
             }
-            int monitorInterval = 
sourceConfiguration.getWatchManager().getIntervalSeconds();
+            final int monitorInterval = 
sourceConfiguration.getWatchManager().getIntervalSeconds();
             if (monitorInterval > 0) {
-                int currentInterval = watchManager.getIntervalSeconds();
+                final int currentInterval = watchManager.getIntervalSeconds();
                 if (currentInterval <= 0 || monitorInterval < currentInterval) 
{
                     watchManager.setIntervalSeconds(monitorInterval);
                 }
-                WatchManager sourceWatchManager = 
sourceConfiguration.getWatchManager();
-                Map<File, FileWatcher> watchers = 
sourceWatchManager.getWatchers();
-                for (Map.Entry<File, FileWatcher> entry : watchers.entrySet()) 
{
+                final WatchManager sourceWatchManager = 
sourceConfiguration.getWatchManager();
+                final Map<File, FileWatcher> watchers = 
sourceWatchManager.getWatchers();
+                for (final Map.Entry<File, FileWatcher> entry : 
watchers.entrySet()) {
                     if (entry.getValue() instanceof ConfiguratonFileWatcher) {
                         watchManager.watchFile(entry.getKey(), fileWatcher);
                     }
@@ -143,11 +143,11 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
     @Override
     public Configuration reconfigure() {
         LOGGER.debug("Reconfiguring composite configuration");
-        List<AbstractConfiguration> configs = new ArrayList<>();
-        ConfigurationFactory factory = ConfigurationFactory.getInstance();
-        for (AbstractConfiguration config : configurations) {
-            ConfigurationSource source = config.getConfigurationSource();
-            URI sourceURI = source.getURI();
+        final List<AbstractConfiguration> configs = new ArrayList<>();
+        final ConfigurationFactory factory = 
ConfigurationFactory.getInstance();
+        for (final AbstractConfiguration config : configurations) {
+            final ConfigurationSource source = config.getConfigurationSource();
+            final URI sourceURI = source.getURI();
             Configuration currentConfig;
             if (sourceURI != null) {
                 LOGGER.warn("Unable to determine URI for configuration {}, 
changes to it will be ignored",
@@ -176,7 +176,7 @@ public class CompositeConfiguration extends 
AbstractConfiguration implements Rec
     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()) {
+        for (final Node child : node.getChildren()) {
             printNodes(indent + "  ", child, sb);
         }
     }

Reply via email to