LOG4J2-1202 - Remove ConfigurationMonitor. Configuration file changes will now 
be handled by the WatchManager


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

Branch: refs/heads/LOG4J2-435-delete-on-rollover
Commit: 609267e2a8e246d328eafc4f7d90364d00a9b232
Parents: 2a11b7b
Author: Ralph Goers <[email protected]>
Authored: Sat Nov 21 22:56:05 2015 -0700
Committer: Ralph Goers <[email protected]>
Committed: Sat Nov 21 22:56:05 2015 -0700

----------------------------------------------------------------------
 .../org/apache/logging/log4j/core/Logger.java   |   9 --
 .../core/config/AbstractConfiguration.java      |  65 +++++-----
 .../log4j/core/config/Configuration.java        |  21 ++-
 .../log4j/core/config/ConfigurationMonitor.java |  37 ------
 .../config/DefaultConfigurationMonitor.java     |  43 -------
 .../core/config/FileConfigurationMonitor.java   | 127 -------------------
 .../config/FileWatcherConfigurationMonitor.java |  67 ++++++++++
 .../logging/log4j/core/config/LoggerConfig.java |   2 +-
 .../config/builder/impl/BuiltConfiguration.java |   7 +-
 .../core/config/json/JsonConfiguration.java     |   6 +-
 .../log4j/core/config/xml/XmlConfiguration.java |   6 +-
 .../log4j/core/jmx/LoggerContextAdmin.java      |   5 -
 .../log4j/core/jmx/LoggerContextAdminMBean.java |   9 --
 .../log4j/core/config/TestConfigurator.java     |   2 +-
 src/changes/changes.xml                         |   3 +
 15 files changed, 130 insertions(+), 279 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
index 4caba13..8facfd2 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/Logger.java
@@ -143,9 +143,6 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
             final Throwable t) {
         final Message msg = message == null ? new SimpleMessage(Strings.EMPTY) 
: message;
 
-        // check if we need to reconfigure
-        privateConfig.config.getConfigurationMonitor().checkConfiguration();
-
         final ReliabilityStrategy strategy = 
privateConfig.loggerConfig.getReliabilityStrategy();
         strategy.log(this, getName(), fqcn, marker, level, msg, t);
     }
@@ -335,12 +332,10 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
 
         // LOG4J2-151: changed visibility to public
         public void logEvent(final LogEvent event) {
-            config.getConfigurationMonitor().checkConfiguration();
             loggerConfig.log(event);
         }
 
         boolean filter(final Level level, final Marker marker, final String 
msg) {
-            config.getConfigurationMonitor().checkConfiguration();
             final Filter filter = config.getFilter();
             if (filter != null) {
                 final Filter.Result r = filter.filter(logger, level, marker, 
msg);
@@ -352,7 +347,6 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
         }
 
         boolean filter(final Level level, final Marker marker, final String 
msg, final Throwable t) {
-            config.getConfigurationMonitor().checkConfiguration();
             final Filter filter = config.getFilter();
             if (filter != null) {
                 final Filter.Result r = filter.filter(logger, level, marker, 
msg, t);
@@ -364,7 +358,6 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
         }
 
         boolean filter(final Level level, final Marker marker, final String 
msg, final Object... p1) {
-            config.getConfigurationMonitor().checkConfiguration();
             final Filter filter = config.getFilter();
             if (filter != null) {
                 final Filter.Result r = filter.filter(logger, level, marker, 
msg, p1);
@@ -376,7 +369,6 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
         }
 
         boolean filter(final Level level, final Marker marker, final Object 
msg, final Throwable t) {
-            config.getConfigurationMonitor().checkConfiguration();
             final Filter filter = config.getFilter();
             if (filter != null) {
                 final Filter.Result r = filter.filter(logger, level, marker, 
msg, t);
@@ -388,7 +380,6 @@ public class Logger extends AbstractLogger implements 
Supplier<LoggerConfig> {
         }
 
         boolean filter(final Level level, final Marker marker, final Message 
msg, final Throwable t) {
-            config.getConfigurationMonitor().checkConfiguration();
             final Filter filter = config.getFilter();
             if (filter != null) {
                 final Filter.Result r = filter.filter(logger, level, marker, 
msg, t);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 13e45b6..8834db6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -16,26 +16,6 @@
  */
 package org.apache.logging.log4j.core.config;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Filter;
@@ -46,7 +26,6 @@ import org.apache.logging.log4j.core.appender.ConsoleAppender;
 import org.apache.logging.log4j.core.async.AsyncLoggerConfig;
 import org.apache.logging.log4j.core.async.AsyncLoggerConfigDelegate;
 import org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor;
-import org.apache.logging.log4j.core.async.DaemonThreadFactory;
 import org.apache.logging.log4j.core.config.plugins.util.PluginBuilder;
 import org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
@@ -66,6 +45,24 @@ import org.apache.logging.log4j.core.util.NameUtil;
 import org.apache.logging.log4j.core.util.WatchManager;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
 /**
  * The base Configuration. Many configuration implementations will extend this 
class.
  */
@@ -86,11 +83,6 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
     protected final List<ConfigurationListener> listeners = new 
CopyOnWriteArrayList<>();
 
     /**
-     * The ConfigurationMonitor that checks for configuration changes.
-     */
-    protected ConfigurationMonitor monitor = new DefaultConfigurationMonitor();
-
-    /**
      * Packages found in configuration "packages" attribute.
      */
     protected final List<String> pluginPackages = new ArrayList<>();
@@ -617,16 +609,6 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
     }
 
     @Override
-    public void setConfigurationMonitor(final ConfigurationMonitor monitor) {
-        this.monitor = monitor;
-    }
-
-    @Override
-    public ConfigurationMonitor getConfigurationMonitor() {
-        return monitor;
-    }
-
-    @Override
     public void setAdvertiser(final Advertiser advertiser) {
         this.advertiser = advertiser;
     }
@@ -636,6 +618,17 @@ public abstract class AbstractConfiguration extends 
AbstractFilterable implement
         return advertiser;
     }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see 
org.apache.logging.log4j.core.config.ReliabilityStrategyFactory#getReliabilityStrategy(org.apache.logging.log4j
+     * .core.config.LoggerConfig)
+     */
+    @Override
+    public ReliabilityStrategy getReliabilityStrategy(LoggerConfig 
loggerConfig) {
+        return ReliabilityStrategyFactory.getReliabilityStrategy(loggerConfig);
+    }
+
     /**
      * Associates an Appender with a LoggerConfig. This method is synchronized 
in case a Logger with the same name is
      * being updated at the same time.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
index e69d391..e9bb6a0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configuration.java
@@ -29,6 +29,7 @@ import org.apache.logging.log4j.core.filter.Filterable;
 import org.apache.logging.log4j.core.lookup.StrSubstitutor;
 import org.apache.logging.log4j.core.net.Advertiser;
 import org.apache.logging.log4j.core.script.ScriptManager;
+import org.apache.logging.log4j.core.util.WatchManager;
 
 /**
  * Interface that must be implemented to create a configuration.
@@ -112,10 +113,6 @@ public interface Configuration extends Filterable {
 
     void addComponent(String name, Object object);
 
-    void setConfigurationMonitor(ConfigurationMonitor monitor);
-
-    ConfigurationMonitor getConfigurationMonitor();
-
     void setAdvertiser(Advertiser advertiser);
 
     Advertiser getAdvertiser();
@@ -159,4 +156,20 @@ public interface Configuration extends Filterable {
      */
        AsyncLoggerConfigDelegate getAsyncLoggerConfigDelegate();
 
+    /**
+     * Return the WatchManager.
+     * @return the WatchManager.
+     */
+    WatchManager getWatchManager();
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * 
org.apache.logging.log4j.core.config.ReliabilityStrategyFactory#getReliabilityStrategy(org.apache.logging.log4j
+     * .core.config.LoggerConfig)
+     */
+
+    ReliabilityStrategy getReliabilityStrategy(LoggerConfig loggerConfig);
+
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationMonitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationMonitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationMonitor.java
deleted file mode 100644
index 44c803d..0000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationMonitor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.config;
-
-/**
- * Interface that must be implemented to provide notification of configuration 
changes.
- */
-public interface ConfigurationMonitor {
-
-    /**
-     * Called to determine if the configuration has changed.
-     */
-    void checkConfiguration();
-
-    /**
-     * Determines how to log events reliably during or after a configuration 
change.
-     * 
-     * @param loggerConfig the LoggerConfig the resulting {@code 
ReliabilityStrategy} is associated with
-     * @return a ReliabilityStrategy that helps the specified LoggerConfig to 
log events reliably during or after a
-     *         configuration change
-     */
-    ReliabilityStrategy getReliabilityStrategy(final LoggerConfig 
loggerConfig);
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfigurationMonitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfigurationMonitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfigurationMonitor.java
deleted file mode 100644
index 3f4a286..0000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/DefaultConfigurationMonitor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.config;
-
-/**
- * The default configuration monitor does not do anything.
- */
-public class DefaultConfigurationMonitor implements ConfigurationMonitor {
-
-    /**
-     * Does nothing.
-     */
-    @Override
-    public void checkConfiguration() {
-        // do nothing
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * 
org.apache.logging.log4j.core.config.ReliabilityStrategyFactory#getReliabilityStrategy(org.apache.logging.log4j
-     * .core.config.LoggerConfig)
-     */
-    @Override
-    public ReliabilityStrategy getReliabilityStrategy(LoggerConfig 
loggerConfig) {
-        return ReliabilityStrategyFactory.getReliabilityStrategy(loggerConfig);
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
deleted file mode 100644
index b8fcaa7..0000000
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileConfigurationMonitor.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.core.config;
-
-import java.io.File;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.logging.log4j.core.util.Log4jThread;
-
-/**
- * Configuration monitor that periodically checks the timestamp of the 
configuration file and calls the
- * ConfigurationListeners when an update occurs.
- */
-public class FileConfigurationMonitor implements ConfigurationMonitor {
-
-    static final int MIN_INTERVAL = 5;
-
-    private static final int MASK = 0x0f;
-
-    private final File file;
-
-    private volatile long lastModified;
-
-    private final List<ConfigurationListener> listeners;
-
-    private final long intervalNano;
-
-    private volatile long nextCheck;
-
-    private final AtomicInteger counter = new AtomicInteger(0);
-
-    private static final Lock LOCK = new ReentrantLock();
-
-    private final Reconfigurable reconfigurable;
-
-    /**
-     * Constructor.
-     * 
-     * @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 intervalSeconds The monitor interval in seconds. The minimum 
interval is 5 seconds.
-     */
-    public FileConfigurationMonitor(final Reconfigurable reconfigurable, final 
File file,
-            final List<ConfigurationListener> listeners, final int 
intervalSeconds) {
-        this.reconfigurable = reconfigurable;
-        this.file = file;
-        this.lastModified = file.lastModified();
-        this.listeners = listeners;
-        this.intervalNano = TimeUnit.SECONDS.toNanos(Math.max(intervalSeconds, 
MIN_INTERVAL));
-        this.nextCheck = System.nanoTime() + this.intervalNano;
-    }
-
-    /**
-     * Called to determine if the configuration has changed.
-     */
-    @Override
-    public void checkConfiguration() {
-        final long current;
-        if (((counter.incrementAndGet() & MASK) == 0) && ((current = 
System.nanoTime()) - nextCheck >= 0)) {
-            LOCK.lock();
-            try {
-                nextCheck = current + intervalNano;
-                final long currentLastModified = file.lastModified();
-                if (currentLastModified > lastModified) {
-                    lastModified = currentLastModified;
-                    for (final ConfigurationListener listener : listeners) {
-                        final Thread thread = new Log4jThread(new 
ReconfigurationWorker(listener, reconfigurable));
-                        thread.setDaemon(true);
-                        thread.start();
-                    }
-                }
-            } finally {
-                LOCK.unlock();
-            }
-        }
-    }
-
-    /**
-     * Helper class for triggering a reconfiguration in a background thread.
-     */
-    private static class ReconfigurationWorker implements Runnable {
-
-        private final ConfigurationListener listener;
-        private final Reconfigurable reconfigurable;
-
-        public ReconfigurationWorker(final ConfigurationListener listener, 
final Reconfigurable reconfigurable) {
-            this.listener = listener;
-            this.reconfigurable = reconfigurable;
-        }
-
-        @Override
-        public void run() {
-            listener.onChange(reconfigurable);
-        }
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * 
org.apache.logging.log4j.core.config.ReliabilityStrategyFactory#getReliabilityStrategy(org.apache.logging.log4j
-     * .core.config.LoggerConfig)
-     */
-    @Override
-    public ReliabilityStrategy getReliabilityStrategy(LoggerConfig 
loggerConfig) {
-        return ReliabilityStrategyFactory.getReliabilityStrategy(loggerConfig);
-    }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileWatcherConfigurationMonitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileWatcherConfigurationMonitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileWatcherConfigurationMonitor.java
new file mode 100644
index 0000000..9a8c932
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/FileWatcherConfigurationMonitor.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.core.config;
+
+import org.apache.logging.log4j.core.util.FileWatcher;
+import org.apache.logging.log4j.core.util.Log4jThread;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Class Description goes here.
+ * Created by rgoers on 11/21/15
+ */
+public class FileWatcherConfigurationMonitor implements FileWatcher {
+
+    private Reconfigurable reconfigurable;
+    private List<ConfigurationListener> listeners;
+
+    public FileWatcherConfigurationMonitor(Reconfigurable reconfigurable, 
final List<ConfigurationListener> listeners) {
+        this.reconfigurable = reconfigurable;
+        this.listeners = listeners;
+    }
+
+
+    @Override
+    public void fileModified(File file) {
+        for (final ConfigurationListener listener : listeners) {
+            final Thread thread = new Log4jThread(new 
ReconfigurationWorker(listener, reconfigurable));
+            thread.setDaemon(true);
+            thread.start();
+        }
+    }
+
+    /**
+     * Helper class for triggering a reconfiguration in a background thread.
+     */
+    private static class ReconfigurationWorker implements Runnable {
+
+        private final ConfigurationListener listener;
+        private final Reconfigurable reconfigurable;
+
+        public ReconfigurationWorker(final ConfigurationListener listener, 
final Reconfigurable reconfigurable) {
+            this.listener = listener;
+            this.reconfigurable = reconfigurable;
+        }
+
+        @Override
+        public void run() {
+            listener.onChange(reconfigurable);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
index 1d7e3cb..32946f1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java
@@ -138,7 +138,7 @@ public class LoggerConfig extends AbstractFilterable {
         } else {
             this.properties = null;
         }
-        this.reliabilityStrategy = 
config.getConfigurationMonitor().getReliabilityStrategy(this);
+        this.reliabilityStrategy = config.getReliabilityStrategy(this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
index 13a23d4..f096617 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java
@@ -18,7 +18,7 @@ package org.apache.logging.log4j.core.config.builder.impl;
 
 import org.apache.logging.log4j.core.config.AbstractConfiguration;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.FileConfigurationMonitor;
+import org.apache.logging.log4j.core.config.FileWatcherConfigurationMonitor;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.config.builder.api.Component;
@@ -26,6 +26,7 @@ import 
org.apache.logging.log4j.core.config.plugins.util.PluginManager;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil;
 import org.apache.logging.log4j.core.config.status.StatusConfiguration;
+import org.apache.logging.log4j.core.util.FileWatcher;
 import org.apache.logging.log4j.core.util.Patterns;
 
 import java.io.File;
@@ -152,8 +153,8 @@ public class BuiltConfiguration extends 
AbstractConfiguration {
                 if (intervalSeconds > 0) {
                     getWatchManager().setIntervalSeconds(intervalSeconds);
                     if (configFile != null) {
-                        monitor = new 
FileConfigurationMonitor((Reconfigurable)this, configFile, listeners,
-                                intervalSeconds);
+                        FileWatcher watcher = new 
FileWatcherConfigurationMonitor((Reconfigurable) this, listeners);
+                        getWatchManager().watchFile(configFile, watcher);
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
index bc08922..ab5818c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java
@@ -22,13 +22,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.logging.log4j.core.config.AbstractConfiguration;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.FileConfigurationMonitor;
+import org.apache.logging.log4j.core.config.FileWatcherConfigurationMonitor;
 import org.apache.logging.log4j.core.config.LoggerConfig;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil;
 import org.apache.logging.log4j.core.config.status.StatusConfiguration;
+import org.apache.logging.log4j.core.util.FileWatcher;
 import org.apache.logging.log4j.core.util.Patterns;
 
 import java.io.ByteArrayInputStream;
@@ -90,7 +91,8 @@ public class JsonConfiguration extends AbstractConfiguration 
implements Reconfig
                     if (intervalSeconds > 0) {
                         getWatchManager().setIntervalSeconds(intervalSeconds);
                         if (configFile != null) {
-                            monitor = new FileConfigurationMonitor(this, 
configFile, listeners, intervalSeconds);
+                            FileWatcher watcher = new 
FileWatcherConfigurationMonitor(this, listeners);
+                            getWatchManager().watchFile(configFile, watcher);
                         }
                     }
                 } else if ("advertiser".equalsIgnoreCase(key)) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
index 8008e62..dabd531 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java
@@ -38,13 +38,14 @@ import javax.xml.validation.Validator;
 import org.apache.logging.log4j.core.config.AbstractConfiguration;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
-import org.apache.logging.log4j.core.config.FileConfigurationMonitor;
+import org.apache.logging.log4j.core.config.FileWatcherConfigurationMonitor;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.Reconfigurable;
 import org.apache.logging.log4j.core.config.plugins.util.PluginType;
 import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil;
 import org.apache.logging.log4j.core.config.status.StatusConfiguration;
 import org.apache.logging.log4j.core.util.Closer;
+import org.apache.logging.log4j.core.util.FileWatcher;
 import org.apache.logging.log4j.core.util.Loader;
 import org.apache.logging.log4j.core.util.Patterns;
 import org.apache.logging.log4j.core.util.Throwables;
@@ -135,7 +136,8 @@ public class XmlConfiguration extends AbstractConfiguration 
implements Reconfigu
                     if (intervalSeconds > 0) {
                         getWatchManager().setIntervalSeconds(intervalSeconds);
                         if (configFile != null) {
-                            monitor = new FileConfigurationMonitor(this, 
configFile, listeners, intervalSeconds);
+                            FileWatcher watcher = new 
FileWatcherConfigurationMonitor(this, listeners);
+                            getWatchManager().watchFile(configFile, watcher);
                         }
                     }
                 } else if ("advertiser".equalsIgnoreCase(key)) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
index 4a07dff..c9ddb90 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdmin.java
@@ -223,11 +223,6 @@ public class LoggerContextAdmin extends 
NotificationBroadcasterSupport implement
     }
 
     @Override
-    public String getConfigMonitorClassName() {
-        return getConfig().getConfigurationMonitor().getClass().getName();
-    }
-
-    @Override
     public Map<String, String> getConfigProperties() {
         return getConfig().getProperties();
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdminMBean.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdminMBean.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdminMBean.java
index c6c66a2..7526982 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdminMBean.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/LoggerContextAdminMBean.java
@@ -162,15 +162,6 @@ public interface LoggerContextAdminMBean {
     String getConfigFilter();
 
     /**
-     * Returns the class name of the object that is monitoring the 
configuration
-     * file for modifications.
-     * 
-     * @return the class name of the object that is monitoring the 
configuration
-     *         file for modifications
-     */
-    String getConfigMonitorClassName();
-
-    /**
      * Returns a map with configured properties.
      * 
      * @return a map with configured properties.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java
index 51de833..057deee 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/TestConfigurator.java
@@ -246,7 +246,7 @@ public class TestConfigurator {
             Thread.sleep(500);
         }
         assertTrue("setLastModified should have succeeded.", 
file.setLastModified(System.currentTimeMillis()));
-        TimeUnit.SECONDS.sleep(FileConfigurationMonitor.MIN_INTERVAL + 1);
+        
TimeUnit.SECONDS.sleep(config.getWatchManager().getIntervalSeconds()+1);
         for (int i = 0; i < 17; ++i) {
             logger.debug("Test message " + i);
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/609267e2/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8595931..71059cd 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -24,6 +24,9 @@
   </properties>
   <body>
     <release version="2.5" date="2015-MM-DD" description="GA Release 2.5">
+      <action issue="LOG4J2-1202" dev="rgoers" type="update">
+        Remove ConfigurationMonitor. The WatchManager is now used to check for 
configuration changes.
+      </action>
       <action issue="LOG4J2-1195" dev="mikes" type="fix" due-to="Melvin Du">
         Make KafkaAppender support SerializedLayout.
       </action>

Reply via email to