Author: oheger
Date: Tue Mar 15 20:20:25 2011
New Revision: 1081926
URL: http://svn.apache.org/viewvc?rev=1081926&view=rev
Log:
Prevent JNDIConfiguration.getKeys() from logging an exception if no keys are
found. Thanks to Mike Noordermeer for the patch.
Modified:
commons/proper/configuration/trunk/src/changes/changes.xml
commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java
commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java
Modified: commons/proper/configuration/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/changes/changes.xml?rev=1081926&r1=1081925&r2=1081926&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/changes/changes.xml (original)
+++ commons/proper/configuration/trunk/src/changes/changes.xml Tue Mar 15
20:20:25 2011
@@ -23,6 +23,10 @@
<body>
<release version="1.7" date="in SVN" description="">
+ <action dev="oheger" type="update" issue="CONFIGURATION-438"
due-to="Mike Noordermeer">
+ JNDIConfiguration.getKeys() no more logs an exception if the prefix
does
+ not exist.
+ </action>
<action dev="oheger" type="update" issue="CONFIGURATION-436">
The optional dependency to Apache Ant has been changed to the new
groupId org.apache.ant. The version was updated to the most recent
Modified:
commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java?rev=1081926&r1=1081925&r2=1081926&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java
(original)
+++
commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/JNDIConfiguration.java
Tue Mar 15 20:20:25 2011
@@ -218,6 +218,11 @@ public class JNDIConfiguration extends A
return keys.iterator();
}
+ catch (NameNotFoundException e)
+ {
+ // expected exception, no need to log it
+ return new ArrayList().iterator();
+ }
catch (NamingException e)
{
fireError(EVENT_READ_PROPERTY, null, null, e);
Modified:
commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java?rev=1081926&r1=1081925&r2=1081926&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java
(original)
+++
commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestJNDIConfiguration.java
Tue Mar 15 20:20:25 2011
@@ -22,6 +22,7 @@ import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import junit.framework.TestCase;
@@ -37,7 +38,7 @@ public class TestJNDIConfiguration exten
public static final String CONTEXT_FACTORY =
MockInitialContextFactory.class.getName();
- private JNDIConfiguration conf;
+ private PotentialErrorJNDIConfiguration conf;
private NonStringTestHolder nonStringTestHolder;
/** A test error listener for counting internal errors.*/
@@ -176,14 +177,14 @@ public class TestJNDIConfiguration exten
public void testConstructor() throws Exception
{
// test the constructor accepting a context
- conf = new JNDIConfiguration(new InitialContext());
+ JNDIConfiguration c = new JNDIConfiguration(new InitialContext());
- assertEquals("'test.boolean' property", "true",
conf.getString("test.boolean"));
+ assertEquals("'test.boolean' property", "true",
c.getString("test.boolean"));
// test the constructor accepting a context and a prefix
- conf = new JNDIConfiguration(new InitialContext(), "test");
+ c = new JNDIConfiguration(new InitialContext(), "test");
- assertEquals("'boolean' property", "true", conf.getString("boolean"));
+ assertEquals("'boolean' property", "true", c.getString("boolean"));
}
/**
@@ -191,7 +192,7 @@ public class TestJNDIConfiguration exten
*/
private PotentialErrorJNDIConfiguration setUpErrorConfig()
{
- ((PotentialErrorJNDIConfiguration) conf).failOnGetCtx = true;
+ conf.installException();
conf.removeErrorListener((ConfigurationErrorListener) conf
.getErrorListeners().iterator().next());
return (PotentialErrorJNDIConfiguration) conf;
@@ -217,8 +218,8 @@ public class TestJNDIConfiguration exten
*/
public void testLogListener() throws NamingException
{
- conf = new JNDIConfiguration();
- assertEquals("No error log listener registered", 1, conf
+ JNDIConfiguration c = new JNDIConfiguration();
+ assertEquals("No error log listener registered", 1, c
.getErrorListeners().size());
}
@@ -273,8 +274,19 @@ public class TestJNDIConfiguration exten
Hashtable env = new Hashtable();
env.put(MockInitialContextFactory.PROP_CYCLES, Boolean.TRUE);
InitialContext initCtx = new InitialContext(env);
- conf = new JNDIConfiguration(initCtx);
- conf.getKeys("cycle");
+ JNDIConfiguration c = new JNDIConfiguration(initCtx);
+ c.getKeys("cycle");
+ }
+
+ /**
+ * Tests getKeys() if no data is found. This should not cause a problem and
+ * not notify the error listeners.
+ */
+ public void testGetKeysNoData()
+ {
+ conf.installException(new NameNotFoundException("Test exception"));
+ assertFalse("Got keys", conf.getKeys().hasNext());
+ listener.verify();
}
/**
@@ -282,21 +294,46 @@ public class TestJNDIConfiguration exten
* throw an exception when accessing the base context. Used for testing the
* exception handling.
*/
- public static class PotentialErrorJNDIConfiguration extends
JNDIConfiguration
+ public static class PotentialErrorJNDIConfiguration extends
+ JNDIConfiguration
{
- /** A flag whether an exception should be thrown. */
- boolean failOnGetCtx;
+ /** An exception to be thrown by getBaseContext(). */
+ private NamingException exception;
- public PotentialErrorJNDIConfiguration(Context ctx) throws
NamingException
+ public PotentialErrorJNDIConfiguration(Context ctx)
+ throws NamingException
{
super(ctx);
}
+ /**
+ * Prepares this object to throw an exception when the JNDI context is
+ * queried.
+ *
+ * @param nex the exception to be thrown
+ */
+ public void installException(NamingException nex)
+ {
+ exception = nex;
+ }
+
+ /**
+ * Prepares this object to throw a standard exception when the JNDI
+ * context is queried.
+ */
+ public void installException()
+ {
+ installException(new NamingException("Simulated JNDI exception!"));
+ }
+
+ /**
+ * Returns the JNDI context. Optionally throws an exception.
+ */
public Context getBaseContext() throws NamingException
{
- if (failOnGetCtx)
+ if (exception != null)
{
- throw new NamingException("Simulated JNDI exception!");
+ throw exception;
}
return super.getBaseContext();
}