You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2015/10/22 21:46:07 UTC

svn commit: r1710083 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration2/ main/java/org/apache/commons/configuration2/builder/combined/ test/java/org/apache/commons/configuration2/ test/java/org/apache/commons/conf...

Author: oheger
Date: Thu Oct 22 19:46:07 2015
New Revision: 1710083

URL: http://svn.apache.org/viewvc?rev=1710083&view=rev
Log:
Replaced logger in AbstractConfiguration.

The log property in AbstractConfiguration is now of type ConfigurationLogger.
Derived classes have been adapted accordingly.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilderProvider.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java Thu Oct 22 19:46:07 2015
@@ -47,8 +47,6 @@ import org.apache.commons.configuration2
 import org.apache.commons.configuration2.sync.Synchronizer;
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.impl.NoOpLog;
 
 /**
  * <p>Abstract configuration class. Provides basic functionality but does not
@@ -124,7 +122,7 @@ public abstract class AbstractConfigurat
     private ConfigurationDecoder configurationDecoder;
 
     /** Stores the logger.*/
-    private Log log;
+    private ConfigurationLogger log;
 
     /**
      * Creates a new instance of {@code AbstractConfiguration}.
@@ -132,7 +130,7 @@ public abstract class AbstractConfigurat
     public AbstractConfiguration()
     {
         interpolator = new AtomicReference<ConfigurationInterpolator>();
-        setLogger(null);
+        initLogger(null);
         installDefaultInterpolator();
         listDelimiterHandler = DisabledListDelimiterHandler.INSTANCE;
         conversionHandler = DefaultConversionHandler.INSTANCE;
@@ -492,26 +490,27 @@ public abstract class AbstractConfigurat
      * Returns the logger used by this configuration object.
      *
      * @return the logger
-     * @since 1.4
+     * @since 2.0
      */
-    public Log getLogger()
+    public ConfigurationLogger getLogger()
     {
         return log;
     }
 
     /**
-     * Allows to set the logger to be used by this configuration object. This
+     * Allows setting the logger to be used by this configuration object. This
      * method makes it possible for clients to exactly control logging behavior.
      * Per default a logger is set that will ignore all log messages. Derived
      * classes that want to enable logging should call this method during their
-     * initialization with the logger to be used.
+     * initialization with the logger to be used. It is legal to pass a
+     * <b>null</b> logger; in this case, logging will be disabled.
      *
      * @param log the new logger
-     * @since 1.4
+     * @since 2.0
      */
-    public void setLogger(Log log)
+    public void setLogger(ConfigurationLogger log)
     {
-        this.log = (log != null) ? log : new NoOpLog();
+        initLogger(log);
     }
 
     /**
@@ -1685,6 +1684,18 @@ public abstract class AbstractConfigurat
     }
 
     /**
+     * Initializes the logger. Supports <b>null</b> input. This method can be
+     * called by derived classes in order to enable logging.
+     *
+     * @param log the logger
+     * @since 2.0
+     */
+    protected final void initLogger(ConfigurationLogger log)
+    {
+        this.log = (log != null) ? log : ConfigurationLogger.newDummyLogger();
+    }
+
+    /**
      * Encodes a property value so that it can be added to this configuration.
      * This method deals with list delimiters. The passed in object has to be
      * escaped so that an add operation yields the same result. If it is a list,

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DatabaseConfiguration.java Thu Oct 22 19:46:07 2015
@@ -35,7 +35,6 @@ import org.apache.commons.configuration2
 import org.apache.commons.configuration2.event.ConfigurationEvent;
 import org.apache.commons.configuration2.event.EventType;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * Configuration stored in a database. The properties are retrieved from a
@@ -162,7 +161,7 @@ public class DatabaseConfiguration exten
      */
     public DatabaseConfiguration()
     {
-        setLogger(LogFactory.getLog(getClass()));
+        initLogger(new ConfigurationLogger(DatabaseConfiguration.class));
         addErrorLogListener();
     }
 

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/DynamicCombinedConfiguration.java Thu Oct 22 19:46:07 2015
@@ -38,8 +38,6 @@ import org.apache.commons.configuration2
 import org.apache.commons.configuration2.tree.ExpressionEngine;
 import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.commons.configuration2.tree.NodeCombiner;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * <p>
@@ -106,7 +104,7 @@ public class DynamicCombinedConfiguratio
     {
         super();
         setNodeCombiner(comb);
-        setLogger(LogFactory.getLog(DynamicCombinedConfiguration.class));
+        initLogger(new ConfigurationLogger(DynamicCombinedConfiguration.class));
         localSubst = initLocalInterpolator();
     }
 
@@ -119,7 +117,7 @@ public class DynamicCombinedConfiguratio
     public DynamicCombinedConfiguration()
     {
         super();
-        setLogger(LogFactory.getLog(DynamicCombinedConfiguration.class));
+        initLogger(new ConfigurationLogger(DynamicCombinedConfiguration.class));
         localSubst = initLocalInterpolator();
     }
 
@@ -922,11 +920,7 @@ public class DynamicCombinedConfiguratio
     {
         if (loggerName != null)
         {
-            Log log = LogFactory.getLog(loggerName);
-            if (log != null)
-            {
-                config.setLogger(log);
-            }
+            config.setLogger(new ConfigurationLogger(loggerName));
         }
         config.setExpressionEngine(this.getExpressionEngine());
         config.setConversionExpressionEngine(getConversionExpressionEngine());

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java Thu Oct 22 19:46:07 2015
@@ -33,7 +33,6 @@ import java.util.Set;
 
 import org.apache.commons.configuration2.event.ConfigurationErrorEvent;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * This Configuration class allows you to interface with a JNDI datasource.
@@ -104,7 +103,7 @@ public class JNDIConfiguration extends A
     {
         this.context = context;
         this.prefix = prefix;
-        setLogger(LogFactory.getLog(getClass()));
+        initLogger(new ConfigurationLogger(JNDIConfiguration.class));
         addErrorLogListener();
     }
 

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java Thu Oct 22 19:46:07 2015
@@ -51,7 +51,6 @@ import org.apache.commons.configuration2
 import org.apache.commons.configuration2.tree.ReferenceNodeHandler;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.mutable.MutableObject;
-import org.apache.commons.logging.LogFactory;
 import org.w3c.dom.Attr;
 import org.w3c.dom.CDATASection;
 import org.w3c.dom.Document;
@@ -235,7 +234,7 @@ public class XMLConfiguration extends Ba
     public XMLConfiguration()
     {
         super();
-        setLogger(LogFactory.getLog(XMLConfiguration.class));
+        initLogger(new ConfigurationLogger(XMLConfiguration.class));
     }
 
     /**
@@ -253,7 +252,7 @@ public class XMLConfiguration extends Ba
         super(c);
         rootElementName =
                 (c != null) ? c.getRootElementName() : null;
-        setLogger(LogFactory.getLog(XMLConfiguration.class));
+        initLogger(new ConfigurationLogger(XMLConfiguration.class));
     }
 
     /**
@@ -973,7 +972,7 @@ public class XMLConfiguration extends Ba
         }
         catch (Exception e)
         {
-            this.getLogger().debug("Unable to load the configuration", e);
+            this.getLogger().debug("Unable to load the configuration: " + e);
             throw new ConfigurationException("Unable to load the configuration", e);
         }
     }

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilderProvider.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilderProvider.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilderProvider.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilderProvider.java Thu Oct 22 19:46:07 2015
@@ -127,7 +127,7 @@ public class CombinedConfigurationBuilde
             BasicBuilderParameters params)
     {
         params.setListDelimiterHandler(config.getListDelimiterHandler())
-                .setLogger(config.getLogger())
+                //TODO handle logger.setLogger(config.getLogger())
                 .setThrowExceptionOnMissing(config.isThrowExceptionOnMissing())
                 .setConfigurationDecoder(config.getConfigurationDecoder());
     }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfiguration.java Thu Oct 22 19:46:07 2015
@@ -31,10 +31,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import junitx.framework.ListAssert;
-
 import org.apache.commons.configuration2.ex.ConversionException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.junit.Test;
 
 /**
@@ -181,7 +178,7 @@ public abstract class TestAbstractConfig
     {
         AbstractConfiguration config = getEmptyConfiguration();
         assertNotNull("Default logger is null", config.getLogger());
-        Log log = LogFactory.getLog(config.getClass());
+        ConfigurationLogger log = new ConfigurationLogger(config.getClass());
         config.setLogger(log);
         assertSame("Logger was not set", log, config.getLogger());
     }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestAbstractConfigurationBasicFeatures.java Thu Oct 22 19:46:07 2015
@@ -16,10 +16,13 @@
  */
 package org.apache.commons.configuration2;
 
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.sameInstance;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
@@ -41,6 +44,7 @@ import org.apache.commons.configuration2
 import org.apache.commons.configuration2.event.EventType;
 import org.apache.commons.configuration2.interpol.ConfigurationInterpolator;
 import org.apache.commons.configuration2.interpol.Lookup;
+import org.apache.commons.logging.impl.NoOpLog;
 import org.easymock.EasyMock;
 import org.junit.Test;
 
@@ -62,6 +66,42 @@ public class TestAbstractConfigurationBa
     private static final int PROP_COUNT = 12;
 
     /**
+     * Tests the logger set per default.
+     */
+    @Test
+    public void testDefaultLogger()
+    {
+        AbstractConfiguration config = new BaseConfiguration();
+        assertThat("Wrong default logger", config.getLogger().getLog(), instanceOf(NoOpLog.class));
+    }
+
+    /**
+     * Tests whether the logger can be set.
+     */
+    @Test
+    public void testSetLogger()
+    {
+        ConfigurationLogger logger = new ConfigurationLogger(getClass());
+        AbstractConfiguration config = new BaseConfiguration();
+
+        config.setLogger(logger);
+        assertThat("Logger not set", config.getLogger(), sameInstance(logger));
+    }
+
+    /**
+     * Tests that the logger can be disabled by setting it to null.
+     */
+    @Test
+    public void testSetLoggerNull()
+    {
+        AbstractConfiguration config = new BaseConfiguration();
+        config.setLogger(new ConfigurationLogger(getClass()));
+
+        config.setLogger(null);
+        assertThat("Logger not disabled", config.getLogger().getLog(), instanceOf(NoOpLog.class));
+    }
+
+    /**
      * Tests the clear() implementation of AbstractConfiguration if the iterator
      * returned by getKeys() does not support the remove() operation.
      */

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java?rev=1710083&r1=1710082&r2=1710083&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java Thu Oct 22 19:46:07 2015
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTru
 import java.io.File;
 
 import org.apache.commons.configuration2.ConfigurationAssert;
+import org.apache.commons.configuration2.ConfigurationLogger;
 import org.apache.commons.configuration2.XMLConfiguration;
 import org.apache.commons.configuration2.io.FileHandler;
 import org.apache.commons.logging.Log;
@@ -63,7 +64,7 @@ public class TestExprLookup
         XMLConfiguration config = new XMLConfiguration();
         FileHandler handler = new FileHandler(config);
         handler.load(TEST_FILE);
-        config.setLogger(log);
+        config.setLogger(new ConfigurationLogger("TestLogger"));
         ExprLookup lookup = new ExprLookup(vars);
         lookup.setInterpolator(config.getInterpolator());
         lookup.setLogger(log);