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 2012/11/01 08:47:10 UTC

svn commit: r1404487 - in /logging/log4j/log4j2/trunk: combined/src/test/resources/ core/src/main/java/org/apache/logging/log4j/core/config/ core/src/main/java/org/apache/logging/log4j/core/config/plugins/ core/src/main/java/org/apache/logging/log4j/co...

Author: rgoers
Date: Thu Nov  1 07:47:09 2012
New Revision: 1404487

URL: http://svn.apache.org/viewvc?rev=1404487&view=rev
Log:
Most of the fix for LOG4J2-106

Modified:
    logging/log4j/log4j2/trunk/combined/src/test/resources/log4j-test2.xml
    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/Configurator.java
    logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.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/JSONConfigurationFactory.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/XMLConfigurationFactory.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/net/SocketServer.java
    logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.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/config/TestConfigurator.java
    logging/log4j/log4j2/trunk/core/src/test/resources/log4j-test2.xml
    logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/BasicConfigurationFactory.java

Modified: logging/log4j/log4j2/trunk/combined/src/test/resources/log4j-test2.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/combined/src/test/resources/log4j-test2.xml?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/combined/src/test/resources/log4j-test2.xml (original)
+++ logging/log4j/log4j2/trunk/combined/src/test/resources/log4j-test2.xml Thu Nov  1 07:47:09 2012
@@ -16,7 +16,7 @@
  limitations under the License.
 
 -->
-<configuration status="debug" name="XMLConfigTest" packages="org.apache.logging.log4j.test">
+<configuration status="debug" name="XMLConfigTest" monitorInterval="5" packages="org.apache.logging.log4j.test">
   <properties>
     <property name="filename">target/test.log</property>
   </properties>

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=1404487&r1=1404486&r2=1404487&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 Thu Nov  1 07:47:09 2012
@@ -92,11 +92,6 @@ public abstract class ConfigurationFacto
     private static ConfigurationFactory configFactory = new Factory();
 
     /**
-     * The configuration File.
-     */
-    protected File configFile = null;
-
-    /**
      * Returns the ConfigurationFactory.
      * @return the ConfigurationFactory.
      */
@@ -175,7 +170,7 @@ public abstract class ConfigurationFacto
         return true;
     }
 
-    public abstract Configuration getConfiguration(InputSource source);
+    public abstract Configuration getConfiguration(ConfigurationSource source);
 
     /**
      * Returns the Configuration.
@@ -188,7 +183,7 @@ public abstract class ConfigurationFacto
             return null;
         }
         if (configLocation != null) {
-            InputSource source = getInputFromURI(configLocation);
+            ConfigurationSource source = getInputFromURI(configLocation);
             if (source != null) {
                 return getConfiguration(source);
             }
@@ -199,15 +194,13 @@ public abstract class ConfigurationFacto
     /**
      * Load the configuration from a URI.
      * @param configLocation A URI representing the location of the configuration.
-     * @return The InputSource for the configuration.
+     * @return The ConfigurationSource for the configuration.
      */
-    protected InputSource getInputFromURI(URI configLocation) {
-        configFile = FileUtils.fileFromURI(configLocation);
+    protected ConfigurationSource getInputFromURI(URI configLocation) {
+        File configFile = FileUtils.fileFromURI(configLocation);
         if (configFile != null && configFile.exists() && configFile.canRead()) {
             try {
-                InputSource source = new InputSource(new FileInputStream(configFile));
-                source.setSystemId(configFile.getAbsolutePath());
-                return source;
+                return new ConfigurationSource(new FileInputStream(configFile), configFile);
             } catch (FileNotFoundException ex) {
                 LOGGER.error("Cannot locate file " + configLocation.getPath(), ex);
             }
@@ -215,15 +208,13 @@ public abstract class ConfigurationFacto
         String scheme = configLocation.getScheme();
         if (scheme == null || scheme.equals("classloader")) {
             ClassLoader loader = this.getClass().getClassLoader();
-            InputSource source = getInputFromResource(configLocation.getPath(), loader);
+            ConfigurationSource source = getInputFromResource(configLocation.getPath(), loader);
             if (source != null) {
                 return source;
             }
         }
         try {
-            InputSource source = new InputSource(configLocation.toURL().openStream());
-            source.setSystemId(configLocation.getPath());
-            return source;
+            return new ConfigurationSource(configLocation.toURL().openStream(), configLocation.getPath());
         } catch (MalformedURLException ex) {
             LOGGER.error("Invalid URL " + configLocation.toString(), ex);
         } catch (IOException ex) {
@@ -240,40 +231,31 @@ public abstract class ConfigurationFacto
      * @param loader The default ClassLoader to use.
      * @return The InputSource to use to read the configuration.
      */
-    protected InputSource getInputFromString(String config, ClassLoader loader) {
-        InputSource source;
+    protected ConfigurationSource getInputFromString(String config, ClassLoader loader) {
         try {
             URL url = new URL(config);
-            source = new InputSource(url.openStream());
-            if (FileUtils.isFile(url)) {
-                configFile = FileUtils.fileFromURI(url.toURI());
-            }
-            source.setSystemId(config);
-            return source;
+            return new ConfigurationSource(url.openStream(), FileUtils.fileFromURI(url.toURI()));
         } catch (Exception ex) {
-            source = getInputFromResource(config, loader);
+            ConfigurationSource source = getInputFromResource(config, loader);
             if (source == null) {
                 try {
                     File file = new File(config);
-                    FileInputStream is = new FileInputStream(file);
-                    configFile = file;
-                    source = new InputSource(is);
-                    source.setSystemId(config);
+                    return new ConfigurationSource(new FileInputStream(file), file);
                 } catch (FileNotFoundException fnfe) {
                     // Ignore the exception
                 }
             }
+            return source;
         }
-        return source;
     }
 
     /**
      * Retrieve the configuration via the ClassLoader.
      * @param resource The resource to load.
      * @param loader The default ClassLoader to use.
-     * @return The InputSource for the configuration.
+     * @return The ConfigurationSource for the configuration.
      */
-    protected InputSource getInputFromResource(String resource, ClassLoader loader) {
+    protected ConfigurationSource getInputFromResource(String resource, ClassLoader loader) {
         URL url = Loader.getResource(resource, loader);
         if (url == null) {
             return null;
@@ -287,16 +269,15 @@ public abstract class ConfigurationFacto
         if (is == null) {
             return null;
         }
-        InputSource source = new InputSource(is);
+
         if (FileUtils.isFile(url)) {
             try {
-                configFile = FileUtils.fileFromURI(url.toURI());
+                return new ConfigurationSource(is, FileUtils.fileFromURI((url.toURI())));
             } catch (URISyntaxException ex) {
                 // Just ignore the exception.
             }
         }
-        source.setSystemId(resource);
-        return source;
+        return new ConfigurationSource(is, resource);
     }
 
     /**
@@ -346,7 +327,7 @@ public abstract class ConfigurationFacto
                 String config = System.getProperty(CONFIGURATION_FILE_PROPERTY);
                 if (config != null) {
                     ClassLoader loader = this.getClass().getClassLoader();
-                    InputSource source = getInputFromString(config, loader);
+                    ConfigurationSource source = getInputFromString(config, loader);
                     if (source != null) {
                         for (ConfigurationFactory factory : factories) {
                             String[] types = factory.getSupportedTypes();
@@ -409,7 +390,7 @@ public abstract class ConfigurationFacto
                     }
                     configName = named ? prefix + name + suffix : prefix + suffix;
 
-                    InputSource source = getInputFromResource(configName, loader);
+                    ConfigurationSource source = getInputFromResource(configName, loader);
                     if (source != null) {
                         return factory.getConfiguration(source);
                     }
@@ -424,9 +405,9 @@ public abstract class ConfigurationFacto
         }
 
         @Override
-        public Configuration getConfiguration(InputSource source) {
+        public Configuration getConfiguration(ConfigurationSource source) {
             if (source != null) {
-                String config = source.getSystemId() != null ? source.getSystemId() : source.getPublicId();
+                String config = source.getLocation();
                 for (ConfigurationFactory factory : factories) {
                     String[] types = factory.getSupportedTypes();
                     if (types != null) {
@@ -448,4 +429,58 @@ public abstract class ConfigurationFacto
             return null;
         }
     }
+
+    public static class ConfigurationSource {
+
+        private File file;
+
+        private String location;
+
+        private InputStream stream;
+
+        public ConfigurationSource() {
+        }
+
+        public ConfigurationSource(InputStream stream) {
+            this.stream = stream;
+            this .file = null;
+            this.location = null;
+        }
+
+        public ConfigurationSource(InputStream stream, File file) {
+            this.stream = stream;
+            this.file = file;
+            this.location = file.getAbsolutePath();
+        }
+
+        public ConfigurationSource(InputStream stream, String location) {
+            this.stream = stream;
+            this.location = location;
+            this.file = null;
+        }
+
+        public File getFile() {
+            return file;
+        }
+
+        public void setFile(File file) {
+            this.file = file;
+        }
+
+        public String getLocation() {
+            return location;
+        }
+
+        public void setLocation(String location) {
+            this.location = location;
+        }
+
+        public InputStream getInputStream() {
+            return stream;
+        }
+
+        public void setInputStream(InputStream stream) {
+            this.stream = stream;
+        }
+    }
 }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java Thu Nov  1 07:47:09 2012
@@ -75,7 +75,7 @@ public final class Configurator {
      * @param source The InputSource for the configuration.
      * @return The LoggerContext.
      */
-    public static LoggerContext initialize(ClassLoader loader, InputSource source) {
+    public static LoggerContext initialize(ClassLoader loader, ConfigurationFactory.ConfigurationSource source) {
 
         try {
             LoggerContext ctx = (LoggerContext) LogManager.getContext(loader, false);

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java Thu Nov  1 07:47:09 2012
@@ -50,7 +50,7 @@ public class FileConfigurationMonitor im
      * @param reconfigurable The Configuration that can be reconfigured.
      * @param file The File to monitor.
      * @param listeners The List of ConfigurationListeners to notify upon a change.
-     * @param interval The monitor interval in seconds. The minimum interval is 30 seconds.
+     * @param interval The monitor interval in seconds. The minimum interval is 5 seconds.
      */
     public FileConfigurationMonitor(Reconfigurable reconfigurable, File file, List<ConfigurationListener> listeners,
                                     int interval) {

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfiguration.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfiguration.java Thu Nov  1 07:47:09 2012
@@ -27,7 +27,6 @@ import org.apache.logging.log4j.status.S
 import org.codehaus.jackson.JsonNode;
 import org.codehaus.jackson.JsonParser;
 import org.codehaus.jackson.map.ObjectMapper;
-import org.xml.sax.InputSource;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -62,16 +61,15 @@ public class JSONConfiguration extends B
 
     private File configFile;
 
-    public JSONConfiguration(InputSource source, File configFile) {
-        this.configFile = configFile;
+    public JSONConfiguration(ConfigurationFactory.ConfigurationSource configSource) {
+        this.configFile = configSource.getFile();
         byte[] buffer;
 
         try {
-            InputStream configStream = source.getByteStream();
+            InputStream configStream = configSource.getInputStream();
             buffer = toByteArray(configStream);
             configStream.close();
             InputStream is = new ByteArrayInputStream(buffer);
-            source = new InputSource(is);
             ObjectMapper mapper = new ObjectMapper().configure(JsonParser.Feature.ALLOW_COMMENTS, true);
             root = mapper.readTree(is);
             if (root.size() == 1) {
@@ -143,10 +141,10 @@ public class JSONConfiguration extends B
                 }
             }
             if (getName() == null) {
-                setName(source.getSystemId());
+                setName(configSource.getLocation());
             }
         } catch (Exception ex) {
-            LOGGER.error("Error parsing " + source.getSystemId(), ex);
+            LOGGER.error("Error parsing " + configSource.getLocation(), ex);
             ex.printStackTrace();
         }
     }
@@ -177,9 +175,9 @@ public class JSONConfiguration extends B
     public Configuration reconfigure() {
         if (configFile != null) {
             try {
-                InputSource source = new InputSource(new FileInputStream(configFile));
-                source.setSystemId(configFile.getAbsolutePath());
-                return new JSONConfiguration(source, configFile);
+                ConfigurationFactory.ConfigurationSource source =
+                    new ConfigurationFactory.ConfigurationSource(new FileInputStream(configFile), configFile);
+                return new JSONConfiguration(source);
             } catch (FileNotFoundException ex) {
                 LOGGER.error("Cannot locate file " + configFile, ex);
             }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfigurationFactory.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/JSONConfigurationFactory.java Thu Nov  1 07:47:09 2012
@@ -61,11 +61,11 @@ public class JSONConfigurationFactory ex
     }
 
     @Override
-    public Configuration getConfiguration(InputSource source) {
+    public Configuration getConfiguration(ConfigurationSource source) {
         if (!isActive) {
             return null;
         }
-        return new JSONConfiguration(source, configFile);
+        return new JSONConfiguration(source);
     }
 
     @Override

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfiguration.java Thu Nov  1 07:47:09 2012
@@ -83,15 +83,15 @@ public class XMLConfiguration extends Ba
 
     private final File configFile;
 
-    public XMLConfiguration(InputSource source, File configFile) {
-        this.configFile = configFile;
+    public XMLConfiguration(ConfigurationFactory.ConfigurationSource configSource) {
+        this.configFile = configSource.getFile();
         byte[] buffer = null;
 
         try {
-            InputStream configStream = source.getByteStream();
+            InputStream configStream = configSource.getInputStream();
             buffer = toByteArray(configStream);
             configStream.close();
-            source = new InputSource(new ByteArrayInputStream(buffer));
+            InputSource source = new InputSource(new ByteArrayInputStream(buffer));
             DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
             Document document = builder.parse(source);
             rootElement = document.getDocumentElement();
@@ -165,11 +165,11 @@ public class XMLConfiguration extends Ba
             }
 
         } catch (SAXException domEx) {
-            LOGGER.error("Error parsing " + source.getSystemId(), domEx);
+            LOGGER.error("Error parsing " + configSource.getLocation(), domEx);
         } catch (IOException ioe) {
-            LOGGER.error("Error parsing " + source.getSystemId(), ioe);
+            LOGGER.error("Error parsing " + configSource.getLocation(), ioe);
         } catch (ParserConfigurationException pex) {
-            LOGGER.error("Error parsing " + source.getSystemId(), pex);
+            LOGGER.error("Error parsing " + configSource.getLocation(), pex);
         }
         if (strict && schema != null && buffer != null) {
             InputStream is = null;
@@ -201,7 +201,7 @@ public class XMLConfiguration extends Ba
         }
 
         if (getName() == null) {
-            setName(source.getSystemId());
+            setName(configSource.getLocation());
         }
     }
 
@@ -220,9 +220,9 @@ public class XMLConfiguration extends Ba
     public Configuration reconfigure() {
         if (configFile != null) {
             try {
-                InputSource source = new InputSource(new FileInputStream(configFile));
-                source.setSystemId(configFile.getAbsolutePath());
-                return new XMLConfiguration(source, configFile);
+                ConfigurationFactory.ConfigurationSource source =
+                    new ConfigurationFactory.ConfigurationSource(new FileInputStream(configFile), configFile);
+                return new XMLConfiguration(source);
             } catch (FileNotFoundException ex) {
                 LOGGER.error("Cannot locate file " + configFile, ex);
             }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfigurationFactory.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/XMLConfigurationFactory.java Thu Nov  1 07:47:09 2012
@@ -37,8 +37,8 @@ public class XMLConfigurationFactory ext
      * @return The Configuration.
      */
     @Override
-    public Configuration getConfiguration(InputSource source) {
-        return new XMLConfiguration(source, configFile);
+    public Configuration getConfiguration(ConfigurationSource source) {
+        return new XMLConfiguration(source);
     }
 
     /**

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/ResolverUtil.java Thu Nov  1 07:47:09 2012
@@ -276,8 +276,8 @@ public class ResolverUtil<T> {
     }
 
     private void loadImplementationsInBundle(Test test, String packageName) {
-        Collection<String> list = FrameworkUtil.getBundle(ResolverUtil.class).adapt(BundleWiring.class)
-            .listResources(packageName, "*.class", BundleWiring.LISTRESOURCES_RECURSE);
+        BundleWiring wiring = (BundleWiring)FrameworkUtil.getBundle(ResolverUtil.class).adapt(BundleWiring.class);
+        Collection<String> list = wiring.listResources(packageName, "*.class", BundleWiring.LISTRESOURCES_RECURSE);
         for (String name : list) {
             addIfMatching(test, name);
         }

Modified: logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SocketServer.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SocketServer.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SocketServer.java (original)
+++ logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/net/SocketServer.java Thu Nov  1 07:47:09 2012
@@ -217,20 +217,18 @@ public class SocketServer extends Abstra
         public Configuration getConfiguration(String name, URI configLocation) {
             if (path != null && path.length() > 0) {
                 File file = null;
-                InputSource source = null;
+                ConfigurationSource source = null;
                 try {
                     file = new File(path);
                     FileInputStream is = new FileInputStream(file);
-                    source = new InputSource(is);
-                    source.setSystemId(path);
+                    source = new ConfigurationSource(is, file);
                 } catch (FileNotFoundException ex) {
                     // Ignore this error
                 }
                 if (source == null) {
                     try {
                         URL url = new URL(path);
-                        source = new InputSource(url.openStream());
-                        source.setSystemId(path);
+                        source = new ConfigurationSource(url.openStream(), path);
                     } catch (MalformedURLException mue) {
                         // Ignore this error
                     } catch (IOException ioe) {
@@ -240,7 +238,7 @@ public class SocketServer extends Abstra
 
                 try {
                     if (source != null) {
-                        return new XMLConfiguration(source, file);
+                        return new XMLConfiguration(source);
                     }
                 } catch (Exception ex) {
                     // Ignore this error.

Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/BasicConfigurationFactory.java Thu Nov  1 07:47:09 2012
@@ -41,7 +41,7 @@ public class BasicConfigurationFactory e
     }
 
     @Override
-    public Configuration getConfiguration(InputSource source) {
+    public Configuration getConfiguration(ConfigurationSource source) {
         return null;
     }
 

Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java Thu Nov  1 07:47:09 2012
@@ -25,15 +25,18 @@ import org.apache.logging.log4j.core.con
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.junit.AfterClass;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.io.File;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
 
 /**
  *
@@ -49,6 +52,17 @@ public class LoggerTest {
     public static void setupClass() {
         System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, CONFIG);
         ctx = (LoggerContext) LogManager.getContext(false);
+    }
+
+    @AfterClass
+    public static void cleanupClass() {
+        System.clearProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
+        ctx.reconfigure();
+        StatusLogger.getLogger().reset();
+    }
+
+    @Before
+    public void before() {
         config = ctx.getConfiguration();
         for (Map.Entry<String, Appender> entry : config.getAppenders().entrySet()) {
             if (entry.getKey().equals("List")) {
@@ -56,14 +70,10 @@ public class LoggerTest {
                 break;
             }
         }
+        assertNotNull("No Appender", app);
+        app.clear();
     }
 
-    @AfterClass
-    public static void cleanupClass() {
-        System.clearProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY);
-        ctx.reconfigure();
-        StatusLogger.getLogger().reset();
-    }
 
     org.apache.logging.log4j.Logger logger = LogManager.getLogger("LoggerTest");
 
@@ -156,5 +166,20 @@ public class LoggerTest {
         assertTrue("Incorrect number of events. Expected 1, actual " + events.size(), events.size() == 1);
         app.clear();
     }
+
+    @Test
+    public void testReconfiguration() throws Exception {
+        File file = new File("target/test-classes/" + CONFIG);
+        long orig = file.lastModified();
+        long newTime = orig + 10000;
+        file.setLastModified(newTime);
+        Thread.sleep(6000);
+        for (int i = 0; i < 17; ++i) {
+            logger.debug("Reconfigure");
+        }
+        Configuration cfg = ctx.getConfiguration();
+        assertNotNull("No configuration", cfg);
+        assertTrue("Reconfiguration failed", cfg != config);
+    }
 }
 

Modified: logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java (original)
+++ logging/log4j/log4j2/trunk/core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java Thu Nov  1 07:47:09 2012
@@ -62,8 +62,8 @@ public class TestConfigurator {
     @Test
     public void testFromStream() throws Exception {
         InputStream is = new FileInputStream("target/test-classes/log4j2-config.xml");
-        InputSource source = new InputSource(is);
-        source.setSystemId("target/test-classes/log4j2-config.xml");
+        ConfigurationFactory.ConfigurationSource source =
+            new ConfigurationFactory.ConfigurationSource(is, "target/test-classes/log4j2-config.xml");
         LoggerContext ctx = Configurator.initialize(null, source);
         Logger logger = LogManager.getLogger("org.apache.test.TestConfigurator");
         Configuration config = ctx.getConfiguration();
@@ -82,7 +82,8 @@ public class TestConfigurator {
     @Test
     public void testFromStreamNoId() throws Exception {
         InputStream is = new FileInputStream("target/test-classes/log4j2-config.xml");
-        InputSource source = new InputSource(is);
+        ConfigurationFactory.ConfigurationSource source =
+            new ConfigurationFactory.ConfigurationSource(is);
         LoggerContext ctx = Configurator.initialize(null, source);
         Logger logger = LogManager.getLogger("org.apache.test.TestConfigurator");
         Configuration config = ctx.getConfiguration();

Modified: logging/log4j/log4j2/trunk/core/src/test/resources/log4j-test2.xml
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/test/resources/log4j-test2.xml?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/core/src/test/resources/log4j-test2.xml (original)
+++ logging/log4j/log4j2/trunk/core/src/test/resources/log4j-test2.xml Thu Nov  1 07:47:09 2012
@@ -16,7 +16,7 @@
  limitations under the License.
 
 -->
-<configuration status="debug" name="XMLConfigTest" packages="org.apache.logging.log4j.test">
+<configuration status="debug" name="XMLConfigTest" monitorInterval="5" packages="org.apache.logging.log4j.test">
   <properties>
     <property name="filename">target/test.log</property>
   </properties>

Modified: logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/BasicConfigurationFactory.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/BasicConfigurationFactory.java?rev=1404487&r1=1404486&r2=1404487&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/BasicConfigurationFactory.java (original)
+++ logging/log4j/log4j2/trunk/log4j12-api/src/test/java/org/apache/log4j/BasicConfigurationFactory.java Thu Nov  1 07:47:09 2012
@@ -36,7 +36,7 @@ public class BasicConfigurationFactory e
     }
 
     @Override
-    public Configuration getConfiguration(InputSource source) {
+    public Configuration getConfiguration(ConfigurationSource source) {
         return new BasicConfiguration();
     }