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