You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oh...@apache.org on 2007/01/13 20:37:35 UTC

svn commit: r495952 - in /jakarta/commons/proper/configuration/trunk: src/java/org/apache/commons/configuration/ src/test/org/apache/commons/configuration/ xdocs/

Author: oheger
Date: Sat Jan 13 11:37:34 2007
New Revision: 495952

URL: http://svn.apache.org/viewvc?view=rev&rev=495952
Log:
AbstractConfiguration now supports setting a specific logger for a configuration instance. Derived classes were updated to use this logger. This update is related to CONFIGURATION-3

Modified:
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DatabaseConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestAbstractConfiguration.java
    jakarta/commons/proper/configuration/trunk/xdocs/changes.xml

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractConfiguration.java?view=diff&rev=495952&r1=495951&r2=495952
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractConfiguration.java Sat Jan 13 11:37:34 2007
@@ -32,6 +32,8 @@
 import org.apache.commons.lang.BooleanUtils;
 import org.apache.commons.lang.text.StrLookup;
 import org.apache.commons.lang.text.StrSubstitutor;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.impl.NoOpLog;
 
 /**
  * <p>Abstract configuration class. Provides basic functionality but does not
@@ -113,6 +115,17 @@
     /** Stores a reference to the object that handles variable interpolation.*/
     private StrSubstitutor substitutor;
 
+    /** Stores the logger.*/
+    private Log log;
+    
+    /**
+     * Creates a new instance of <code>AbstractConfiguration</code>.
+     */
+    protected AbstractConfiguration()
+    {
+        setLogger(null);
+    }
+
     /**
      * For configurations extending AbstractConfiguration, allow them to change
      * the listDelimiter from the default comma (","). This value will be used
@@ -292,6 +305,32 @@
             }
         });
         return interpol;
+    }
+
+    /**
+     * Returns the logger used by this configuration object.
+     *
+     * @return the logger
+     * @since 1.4
+     */
+    public Log getLogger()
+    {
+        return log;
+    }
+
+    /**
+     * Allows to set 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.
+     *
+     * @param log the new logger
+     * @since 1.4
+     */
+    public void setLogger(Log log)
+    {
+        this.log = (log != null) ? log : new NoOpLog();
     }
 
     /**

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java?view=diff&rev=495952&r1=495951&r2=495952
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractFileConfiguration.java Sat Jan 13 11:37:34 2007
@@ -34,7 +34,6 @@
 import org.apache.commons.configuration.reloading.InvariantReloadingStrategy;
 import org.apache.commons.configuration.reloading.ReloadingStrategy;
 import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
@@ -95,9 +94,6 @@
     /** Holds a reference to the reloading strategy.*/
     protected ReloadingStrategy strategy;
 
-    /** The logger.*/
-    private Log log = LogFactory.getLog(getClass());
-
     /** A lock object for protecting reload operations.*/
     private Object reloadLock = new Object();
 
@@ -118,6 +114,7 @@
     public AbstractFileConfiguration()
     {
         initReloadingStrategy();
+        setLogger(LogFactory.getLog(getClass()));
     }
 
     /**
@@ -304,7 +301,7 @@
             }
             catch (IOException e)
             {
-                log.warn("Could not close input stream", e);
+                getLogger().warn("Could not close input stream", e);
             }
         }
     }
@@ -468,7 +465,7 @@
             }
             catch (IOException e)
             {
-                log.warn("Could not close output stream", e);
+                getLogger().warn("Could not close output stream", e);
             }
         }
     }
@@ -790,9 +787,9 @@
 
                     if (strategy.reloadingRequired())
                     {
-                        if (log.isInfoEnabled())
+                        if (getLogger().isInfoEnabled())
                         {
-                            log.info("Reloading configuration. URL is " + getURL());
+                            getLogger().info("Reloading configuration. URL is " + getURL());
                         }
                         fireEvent(EVENT_RELOAD, null, getURL(), true);
                         setDetailEvents(false);
@@ -813,7 +810,7 @@
                 }
                 catch (Exception e)
                 {
-                    log.warn("Error when reloading configuration", e);
+                    getLogger().warn("Error when reloading configuration", e);
                     // todo rollback the changes if the file can't be reloaded
                 }
                 finally

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DatabaseConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DatabaseConfiguration.java?view=diff&rev=495952&r1=495951&r2=495952
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DatabaseConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/DatabaseConfiguration.java Sat Jan 13 11:37:34 2007
@@ -29,7 +29,6 @@
 
 import javax.sql.DataSource;
 
-import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
@@ -42,9 +41,6 @@
  */
 public class DatabaseConfiguration extends AbstractConfiguration
 {
-    /** Logger */
-    private static Log log = LogFactory.getLog(DatabaseConfiguration.class);
-
     /** The datasource to connect to the database. */
     private DataSource datasource;
 
@@ -82,6 +78,7 @@
         this.keyColumn = keyColumn;
         this.valueColumn = valueColumn;
         this.name = name;
+        setLogger(LogFactory.getLog(getClass()));
     }
 
     /**
@@ -148,7 +145,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -195,7 +192,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -241,7 +238,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -287,7 +284,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -329,7 +326,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -368,7 +365,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -414,7 +411,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
         finally
         {
@@ -447,7 +444,7 @@
         }
         catch (SQLException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
         }
     }
 }

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java?view=diff&rev=495952&r1=495951&r2=495952
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java Sat Jan 13 11:37:34 2007
@@ -31,7 +31,6 @@
 import javax.naming.NamingException;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 /**
@@ -45,9 +44,6 @@
  */
 public class JNDIConfiguration extends AbstractConfiguration
 {
-    /** Logger. */
-    private static Log log = LogFactory.getLog(JNDIConfiguration.class);
-
     /** The prefix of the context. */
     private String prefix;
 
@@ -106,6 +102,7 @@
     {
         this.context = context;
         this.prefix = prefix;
+        setLogger(LogFactory.getLog(getClass()));
     }
 
     /**
@@ -215,7 +212,7 @@
         }
         catch (NamingException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
             return new ArrayList().iterator();
         }
     }
@@ -299,7 +296,7 @@
         }
         catch (NamingException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
             return true;
         }
     }
@@ -353,7 +350,7 @@
         }
         catch (NamingException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
             return false;
         }
     }
@@ -405,7 +402,7 @@
         }
         catch (NamingException e)
         {
-            log.error(e.getMessage(), e);
+            getLogger().error(e.getMessage(), e);
             return null;
         }
     }

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestAbstractConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestAbstractConfiguration.java?view=diff&rev=495952&r1=495951&r2=495952
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestAbstractConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestAbstractConfiguration.java Sat Jan 13 11:37:34 2007
@@ -21,6 +21,9 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import junit.framework.TestCase;
 import junitx.framework.ListAssert;
 
@@ -128,4 +131,15 @@
         ListAssert.assertEquals("keys", expectedKeys, actualKeys);
     }
 
+    /**
+     * Tests accessing the configuration's logger.
+     */
+    public void testSetLogger()
+    {
+        AbstractConfiguration config = getEmptyConfiguration();
+        assertNotNull("Default logger is null", config.getLogger());
+        Log log = LogFactory.getLog(config.getClass());
+        config.setLogger(log);
+        assertSame("Logger was not set", log, config.getLogger());
+    }
 }

Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?view=diff&rev=495952&r1=495951&r2=495952
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Sat Jan 13 11:37:34 2007
@@ -23,6 +23,11 @@
 
   <body>
     <release version="1.4-dev" date="in SVN">
+      <action dev="oheger" type="add">
+        AbstractConfiguration now allows to set an instance specific logger
+        using the setLogger() method. This gives clients more control over a
+        configuration's logging behavior.
+      </action>
       <action dev="oheger" type="add" issue="CONFIGURATION-155">
         SubsetConfiguration and CompositeConfiguration were updated to fully
         support an instance specific list delimiter. Concerning splitting of



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org