You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2013/04/28 03:27:29 UTC

svn commit: r1476703 [1/4] - in /logging/log4j/log4j2/trunk: ./ api/ core/ core/src/main/java/org/apache/logging/log4j/core/appender/ core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/ core/src/main/java/org/apache/logging/log4j/core/ap...

Author: rgoers
Date: Sun Apr 28 01:27:27 2013
New Revision: 1476703

URL: http://svn.apache.org/r1476703
Log:
LOG4J2-221 - Remove hundreds of compiler warnings

Modified:
    logging/log4j/log4j2/trunk/BUILDING.txt
    logging/log4j/log4j2/trunk/api/pom.xml
    logging/log4j/log4j2/trunk/core/build.xml
    logging/log4j/log4j2/trunk/core/pom.xml
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AsynchAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSQueueAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSTopicAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SMTPAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfiguration.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfiguration.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/dumbster/smtp/SimpleSmtpServer.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/AppenderRefLevelTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/StrictXMLConfigTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/AsynchAppenderNoLocationTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/AsynchAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/FailoverAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/FileAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/OutputStreamAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/SocketAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/SyslogAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/TestRewritePolicy.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/routing/JSONRoutingAppender2Test.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/routing/JSONRoutingAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestDriver.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/async/perftest/PerfTestResultFormatter.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/config/XMLConfigurationTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/config/XMLLoggerPropsTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/filter/BurstFilterTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/filter/MapFilterTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/filter/StructuredDataFilterTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/layout/HTMLLayoutTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/layout/RFC5424LayoutTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/layout/SerializedLayoutTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/layout/SyslogLayoutTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/layout/XMLLayoutTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/JMSQueueFailoverTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/JMSQueueTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/JMSTopicFailoverTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/JMSTopicTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/SocketMessageLossTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/SocketReconnectTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/SocketServerTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/net/SocketTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowableTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowableTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/pattern/StyleConverterTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowableTest.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/util/Profiler.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/AlwaysFailAppender.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/FailOnceAppender.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/InMemoryAppender.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/test/appender/ListAppender.java
    logging/log4j/log4j2/trunk/flume-ng/pom.xml
    logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAppender.java
    logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeAvroManager.java
    logging/log4j/log4j2/trunk/flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedManager.java
    logging/log4j/log4j2/trunk/jcl-bridge/pom.xml
    logging/log4j/log4j2/trunk/jcl-bridge/src/test/java/org/apache/logging/log4j/jcl/LoggerTest.java
    logging/log4j/log4j2/trunk/log4j-to-slf4j/pom.xml
    logging/log4j/log4j2/trunk/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/MDCContextMap.java
    logging/log4j/log4j2/trunk/log4j12-api/pom.xml
    logging/log4j/log4j2/trunk/log4j12-api/src/main/java/org/apache/log4j/MDC.java
    logging/log4j/log4j2/trunk/log4j12-api/src/main/java/org/apache/log4j/NDC.java
    logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/CategoryTest.java
    logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/LoggerTest.java
    logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/PriorityTest.java
    logging/log4j/log4j2/trunk/samples/flume-common/src/main/java/org/apache/logging/log4j/samples/app/LogEventFactory.java
    logging/log4j/log4j2/trunk/slf4j-impl/pom.xml
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/Log4JLoggerFactory.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/Log4JMDCAdapter.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/Log4JMarkerFactory.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/helpers/MarkerWrapper.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/SLF4JLogger.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/StaticLoggerBinder.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/main/java/org/slf4j/impl/StaticMarkerBinder.java
    logging/log4j/log4j2/trunk/slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerTest.java
    logging/log4j/log4j2/trunk/src/changes/changes.xml
    logging/log4j/log4j2/trunk/src/site/xdoc/manual/api.xml
    logging/log4j/log4j2/trunk/src/site/xdoc/manual/thread-context.xml
    logging/log4j/log4j2/trunk/taglib/pom.xml
    logging/log4j/log4j2/trunk/taglib/src/test/java/org/apache/logging/log4j/taglib/CatchingTagTest.java
    logging/log4j/log4j2/trunk/taglib/src/test/java/org/apache/logging/log4j/taglib/EntryTagTest.java
    logging/log4j/log4j2/trunk/taglib/src/test/java/org/apache/logging/log4j/taglib/ExitTagTest.java
    logging/log4j/log4j2/trunk/taglib/src/test/java/org/apache/logging/log4j/taglib/LoggingMessageTagSupportTest.java
    logging/log4j/log4j2/trunk/web/pom.xml
    logging/log4j/log4j2/trunk/web/src/main/java/org/apache/logging/log4j/core/web/Log4jContextListener.java
    logging/log4j/log4j2/trunk/web/src/test/java/org/apache/logging/log4j/core/web/Log4jContextListenerTest.java

Modified: logging/log4j/log4j2/trunk/BUILDING.txt
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/BUILDING.txt?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/BUILDING.txt (original)
+++ logging/log4j/log4j2/trunk/BUILDING.txt Sun Apr 28 01:27:27 2013
@@ -1,6 +1,6 @@
 Building Log4J 2
   
-To build Log4J 2, you need a JDK implementation version 1.5 or greater, and Apache Maven.
+To build Log4J 2, you need a JDK implementation version 1.6 or greater, and Apache Maven.
 
 To build the site, from a command line, run:
 

Modified: logging/log4j/log4j2/trunk/api/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/api/pom.xml?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/api/pom.xml (original)
+++ logging/log4j/log4j2/trunk/api/pom.xml Sun Apr 28 01:27:27 2013
@@ -150,7 +150,7 @@
         <artifactId>maven-pmd-plugin</artifactId>
         <version>${pmd.plugin.version}</version>
         <configuration>
-          <targetJdk>1.5</targetJdk>
+          <targetJdk>${maven.compile.target}</targetJdk>
         </configuration>
       </plugin>
       <plugin>

Modified: logging/log4j/log4j2/trunk/core/build.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/build.xml?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/build.xml (original)
+++ logging/log4j/log4j2/trunk/core/build.xml Sun Apr 28 01:27:27 2013
@@ -50,8 +50,8 @@ Use of Maven to build this component is 
        
 
     <!--   Java compiler settings   -->
-    <property name="javac.source" value="1.5"/>
-    <property name="javac.target" value="1.5"/>
+    <property name="javac.source" value="1.6"/>
+    <property name="javac.target" value="1.6"/>
     <property name="javac.deprecation" value="true"/>
     <property name="javac.debug" value="true"/>
        

Modified: logging/log4j/log4j2/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/pom.xml?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/pom.xml (original)
+++ logging/log4j/log4j2/trunk/core/pom.xml Sun Apr 28 01:27:27 2013
@@ -297,7 +297,7 @@
         <artifactId>maven-pmd-plugin</artifactId>
         <version>${pmd.plugin.version}</version>
         <configuration>
-          <targetJdk>1.5</targetJdk>
+          <targetJdk>${maven.compile.target}</targetJdk>
         </configuration>
       </plugin>
       <plugin>

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractAppender.java Sun Apr 28 01:27:27 2013
@@ -16,17 +16,17 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.io.Serializable;
-
+import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.ErrorHandler;
 import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LifeCycle;
 import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.filter.AbstractFilterable;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.Logger;
+
+import java.io.Serializable;
 
 /**
  * Abstract base class for Appenders. Although Appenders do not have to extend this class, doing so
@@ -84,6 +84,7 @@ public abstract class AbstractAppender<T
      * Returns the ErrorHandler, if any.
      * @return The ErrorHandler.
      */
+    @Override
     public ErrorHandler getHandler() {
         return handler;
     }
@@ -92,6 +93,7 @@ public abstract class AbstractAppender<T
      * The handler must be set before the appender is started.
      * @param handler The ErrorHandler to use.
      */
+    @Override
     public void setHandler(final ErrorHandler handler) {
         if (handler == null) {
             LOGGER.error("The handler cannot be set to null");
@@ -114,6 +116,7 @@ public abstract class AbstractAppender<T
      * Returns the name of the Appender.
      * @return The name of the Appender.
      */
+    @Override
     public String getName() {
         return name;
     }
@@ -122,6 +125,7 @@ public abstract class AbstractAppender<T
      * Returns the Layout for the appender.
      * @return The Layout used to format the event.
      */
+    @Override
     public Layout<T> getLayout() {
         return layout;
     }
@@ -131,6 +135,7 @@ public abstract class AbstractAppender<T
      * AppenderControl will allow the exception to percolate.
      * @return true if exceptions will be suppressed, false otherwise.
      */
+    @Override
     public boolean isExceptionSuppressed() {
         return handleException;
     }
@@ -138,6 +143,7 @@ public abstract class AbstractAppender<T
     /**
      * Start the Appender.
      */
+    @Override
     public void start() {
         startFilter();
         this.started = true;
@@ -146,6 +152,7 @@ public abstract class AbstractAppender<T
     /**
      * Stop the Appender.
      */
+    @Override
     public void stop() {
         this.started = false;
         stopFilter();
@@ -155,6 +162,7 @@ public abstract class AbstractAppender<T
      * Returns true if the Appender is started, false otherwise.
      * @return true if the Appender is started, false otherwise.
      */
+    @Override
     public boolean isStarted() {
         return started;
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java Sun Apr 28 01:27:27 2013
@@ -65,6 +65,7 @@ public abstract class AbstractManager {
                                                               final T data) {
         LOCK.lock();
         try {
+            @SuppressWarnings("unchecked")
             M manager = (M) MAP.get(name);
             if (manager == null) {
                 manager = factory.createManager(name, data);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AbstractOutputStreamAppender.java Sun Apr 28 01:27:27 2013
@@ -20,6 +20,7 @@ import org.apache.logging.log4j.core.Fil
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 
+import java.io.Serializable;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -27,7 +28,7 @@ import java.util.concurrent.locks.Reentr
 /**
  * Appends log events as bytes to a byte output stream. The stream encoding is defined in the layout.
  */
-public abstract class AbstractOutputStreamAppender extends AbstractAppender {
+public abstract class AbstractOutputStreamAppender<T extends Serializable> extends AbstractAppender<T> {
 
     /**
      * Immediate flush means that the underlying writer or output stream
@@ -54,7 +55,7 @@ public abstract class AbstractOutputStre
      * @param layout The layout to format the message.
      * @param manager The OutputStreamManager.
      */
-    protected AbstractOutputStreamAppender(final String name, final Layout layout, final Filter filter,
+    protected AbstractOutputStreamAppender(final String name, final Layout<T> layout, final Filter filter,
                                            final boolean handleException, final boolean immediateFlush,
                                            final OutputStreamManager manager) {
         super(name, filter, layout, handleException);
@@ -107,6 +108,7 @@ public abstract class AbstractOutputStre
      * override this method.
      * @param event The LogEvent.
      */
+    @Override
     public void append(final LogEvent event) {
         readLock.lock();
         try {

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AsynchAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AsynchAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AsynchAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/AsynchAppender.java Sun Apr 28 01:27:27 2013
@@ -57,7 +57,7 @@ public final class AsynchAppender<T exte
     private final AppenderRef[] appenderRefs;
     private final String errorRef;
     private final boolean includeLocation;
-    private AppenderControl errorAppender;
+    private AppenderControl<?> errorAppender;
     private AsynchThread thread;
 
     private AsynchAppender(final String name, final Filter filter, final AppenderRef[] appenderRefs,
@@ -74,9 +74,10 @@ public final class AsynchAppender<T exte
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void start() {
         final Map<String, Appender<?>> map = config.getAppenders();
-        final List<AppenderControl> appenders = new ArrayList<AppenderControl>();
+        final List<AppenderControl<?>> appenders = new ArrayList<AppenderControl<?>>();
         for (final AppenderRef appenderRef : appenderRefs) {
             if (map.containsKey(appenderRef.getRef())) {
                 appenders.add(new AppenderControl(map.get(appenderRef.getRef()), appenderRef.getLevel(),
@@ -118,6 +119,7 @@ public final class AsynchAppender<T exte
      * <p/>
      * @param event The LogEvent.
      */
+    @Override
     public void append(final LogEvent event) {
         if (!isStarted()) {
             throw new IllegalStateException("AsynchAppender " + getName() + " is not active");
@@ -180,8 +182,7 @@ public final class AsynchAppender<T exte
 
         final boolean isBlocking = blocking == null ? true : Boolean.valueOf(blocking);
         final int queueSize = size == null ? DEFAULT_QUEUE_SIZE : Integer.parseInt(size);
-        final boolean isIncludeLocation = includeLocation == null ? false :
-                Boolean.parseBoolean(includeLocation);
+        final boolean isIncludeLocation = includeLocation != null && Boolean.parseBoolean(includeLocation);
 
         final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
 
@@ -195,10 +196,10 @@ public final class AsynchAppender<T exte
     private class AsynchThread extends Thread {
 
         private volatile boolean shutdown = false;
-        private final List<AppenderControl> appenders;
+        private final List<AppenderControl<?>> appenders;
         private final BlockingQueue<Serializable> queue;
 
-        public AsynchThread(final List<AppenderControl> appenders, final BlockingQueue<Serializable> queue) {
+        public AsynchThread(final List<AppenderControl<?>> appenders, final BlockingQueue<Serializable> queue) {
             this.appenders = appenders;
             this.queue = queue;
         }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java Sun Apr 28 01:27:27 2013
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.util.Pro
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
+import java.io.Serializable;
 import java.lang.reflect.Constructor;
 
 /**
@@ -42,7 +43,7 @@ import java.lang.reflect.Constructor;
  * default. OTOH, a Writer cannot print byte streams.
  */
 @Plugin(name = "Console", type = "Core", elementType = "appender", printObject = true)
-public final class ConsoleAppender extends AbstractOutputStreamAppender {
+public final class ConsoleAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
 
     private static ConsoleManagerFactory factory = new ConsoleManagerFactory();
 
@@ -56,7 +57,7 @@ public final class ConsoleAppender exten
         SYSTEM_ERR
     }
 
-    private ConsoleAppender(final String name, final Layout layout, final Filter filter,
+    private ConsoleAppender(final String name, final Layout<T> layout, final Filter filter,
                             final OutputStreamManager manager,
                             final boolean handleExceptions) {
         super(name, layout, filter, handleExceptions, true, manager);
@@ -74,7 +75,7 @@ public final class ConsoleAppender exten
      * @return The ConsoleAppender.
      */
     @PluginFactory
-    public static ConsoleAppender createAppender(@PluginElement("layout") Layout layout,
+    public static <S extends Serializable> ConsoleAppender<S> createAppender(@PluginElement("layout") Layout<S> layout,
                                                  @PluginElement("filters") final Filter filter,
                                                  @PluginAttr("target") final String t,
                                                  @PluginAttr("name") final String name,
@@ -85,12 +86,14 @@ public final class ConsoleAppender exten
             return null;
         }
         if (layout == null) {
-            layout = PatternLayout.createLayout(null, null, null, null);
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null);
+            layout = l;
         }
         final boolean isFollow = follow == null ? false : Boolean.valueOf(follow);
         final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
         final Target target = t == null ? Target.SYSTEM_OUT : Target.valueOf(t);
-        return new ConsoleAppender(name, layout, filter, getManager(isFollow, target), handleExceptions);
+        return new ConsoleAppender<S>(name, layout, filter, getManager(isFollow, target), handleExceptions);
     }
 
     private static OutputStreamManager getManager(final boolean follow, final Target target) {
@@ -224,6 +227,7 @@ public final class ConsoleAppender exten
          * @param data The data required to create the entity.
          * @return The OutputStreamManager
          */
+        @Override
         public OutputStreamManager createManager(final String name, final FactoryData data) {
             return new OutputStreamManager(data.os, data.type);
         }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FailoverAppender.java Sun Apr 28 01:27:27 2013
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.helpers.Constants;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -39,7 +40,7 @@ import java.util.Map;
  * to not suppress exceptions for the FailoverAppender to work.
  */
 @Plugin(name = "Failover", type = "Core", elementType = "appender", printObject = true)
-public final class FailoverAppender extends AbstractAppender {
+public final class FailoverAppender<T extends Serializable> extends AbstractAppender<T> {
 
     private static final int DEFAULT_INTERVAL = 60 * Constants.MILLIS_IN_SECONDS;
 
@@ -49,9 +50,9 @@ public final class FailoverAppender exte
 
     private final Configuration config;
 
-    private AppenderControl primary;
+    private AppenderControl<?> primary;
 
-    private final List<AppenderControl> failoverAppenders = new ArrayList<AppenderControl>();
+    private final List<AppenderControl<?>> failoverAppenders = new ArrayList<AppenderControl<?>>();
 
     private final long interval;
 
@@ -70,6 +71,7 @@ public final class FailoverAppender exte
 
 
     @Override
+    @SuppressWarnings("unchecked")
     public void start() {
         final Map<String, Appender<?>> map = config.getAppenders();
         int errors = 0;
@@ -99,8 +101,8 @@ public final class FailoverAppender exte
      * Handle the Log event.
      * @param event The LogEvent.
      */
+    @Override
     public void append(final LogEvent event) {
-        final RuntimeException re = null;
         if (!isStarted()) {
             error("FailoverAppender " + getName() + " did not start successfully");
             return;
@@ -180,7 +182,7 @@ public final class FailoverAppender exte
      * @return The FailoverAppender that was created.
      */
     @PluginFactory
-    public static FailoverAppender createAppender(@PluginAttr("name") final String name,
+    public static <S extends Serializable> FailoverAppender<S> createAppender(@PluginAttr("name") final String name,
                                                   @PluginAttr("primary") final String primary,
                                                   @PluginElement("failovers") final String[] failovers,
                                                   @PluginAttr("retryInterval") final String interval,
@@ -220,6 +222,6 @@ public final class FailoverAppender exte
 
         final boolean handleExceptions = suppress == null ? true : Boolean.valueOf(suppress);
 
-        return new FailoverAppender(name, filter, primary, failovers, retryInterval, config, handleExceptions);
+        return new FailoverAppender<S>(name, filter, primary, failovers, retryInterval, config, handleExceptions);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastFileAppender.java Sun Apr 28 01:27:27 2013
@@ -16,9 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
@@ -31,17 +28,21 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.Advertiser;
 
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * File Appender.
  */
 @Plugin(name = "FastFile", type = "Core", elementType = "appender", printObject = true)
-public final class FastFileAppender extends AbstractOutputStreamAppender {
+public final class FastFileAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
 
     private final String fileName;
     private Object advertisement;
     private final Advertiser advertiser;
 
-    private FastFileAppender(String name, Layout<?> layout, Filter filter,
+    private FastFileAppender(String name, Layout<T> layout, Filter filter,
             FastFileManager manager, String filename, boolean handleException,
             boolean immediateFlush, Advertiser advertiser) {
         super(name, layout, filter, handleException, immediateFlush, manager);
@@ -116,13 +117,13 @@ public final class FastFileAppender exte
      * @return The FileAppender.
      */
     @PluginFactory
-    public static FastFileAppender createAppender(
+    public static <S extends Serializable> FastFileAppender<S> createAppender(
             @PluginAttr("fileName") String fileName,
             @PluginAttr("append") String append,
             @PluginAttr("name") String name,
             @PluginAttr("immediateFlush") String immediateFlush,
             @PluginAttr("suppressExceptions") String suppress,
-            @PluginElement("layout") Layout<?> layout,
+            @PluginElement("layout") Layout<S> layout,
             @PluginElement("filters") final Filter filter,
             @PluginAttr("advertise") final String advertise,
             @PluginAttr("advertiseURI") final String advertiseURI,
@@ -153,9 +154,11 @@ public final class FastFileAppender exte
             return null;
         }
         if (layout == null) {
-            layout = PatternLayout.createLayout(null, null, null, null);
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null);
+            layout = l;
         }
-        return new FastFileAppender(name, layout, filter, manager, fileName,
+        return new FastFileAppender<S>(name, layout, filter, manager, fileName,
                 handleExceptions, isFlush, isAdvertise ? config.getAdvertiser()
                         : null);
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FastRollingFileAppender.java Sun Apr 28 01:27:27 2013
@@ -16,9 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
@@ -36,19 +33,23 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.Advertiser;
 
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * An appender that writes to random access files and can roll over at
  * intervals.
  */
 @Plugin(name = "FastRollingFile", type = "Core", elementType = "appender", printObject = true)
-public final class FastRollingFileAppender extends AbstractOutputStreamAppender {
+public final class FastRollingFileAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
 
     private final String fileName;
     private final String filePattern;
     private Object advertisement;
     private final Advertiser advertiser;
 
-    private FastRollingFileAppender(String name, Layout<?> layout,
+    private FastRollingFileAppender(String name, Layout<T> layout,
             Filter filter, RollingFileManager manager, String fileName,
             String filePattern, boolean handleException,
             boolean immediateFlush, Advertiser advertiser) {
@@ -138,7 +139,7 @@ public final class FastRollingFileAppend
      * @return A FastRollingFileAppender.
      */
     @PluginFactory
-    public static FastRollingFileAppender createAppender(
+    public static <S extends Serializable> FastRollingFileAppender<S> createAppender(
             @PluginAttr("fileName") final String fileName,
             @PluginAttr("filePattern") final String filePattern,
             @PluginAttr("append") final String append,
@@ -146,7 +147,7 @@ public final class FastRollingFileAppend
             @PluginAttr("immediateFlush") final String immediateFlush,
             @PluginElement("policy") final TriggeringPolicy policy,
             @PluginElement("strategy") RolloverStrategy strategy,
-            @PluginElement("layout") Layout<?> layout,
+            @PluginElement("layout") Layout<S> layout,
             @PluginElement("filter") final Filter filter,
             @PluginAttr("suppressExceptions") final String suppress,
             @PluginAttr("advertise") final String advertise,
@@ -197,10 +198,12 @@ public final class FastRollingFileAppend
         }
 
         if (layout == null) {
-            layout = PatternLayout.createLayout(null, null, null, null);
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null);
+            layout = l;
         }
 
-        return new FastRollingFileAppender(name, layout, filter, manager,
+        return new FastRollingFileAppender<S>(name, layout, filter, manager,
                 fileName, filePattern, handleExceptions, isFlush,
                 isAdvertise ? config.getAdvertiser() : null);
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/FileAppender.java Sun Apr 28 01:27:27 2013
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -29,18 +27,23 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.Advertiser;
 
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * File Appender.
  */
 @Plugin(name = "File", type = "Core", elementType = "appender", printObject = true)
-public final class FileAppender extends AbstractOutputStreamAppender {
+public final class FileAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
 
     private final String fileName;
     private final Advertiser advertiser;
     private Object advertisement;
 
-    private FileAppender(final String name, final Layout layout, final Filter filter, final FileManager manager,
-                         final String filename, final boolean handleException, final boolean immediateFlush, Advertiser advertiser) {
+    private FileAppender(final String name, final Layout<T> layout, final Filter filter, final FileManager manager,
+                         final String filename, final boolean handleException, final boolean immediateFlush,
+                         Advertiser advertiser) {
         super(name, layout, filter, handleException, immediateFlush, manager);
         if (advertiser != null)
         {
@@ -91,14 +94,14 @@ public final class FileAppender extends 
      * @return The FileAppender.
      */
     @PluginFactory
-    public static FileAppender createAppender(@PluginAttr("fileName") final String fileName,
+    public static <S extends Serializable> FileAppender<S> createAppender(@PluginAttr("fileName") final String fileName,
                                               @PluginAttr("append") final String append,
                                               @PluginAttr("locking") final String locking,
                                               @PluginAttr("name") final String name,
                                               @PluginAttr("immediateFlush") final String immediateFlush,
                                               @PluginAttr("suppressExceptions") final String suppress,
                                               @PluginAttr("bufferedIO") final String bufferedIO,
-                                              @PluginElement("layout") Layout layout,
+                                              @PluginElement("layout") Layout<S> layout,
                                               @PluginElement("filters") final Filter filter,
                                               @PluginAttr("advertise") final String advertise,
                                               @PluginAttr("advertiseURI") final String advertiseURI,
@@ -132,9 +135,12 @@ public final class FileAppender extends 
             return null;
         }
         if (layout == null) {
-            layout = PatternLayout.createLayout(null, null, null, null);
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null);
+            layout = l;
         }
 
-        return new FileAppender(name, layout, filter, manager, fileName, handleExceptions, isFlush, isAdvertise ? config.getAdvertiser() : null);
+        return new FileAppender<S>(name, layout, filter, manager, fileName, handleExceptions, isFlush,
+                isAdvertise ? config.getAdvertiser() : null);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSQueueAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSQueueAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSQueueAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSQueueAppender.java Sun Apr 28 01:27:27 2013
@@ -26,16 +26,18 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.SerializedLayout;
 import org.apache.logging.log4j.core.net.JMSQueueManager;
 
+import java.io.Serializable;
+
 /**
  * Appender to write to a JMS Queue.
  */
 @Plugin(name = "JMSQueue", type = "Core", elementType = "appender", printObject = true)
-public final class JMSQueueAppender extends AbstractAppender {
+public final class JMSQueueAppender<T extends Serializable> extends AbstractAppender<T> {
 
     private final JMSQueueManager manager;
 
-    private JMSQueueAppender(final String name, final Filter filter, final Layout layout, final JMSQueueManager manager,
-                            final boolean handleExceptions) {
+    private JMSQueueAppender(final String name, final Filter filter, final Layout<T> layout,
+                             final JMSQueueManager manager, final boolean handleExceptions) {
         super(name, filter, layout, handleExceptions);
         this.manager = manager;
     }
@@ -45,6 +47,7 @@ public final class JMSQueueAppender exte
      * <p/>
      * @param event The LogEvent.
      */
+    @Override
     public void append(final LogEvent event) {
         try {
             manager.send(getLayout().toSerializable(event));
@@ -73,7 +76,7 @@ public final class JMSQueueAppender exte
      * @return The JMSQueueAppender.
      */
     @PluginFactory
-    public static JMSQueueAppender createAppender(
+    public static <S extends Serializable> JMSQueueAppender<S> createAppender(
                                                 @PluginAttr("name") final String name,
                                                 @PluginAttr("factoryName") final String factoryName,
                                                 @PluginAttr("providerURL") final String providerURL,
@@ -84,7 +87,7 @@ public final class JMSQueueAppender exte
                                                 @PluginAttr("queueBindingName") final String queueBindingName,
                                                 @PluginAttr("userName") final String userName,
                                                 @PluginAttr("password") final String password,
-                                                @PluginElement("layout") Layout layout,
+                                                @PluginElement("layout") Layout<S> layout,
                                                 @PluginElement("filter") final Filter filter,
                                                 @PluginAttr("suppressExceptions") final String suppress) {
         if (name == null) {
@@ -98,8 +101,10 @@ public final class JMSQueueAppender exte
             return null;
         }
         if (layout == null) {
-            layout = SerializedLayout.createLayout();
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>) SerializedLayout.createLayout();
+            layout = l;
         }
-        return new JMSQueueAppender(name, filter, layout, manager, handleExceptions);
+        return new JMSQueueAppender<S>(name, filter, layout, manager, handleExceptions);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSTopicAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSTopicAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSTopicAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/JMSTopicAppender.java Sun Apr 28 01:27:27 2013
@@ -26,16 +26,18 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.SerializedLayout;
 import org.apache.logging.log4j.core.net.JMSTopicManager;
 
+import java.io.Serializable;
+
 /**
  * Appender to write to a JMS Topic.
  */
 @Plugin(name = "JMSTopic", type = "Core", elementType = "appender", printObject = true)
-public final class JMSTopicAppender extends AbstractAppender {
+public final class JMSTopicAppender<T extends Serializable> extends AbstractAppender<T> {
 
     private final JMSTopicManager manager;
 
-    private JMSTopicAppender(final String name, final Filter filter, final Layout layout, final JMSTopicManager manager,
-                            final boolean handleExceptions) {
+    private JMSTopicAppender(final String name, final Filter filter, final Layout<T> layout,
+                             final JMSTopicManager manager, final boolean handleExceptions) {
         super(name, filter, layout, handleExceptions);
         this.manager = manager;
     }
@@ -45,6 +47,7 @@ public final class JMSTopicAppender exte
      * <p/>
      * @param event The LogEvent.
      */
+    @Override
     public void append(final LogEvent event) {
         try {
             manager.send(getLayout().toSerializable(event));
@@ -73,7 +76,7 @@ public final class JMSTopicAppender exte
      * @return The JMSTopicAppender.
      */
     @PluginFactory
-    public static JMSTopicAppender createAppender(
+    public static <S extends Serializable> JMSTopicAppender<S> createAppender(
                                                 @PluginAttr("name") final String name,
                                                 @PluginAttr("factoryName") final String factoryName,
                                                 @PluginAttr("providerURL") final String providerURL,
@@ -84,7 +87,7 @@ public final class JMSTopicAppender exte
                                                 @PluginAttr("topicBindingName") final String topicBindingName,
                                                 @PluginAttr("userName") final String userName,
                                                 @PluginAttr("password") final String password,
-                                                @PluginElement("layout") Layout layout,
+                                                @PluginElement("layout") Layout<S> layout,
                                                 @PluginElement("filters") final Filter filter,
                                                 @PluginAttr("suppressExceptions") final String suppress) {
 
@@ -99,8 +102,10 @@ public final class JMSTopicAppender exte
             return null;
         }
         if (layout == null) {
-            layout = SerializedLayout.createLayout();
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)SerializedLayout.createLayout();
+            layout = l;
         }
-        return new JMSTopicAppender(name, filter, layout, manager, handleExceptions);
+        return new JMSTopicAppender<S>(name, filter, layout, manager, handleExceptions);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/RollingFileAppender.java Sun Apr 28 01:27:27 2013
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
@@ -34,11 +32,15 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.layout.PatternLayout;
 import org.apache.logging.log4j.core.net.Advertiser;
 
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * An appender that writes to files and can roll over at intervals.
  */
 @Plugin(name = "RollingFile", type = "Core", elementType = "appender", printObject = true)
-public final class RollingFileAppender extends AbstractOutputStreamAppender {
+public final class RollingFileAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
 
     private final String fileName;
     private final String filePattern;
@@ -46,7 +48,7 @@ public final class RollingFileAppender e
     private final Advertiser advertiser;
 
 
-    private RollingFileAppender(final String name, final Layout layout, final Filter filter,
+    private RollingFileAppender(final String name, final Layout<T> layout, final Filter filter,
                                 final RollingFileManager manager, final String fileName,
                                 final String filePattern, final boolean handleException, final boolean immediateFlush,
                                 Advertiser advertiser) {
@@ -119,7 +121,8 @@ public final class RollingFileAppender e
      * @return A RollingFileAppender.
      */
     @PluginFactory
-    public static RollingFileAppender createAppender(@PluginAttr("fileName") final String fileName,
+    public static <S extends Serializable> RollingFileAppender<S> createAppender(
+                                              @PluginAttr("fileName") final String fileName,
                                               @PluginAttr("filePattern") final String filePattern,
                                               @PluginAttr("append") final String append,
                                               @PluginAttr("name") final String name,
@@ -127,7 +130,7 @@ public final class RollingFileAppender e
                                               @PluginAttr("immediateFlush") final String immediateFlush,
                                               @PluginElement("policy") final TriggeringPolicy policy,
                                               @PluginElement("strategy") RolloverStrategy strategy,
-                                              @PluginElement("layout") Layout layout,
+                                              @PluginElement("layout") Layout<S> layout,
                                               @PluginElement("filter") final Filter filter,
                                               @PluginAttr("suppressExceptions") final String suppress,
                                               @PluginAttr("advertise") final String advertise,
@@ -170,10 +173,12 @@ public final class RollingFileAppender e
         }
 
         if (layout == null) {
-            layout = PatternLayout.createLayout(null, null, null, null);
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)PatternLayout.createLayout(null, null, null, null);
+            layout = l;
         }
 
-        return new RollingFileAppender(name, layout, filter, manager, fileName, filePattern,
+        return new RollingFileAppender<S>(name, layout, filter, manager, fileName, filePattern,
             handleExceptions, isFlush, isAdvertise ? config.getAdvertiser() : null);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SMTPAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SMTPAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SMTPAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SMTPAppender.java Sun Apr 28 01:27:27 2013
@@ -28,6 +28,8 @@ import org.apache.logging.log4j.core.Fil
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.LogEvent;
 
+import java.io.Serializable;
+
 /**
  * Send an e-mail when a specific logging event occurs, typically on errors or
  * fatal errors.
@@ -47,14 +49,14 @@ import org.apache.logging.log4j.core.Log
  * appender.
  */
 @Plugin(name = "SMTP", type = "Core", elementType = "appender", printObject = true)
-public final class SMTPAppender extends AbstractAppender {
+public final class SMTPAppender<T extends Serializable> extends AbstractAppender<T> {
 
     private static final int DEFAULT_BUFFER_SIZE = 512;
 
     /** The SMTP Manager */
     protected final SMTPManager manager;
 
-    private SMTPAppender(final String name, final Filter filter, final Layout<?> layout, final SMTPManager manager,
+    private SMTPAppender(final String name, final Filter filter, final Layout<T> layout, final SMTPManager manager,
                          final boolean handleExceptions) {
         super(name, filter, layout, handleExceptions);
         this.manager = manager;
@@ -101,7 +103,7 @@ public final class SMTPAppender extends 
      * @return The SMTPAppender.
      */
     @PluginFactory
-    public static SMTPAppender createAppender(@PluginAttr("name") final String name,
+    public static <S extends Serializable> SMTPAppender<S> createAppender(@PluginAttr("name") final String name,
                                               @PluginAttr("to") final String to,
                                               @PluginAttr("cc") final String cc,
                                               @PluginAttr("bcc") final String bcc,
@@ -115,7 +117,7 @@ public final class SMTPAppender extends 
                                               @PluginAttr("smtpPassword") final String smtpPassword,
                                               @PluginAttr("smtpDebug") final String smtpDebug,
                                               @PluginAttr("bufferSize") final String bufferSizeNum,
-                                              @PluginElement("layout") Layout<?> layout,
+                                              @PluginElement("layout") Layout<S> layout,
                                               @PluginElement("filter") Filter filter,
                                               @PluginAttr("suppressExceptions") final String suppressExceptions) {
         if (name == null) {
@@ -129,7 +131,9 @@ public final class SMTPAppender extends 
         final int bufferSize = bufferSizeNum == null ? DEFAULT_BUFFER_SIZE : Integer.valueOf(bufferSizeNum);
 
         if (layout == null) {
-            layout = HTMLLayout.createLayout(null, null, null, null, null, null);
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>)HTMLLayout.createLayout(null, null, null, null, null, null);
+            layout = l;
         }
         if (filter == null) {
             filter = ThresholdFilter.createFilter(null, null, null);
@@ -141,7 +145,7 @@ public final class SMTPAppender extends 
             return null;
         }
 
-        return new SMTPAppender(name, filter, layout, manager, isHandleExceptions);
+        return new SMTPAppender<S>(name, filter, layout, manager, isHandleExceptions);
     }
 
     /**
@@ -164,6 +168,7 @@ public final class SMTPAppender extends 
      * sent.
      * @param event The Log event.
      */
+    @Override
     public void append(final LogEvent event) {
         manager.sendEvents(getLayout(), event);
     }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SocketAppender.java Sun Apr 28 01:27:27 2013
@@ -16,8 +16,6 @@
  */
 package org.apache.logging.log4j.core.appender;
 
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.Layout;
 import org.apache.logging.log4j.core.config.Configuration;
@@ -34,15 +32,19 @@ import org.apache.logging.log4j.core.net
 import org.apache.logging.log4j.core.net.TCPSocketManager;
 import org.apache.logging.log4j.util.EnglishEnums;
 
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * An Appender that delivers events over socket connections. Supports both TCP and UDP.
  */
 @Plugin(name = "Socket", type = "Core", elementType = "appender", printObject = true)
-public class SocketAppender extends AbstractOutputStreamAppender {
+public class SocketAppender<T extends Serializable> extends AbstractOutputStreamAppender<T> {
     private Object advertisement;
     private final Advertiser advertiser;
 
-    protected SocketAppender(final String name, final Layout layout, final Filter filter,
+    protected SocketAppender(final String name, final Layout<T> layout, final Filter filter,
                              final AbstractSocketManager manager, final boolean handleException,
                              final boolean immediateFlush, Advertiser advertiser) {
         super(name, layout, filter, handleException, immediateFlush, manager);
@@ -83,7 +85,7 @@ public class SocketAppender extends Abst
      * @return A SocketAppender.
      */
     @PluginFactory
-    public static SocketAppender createAppender(@PluginAttr("host") final String host,
+    public static <S extends Serializable> SocketAppender<S> createAppender(@PluginAttr("host") final String host,
                                                 @PluginAttr("port") final String portNum,
                                                 @PluginAttr("protocol") final String protocol,
                                                 @PluginAttr("reconnectionDelay") final String delay,
@@ -91,7 +93,7 @@ public class SocketAppender extends Abst
                                                 @PluginAttr("name") final String name,
                                                 @PluginAttr("immediateFlush") final String immediateFlush,
                                                 @PluginAttr("suppressExceptions") final String suppress,
-                                                @PluginElement("layout") Layout layout,
+                                                @PluginElement("layout") Layout<S> layout,
                                                 @PluginElement("filters") final Filter filter,
                                                 @PluginAttr("advertise") final String advertise,
                                                 @PluginConfiguration final Configuration config) {
@@ -103,7 +105,9 @@ public class SocketAppender extends Abst
         final int reconnectDelay = delay == null ? 0 : Integer.parseInt(delay);
         final int port = portNum == null ? 0 : Integer.parseInt(portNum);
         if (layout == null) {
-            layout = SerializedLayout.createLayout();
+            @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"})
+            Layout<S> l = (Layout<S>) SerializedLayout.createLayout();
+            layout = l;
         }
 
         if (name == null) {
@@ -118,7 +122,8 @@ public class SocketAppender extends Abst
             return null;
         }
 
-        return new SocketAppender(name, layout, filter, manager, handleExceptions, isFlush, isAdvertise ? config.getAdvertiser() : null);
+        return new SocketAppender<S>(name, layout, filter, manager, handleExceptions, isFlush,
+                isAdvertise ? config.getAdvertiser() : null);
     }
 
     protected static AbstractSocketManager createSocketManager(final String protocol, final String host, final int port,

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/SyslogAppender.java Sun Apr 28 01:27:27 2013
@@ -30,18 +30,21 @@ import org.apache.logging.log4j.core.net
 import org.apache.logging.log4j.core.net.Advertiser;
 import org.apache.logging.log4j.core.net.Protocol;
 
+import java.io.Serializable;
+
 /**
  * The Syslog Appender.
  */
 @Plugin(name = "Syslog", type = "Core", elementType = "appender", printObject = true)
-public class SyslogAppender extends SocketAppender {
+public class SyslogAppender<T extends Serializable> extends SocketAppender<T> {
 
     private static final String BSD = "bsd";
 
     private static final String RFC5424 = "RFC5424";
 
-    protected SyslogAppender(final String name, final Layout layout, final Filter filter, final boolean handleException,
-                             final boolean immediateFlush, final AbstractSocketManager manager, Advertiser advertiser) {
+    protected SyslogAppender(final String name, final Layout<T> layout, final Filter filter,
+                             final boolean handleException, final boolean immediateFlush,
+                             final AbstractSocketManager manager, Advertiser advertiser) {
         super(name, layout, filter, manager, handleException, immediateFlush, advertiser);
 
     }
@@ -81,7 +84,7 @@ public class SyslogAppender extends Sock
      * @return A SyslogAppender.
      */
     @PluginFactory
-    public static SyslogAppender createAppender(@PluginAttr("host") final String host,
+    public static <S extends Serializable> SyslogAppender<S> createAppender(@PluginAttr("host") final String host,
                                                 @PluginAttr("port") final String portNum,
                                                 @PluginAttr("protocol") final String protocol,
                                                 @PluginAttr("reconnectionDelay") final String delay,
@@ -116,10 +119,11 @@ public class SyslogAppender extends Sock
         final boolean fail = immediateFail == null ? true : Boolean.valueOf(immediateFail);
         final int port = portNum == null ? 0 : Integer.parseInt(portNum);
         boolean isAdvertise = advertise == null ? false : Boolean.valueOf(advertise);
-        final Layout<String> layout = RFC5424.equalsIgnoreCase(format) ?
+        @SuppressWarnings("unchecked")
+        final Layout<S> layout = (Layout<S>)(RFC5424.equalsIgnoreCase(format) ?
             RFC5424Layout.createLayout(facility, id, ein, includeMDC, mdcId, mdcPrefix, eventPrefix, includeNL,
                 escapeNL, appName, msgId, excludes, includes, required, charsetName, exceptionPattern, config) :
-            SyslogLayout.createLayout(facility, includeNL, escapeNL, charsetName);
+            SyslogLayout.createLayout(facility, includeNL, escapeNL, charsetName));
 
         if (name == null) {
             LOGGER.error("No name provided for SyslogAppender");
@@ -131,6 +135,7 @@ public class SyslogAppender extends Sock
             return null;
         }
 
-        return new SyslogAppender(name, layout, filter, handleExceptions, isFlush, manager, isAdvertise ? config.getAdvertiser() : null);
+        return new SyslogAppender<S>(name, layout, filter, handleExceptions, isFlush, manager,
+                isAdvertise ? config.getAdvertiser() : null);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppender.java Sun Apr 28 01:27:27 2013
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 
+import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -37,7 +38,7 @@ import java.util.concurrent.ConcurrentMa
  * This Appender allows the logging event to be manipulated before it is processed by other Appenders.
  */
 @Plugin(name = "Rewrite", type = "Core", elementType = "appender", printObject = true)
-public final class RewriteAppender extends AbstractAppender {
+public final class RewriteAppender<T extends Serializable> extends AbstractAppender<T> {
     private final Configuration config;
     private final ConcurrentMap<String, AppenderControl> appenders = new ConcurrentHashMap<String, AppenderControl>();
     private final RewritePolicy rewritePolicy;
@@ -53,6 +54,7 @@ public final class RewriteAppender exten
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void start() {
         final Map<String, Appender<?>> map = config.getAppenders();
         for (final AppenderRef ref : appenderRefs) {
@@ -76,6 +78,7 @@ public final class RewriteAppender exten
      * Modify the event and pass to the subordinate Appenders.
      * @param event The LogEvent.
      */
+    @Override
     public void append(LogEvent event) {
         if (rewritePolicy != null) {
             event = rewritePolicy.rewrite(event);
@@ -96,7 +99,7 @@ public final class RewriteAppender exten
      * @return The created RewriteAppender.
      */
     @PluginFactory
-    public static RewriteAppender createAppender(@PluginAttr("name") final String name,
+    public static <S extends Serializable> RewriteAppender<S> createAppender(@PluginAttr("name") final String name,
                                           @PluginAttr("suppressExceptions") final String suppress,
                                           @PluginElement("appender-ref") final AppenderRef[] appenderRefs,
                                           @PluginConfiguration final Configuration config,
@@ -113,6 +116,6 @@ public final class RewriteAppender exten
             LOGGER.error("No appender references defined for RewriteAppender");
             return null;
         }
-        return new RewriteAppender(name, filter, handleExceptions, appenderRefs, rewritePolicy, config);
+        return new RewriteAppender<S>(name, filter, handleExceptions, appenderRefs, rewritePolicy, config);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/appender/routing/RoutingAppender.java Sun Apr 28 01:27:27 2013
@@ -30,6 +30,7 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 
+import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -43,12 +44,13 @@ import java.util.concurrent.ConcurrentMa
  * the built in StrSubstitutor and the StrLookup plugin that matches the specified key.
  */
 @Plugin(name = "Routing", type = "Core", elementType = "appender", printObject = true)
-public final class RoutingAppender extends AbstractAppender {
+public final class RoutingAppender<T extends Serializable> extends AbstractAppender<T> {
     private static final String DEFAULT_KEY = "ROUTING_APPENDER_DEFAULT";
     private final Routes routes;
     private final Route defaultRoute;
     private final Configuration config;
-    private final ConcurrentMap<String, AppenderControl> appenders = new ConcurrentHashMap<String, AppenderControl>();
+    private final ConcurrentMap<String, AppenderControl<T>> appenders =
+            new ConcurrentHashMap<String, AppenderControl<T>>();
     private final RewritePolicy rewritePolicy;
 
     private RoutingAppender(final String name, final Filter filter, final boolean handleException, final Routes routes,
@@ -71,12 +73,13 @@ public final class RoutingAppender exten
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public void start() {
         final Map<String, Appender<?>> map = config.getAppenders();
         // Register all the static routes.
         for (final Route route : routes.getRoutes()) {
             if (route.getAppenderRef() != null) {
-                final Appender appender = map.get(route.getAppenderRef());
+                final Appender<?> appender = map.get(route.getAppenderRef());
                 if (appender != null) {
                     final String key = route == defaultRoute ? DEFAULT_KEY : route.getKey();
                     appenders.put(key, new AppenderControl(appender, null, null));
@@ -92,7 +95,7 @@ public final class RoutingAppender exten
     public void stop() {
         super.stop();
         final Map<String, Appender<?>> map = config.getAppenders();
-        for (final Map.Entry<String, AppenderControl> entry : appenders.entrySet()) {
+        for (final Map.Entry<String, AppenderControl<T>> entry : appenders.entrySet()) {
             final String name = entry.getValue().getAppender().getName();
             if (!map.containsKey(name)) {
                 entry.getValue().getAppender().stop();
@@ -100,19 +103,20 @@ public final class RoutingAppender exten
         }
     }
 
+    @Override
     public void append(LogEvent event) {
         if (rewritePolicy != null) {
             event = rewritePolicy.rewrite(event);
         }
         final String key = config.getSubst().replace(event, routes.getPattern());
-        final AppenderControl control = getControl(key, event);
+        final AppenderControl<T> control = getControl(key, event);
         if (control != null) {
             control.callAppender(event);
         }
     }
 
-    private synchronized AppenderControl getControl(final String key, final LogEvent event) {
-        AppenderControl control = appenders.get(key);
+    private synchronized AppenderControl<T> getControl(final String key, final LogEvent event) {
+        AppenderControl<T> control = appenders.get(key);
         if (control != null) {
             return control;
         }
@@ -127,25 +131,26 @@ public final class RoutingAppender exten
             route = defaultRoute;
         }
         if (route != null) {
-            final Appender app = createAppender(route, event);
+            final Appender<T> app = createAppender(route, event);
             if (app == null) {
                 return null;
             }
-            control = new AppenderControl(app, null, null);
+            control = new AppenderControl<T>(app, null, null);
             appenders.put(key, control);
         }
 
         return control;
     }
 
-    private Appender createAppender(final Route route, final LogEvent event) {
+    private Appender<T> createAppender(final Route route, final LogEvent event) {
         final Node routeNode = route.getNode();
         for (final Node node : routeNode.getChildren()) {
             if (node.getType().getElementName().equals("appender")) {
                 final Node appNode = new Node(node);
                 config.createConfiguration(appNode, event);
                 if (appNode.getObject() instanceof Appender) {
-                    final Appender app = (Appender) appNode.getObject();
+                    @SuppressWarnings("unchecked")
+                    final Appender<T> app = (Appender<T>) appNode.getObject();
                     app.start();
                     return app;
                 }
@@ -169,7 +174,7 @@ public final class RoutingAppender exten
      * @return The RoutingAppender
      */
     @PluginFactory
-    public static RoutingAppender createAppender(@PluginAttr("name") final String name,
+    public static <S extends Serializable> RoutingAppender<S> createAppender(@PluginAttr("name") final String name,
                                           @PluginAttr("suppressExceptions") final String suppress,
                                           @PluginElement("routes") final Routes routes,
                                           @PluginConfiguration final Configuration config,
@@ -186,6 +191,6 @@ public final class RoutingAppender exten
             LOGGER.error("No routes defined for RoutingAppender");
             return null;
         }
-        return new RoutingAppender(name, filter, handleExceptions, routes, rewritePolicy, config);
+        return new RoutingAppender<S>(name, filter, handleExceptions, routes, rewritePolicy, config);
     }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java Sun Apr 28 01:27:27 2013
@@ -42,6 +42,7 @@ import org.apache.logging.log4j.core.net
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
+import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
@@ -107,6 +108,8 @@ public class BaseConfiguration extends A
         rootNode = new Node();
     }
 
+    @Override
+    @SuppressWarnings("unchecked")
     public Map<String, String> getProperties() {
         return (Map<String, String>) componentMap.get(CONTEXT_PROPERTIES);
     }
@@ -114,6 +117,7 @@ public class BaseConfiguration extends A
     /**
      * Initialize the configuration.
      */
+    @Override
     public void start() {
         setup();
         doConfigure();
@@ -130,6 +134,7 @@ public class BaseConfiguration extends A
     /**
      * Tear down the configuration.
      */
+    @Override
     public void stop() {
         for (final LoggerConfig logger : loggers.values()) {
             logger.clearAppenders();
@@ -146,14 +151,17 @@ public class BaseConfiguration extends A
     protected void setup() {
     }
 
+    @Override
     public Object getComponent(final String name) {
         return componentMap.get(name);
     }
 
+    @Override
     public void addComponent(final String name, final Object obj) {
         componentMap.putIfAbsent(name, obj);
     }
 
+    @SuppressWarnings("unchecked")
     protected void doConfigure() {
         boolean setRoot = false;
         boolean setLoggers = false;
@@ -220,9 +228,10 @@ public class BaseConfiguration extends A
 
     private void setToDefault() {
         setName(DefaultConfiguration.DEFAULT_NAME);
-        final Layout layout = PatternLayout.createLayout("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n",
-            null, null, null);
-        final Appender appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false",
+        final Layout<? extends Serializable> layout =
+                PatternLayout.createLayout("%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n",
+                        null, null, null);
+        final Appender<?> appender = ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false",
             "true");
         appender.start();
         addAppender(appender);
@@ -255,6 +264,7 @@ public class BaseConfiguration extends A
      * Returns the name of the configuration.
      * @return the name of the configuration.
      */
+    @Override
     public String getName() {
         return name;
     }
@@ -263,6 +273,7 @@ public class BaseConfiguration extends A
      * Add a listener for changes on the configuration.
      * @param listener The ConfigurationListener to add.
      */
+    @Override
     public void addListener(final ConfigurationListener listener) {
         listeners.add(listener);
     }
@@ -271,6 +282,7 @@ public class BaseConfiguration extends A
      * Remove a ConfigurationListener.
      * @param listener The ConfigurationListener to remove.
      */
+    @Override
     public void removeListener(final ConfigurationListener listener) {
         listeners.remove(listener);
     }
@@ -280,7 +292,7 @@ public class BaseConfiguration extends A
      * @param name The name of the Appender.
      * @return the Appender with the specified name or null if the Appender cannot be located.
      */
-    public Appender getAppender(final String name) {
+    public Appender<?> getAppender(final String name) {
         return appenders.get(name);
     }
 
@@ -288,6 +300,7 @@ public class BaseConfiguration extends A
      * Returns a Map containing all the Appenders and their name.
      * @return A Map containing each Appender's name and the Appender object.
      */
+    @Override
     public Map<String, Appender<?>> getAppenders() {
         return appenders;
     }
@@ -300,22 +313,27 @@ public class BaseConfiguration extends A
         appenders.put(appender.getName(), appender);
     }
 
+    @Override
     public StrSubstitutor getSubst() {
         return subst;
     }
 
+    @Override
     public void setConfigurationMonitor(ConfigurationMonitor monitor) {
         this.monitor = monitor;
     }
 
+    @Override
     public ConfigurationMonitor getConfigurationMonitor() {
         return monitor;
     }
 
+    @Override
     public void setAdvertiser(Advertiser advertiser) {
         this.advertiser = advertiser;
     }
 
+    @Override
     public Advertiser getAdvertiser() {
         return advertiser;
     }
@@ -329,8 +347,9 @@ public class BaseConfiguration extends A
      * @param logger The Logger the Appender will be associated with.
      * @param appender The Appender.
      */
+    @Override
     public synchronized void addLoggerAppender(final org.apache.logging.log4j.core.Logger logger,
-                                               final Appender appender) {
+                                               final Appender<?> appender) {
         final String name = logger.getName();
         appenders.putIfAbsent(appender.getName(), appender);
         final LoggerConfig lc = getLoggerConfig(name);
@@ -354,6 +373,7 @@ public class BaseConfiguration extends A
      * @param logger The Logger the Fo;ter will be associated with.
      * @param filter The Filter.
      */
+    @Override
     public synchronized void addLoggerFilter(final org.apache.logging.log4j.core.Logger logger, final Filter filter) {
         final String name = logger.getName();
         final LoggerConfig lc = getLoggerConfig(name);
@@ -378,6 +398,7 @@ public class BaseConfiguration extends A
      * @param logger The Logger the Appender will be associated with.
      * @param additive True if the LoggerConfig should be additive, false otherwise.
      */
+    @Override
     public synchronized void setLoggerAdditive(final org.apache.logging.log4j.core.Logger logger,
                                                final boolean additive) {
         final String name = logger.getName();
@@ -416,6 +437,7 @@ public class BaseConfiguration extends A
      * @param name The Logger name.
      * @return The located LoggerConfig.
      */
+    @Override
     public LoggerConfig getLoggerConfig(final String name) {
         if (loggers.containsKey(name)) {
             return loggers.get(name);
@@ -441,6 +463,7 @@ public class BaseConfiguration extends A
      * Returns a Map of all the LoggerConfigs.
      * @return a Map with each entry containing the name of the Logger and the LoggerConfig.
      */
+    @Override
     public Map<String, LoggerConfig> getLoggers() {
         return Collections.unmodifiableMap(loggers);
     }
@@ -487,6 +510,7 @@ public class BaseConfiguration extends A
         setParents();
     }
 
+    @Override
     public void createConfiguration(final Node node, final LogEvent event) {
         final PluginType type = node.getType();
         if (type != null && type.isDeferChildren()) {
@@ -527,6 +551,7 @@ public class BaseConfiguration extends A
 
         if (Map.class.isAssignableFrom(clazz)) {
             try {
+                @SuppressWarnings("unchecked")
                 final Map<String, Object> map = (Map<String, Object>) clazz.newInstance();
                 for (final Node child : node.getChildren()) {
                     map.put(child.getName(), child.getObject());
@@ -540,6 +565,7 @@ public class BaseConfiguration extends A
 
         if (List.class.isAssignableFrom(clazz)) {
             try {
+                @SuppressWarnings("unchecked")
                 final List<Object> list = (List<Object>) clazz.newInstance();
                 for (final Node child : node.getChildren()) {
                     list.add(child.getObject());
@@ -621,7 +647,7 @@ public class BaseConfiguration extends A
                     final PluginElement elem = (PluginElement) a;
                     final String name = elem.value();
                     if (parmClasses[index].isArray()) {
-                        final Class parmClass = parmClasses[index].getComponentType();
+                        final Class<?> parmClass = parmClasses[index].getComponentType();
                         final List<Object> list = new ArrayList<Object>();
                         sb.append(name).append("={");
                         boolean first = true;
@@ -667,7 +693,7 @@ public class BaseConfiguration extends A
                         }
                         parms[index] = array;
                     } else {
-                        final Class parmClass = parmClasses[index];
+                        final Class<?> parmClass = parmClasses[index];
                         boolean present = false;
                         for (final Node child : children) {
                             final PluginType childType = child.getType();

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java?rev=1476703&r1=1476702&r2=1476703&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java Sun Apr 28 01:27:27 2013
@@ -111,10 +111,11 @@ public abstract class ConfigurationFacto
                     final Set<WeightedFactory> ordered = new TreeSet<WeightedFactory>();
                     for (final PluginType type : plugins.values()) {
                         try {
-                            final Class<ConfigurationFactory> clazz = type.getPluginClass();
+                            @SuppressWarnings("unchecked")
+                            final Class<ConfigurationFactory> clazz = (Class<ConfigurationFactory>)type.getPluginClass();
                             final Order order = clazz.getAnnotation(Order.class);
-                            final Integer weight = order.value();
                             if (order != null) {
+                                final Integer weight = order.value();
                                 ordered.add(new WeightedFactory(weight, clazz));
                             }
                         } catch (final Exception ex) {