leosutic 2003/12/10 10:05:50
Modified: framework/impl/src/test/org/apache/avalon/framework/configuration/test
DefaultConfigurationTestCase.java
framework/impl/src/java/org/apache/avalon/framework/configuration
DefaultConfiguration.java
Log:
Added code to remove an attribute if its value was set to null.
Revision Changes Path
1.10 +21 -0
avalon/framework/impl/src/test/org/apache/avalon/framework/configuration/test/DefaultConfigurationTestCase.java
Index: DefaultConfigurationTestCase.java
===================================================================
RCS file:
/home/cvs/avalon/framework/impl/src/test/org/apache/avalon/framework/configuration/test/DefaultConfigurationTestCase.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DefaultConfigurationTestCase.java 9 Dec 2003 15:59:31 -0000 1.9
+++ DefaultConfigurationTestCase.java 10 Dec 2003 18:05:49 -0000 1.10
@@ -53,6 +53,7 @@
import junit.framework.TestCase;
import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.ConfigurationUtil;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
@@ -203,6 +204,26 @@
assertEquals( "string", config.getAttribute("string") );
assertEquals( true, config.getAttributeAsBoolean("boolean") );
}
+
+ public void testSetToNull() throws Exception
+ {
+ DefaultConfiguration config = new DefaultConfiguration( "root", "0:0",
"http://root", "root" );
+ config.setAttribute( "integer", "12" );
+ assertEquals( "12", config.getAttribute("integer") );
+
+ config.setAttribute( "integer", null );
+ try
+ {
+ config.getAttribute("integer");
+ fail( "attribute 'integer' was present despite it being set to null" );
+ }
+ catch( ConfigurationException e )
+ {
+ // OK, this is what we expect - the attribute wasn't found.
+ }
+ }
+
+
}
1.38 +15 -5
avalon/framework/impl/src/java/org/apache/avalon/framework/configuration/DefaultConfiguration.java
Index: DefaultConfiguration.java
===================================================================
RCS file:
/home/cvs/avalon/framework/impl/src/java/org/apache/avalon/framework/configuration/DefaultConfiguration.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- DefaultConfiguration.java 9 Dec 2003 15:59:31 -0000 1.37
+++ DefaultConfiguration.java 10 Dec 2003 18:05:49 -0000 1.38
@@ -445,11 +445,21 @@
{
checkWriteable();
- if( null == m_attributes )
+ if( null != value )
{
- m_attributes = new HashMap();
+ if( null == m_attributes )
+ {
+ m_attributes = new HashMap();
+ }
+ m_attributes.put( name, value );
+ }
+ else
+ {
+ if( null != m_attributes )
+ {
+ m_attributes.remove( name );
+ }
}
- m_attributes.put( name, value );
}
/**
@@ -495,7 +505,7 @@
{
setAttribute( name, String.valueOf( value ) );
}
-
+
/**
* Add an attribute to this configuration element, returning its old
* value or <b>null</b>.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]