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]

Reply via email to