commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oliver Heger <oliver.he...@oliver-heger.de>
Subject Re: [Configuration] XMLConfiguration Duplicate Entries
Date Sat, 20 Jan 2007 19:09:52 GMT
Hello Brian,

I think I see the problem:

Brian O'Connell wrote:
> Oliver,
> I apologize for my incomplete snippet.  Looking back it would be difficult
> to track down what was going on.   So lets try this one more time with some
> complete code. :-)
> 
> XML Configuration Used:
> 
<snip/>
> 
> 
> Here is a sample class illustrating the issue:
> 
> import java.util.Arrays;
> 
> import org.apache.commons.configuration.Configuration;
> import org.apache.commons.configuration.XMLConfiguration;
> 
> 
> public class ConfigTest {
> 
> 
>    public ConfigTest() throws Exception {
> 
>         XMLConfiguration config = new XMLConfiguration( "CVT.xml" );
> 
>        config.setValidating( false );
> 
>        config.load();

When you create a XMLConfiguration passing in the file name to the 
constructor the XML document is immediately loaded. After that you call 
the load() method, which causes the document to be loaded once again. As 
is stated in the Javadocs for AbstractFileConfiguration (a base class of 
XMLConfiguration) [1] a call to load() will not clear the configuration 
first, but simply add the loaded properties. So you end up with having 
all your properties twice.

Simply omit the call to load() or use the default constructor of 
XMLConfiguration() and your problem should be solved.

Oliver

[1] 
http://jakarta.apache.org/commons/configuration/apidocs/org/apache/commons/configuration/AbstractFileConfiguration.html

> 
> 
>        Configuration subConfig = config.subset( "Hosts" );
> 
>        System.out.println(subConfig.getString( "Subscribers" ));
>        System.out.println(Arrays.asList(subConfig.getStringArray(
> "Subscribers" )));
> 
> 
>    }
> 
>    /**
>     * @param args
>     */
>    public static void main(String[] args) throws Exception {
> 
>        new ConfigTest();
> 
> 
>    }
> 
> }
> 
> Here is the output:
> node1
> [node1, node1]
> 
> 
> I would expect the following output from that code above:
> node1
> [node1]
> 
> In other words I would expect a one element array returned by 
> getStringArray
> and the contents of that string array being "node1".
> 
> Thanks!
> 
> 
> 
> On 1/18/07, Oliver Heger <oliver.heger@oliver-heger.de> wrote:
>>
>> Brian O'Connell wrote:
>> > I searched the archives (the best I could) but was unable to locate a
>> > solution to this problem.
>> >
>> > I am using commons configuration 1.3
>> >
>> > I am seeing duplicate entries using the getStringArray method with an
>> > XMLConfiguration.
>> >
>> > Here is an example configuration file:
>> >
>> > <?xml version="1.0" encoding="UTF-8" ?>
>> > <CollectiveVerificationTool>
>> >   <Topic>test</Topic>
>> >
>> >   <Publication>
>> >      <Username>user</Username>
>> >      <Password>usertest</Password>
>> >   </Publication>
>> >
>> >   <Hosts>
>> >      <Subscribers>node1</Subscribers>
>> >      <Publishers>node3</Publishers>
>> >   </Hosts>
>> >
>> >
>> > </CollectiveVerificationTool>
>> >
>> >
>> > Here is a code snippet that experiences the problem.
>> >
>> >
>> > String single = configuration.getString( key );
>> >
>> > System.out.println(single);
>> >
>> > String value[] = configuration.getStringArray( key );
>> >
>> > System.out.println("Size of Array: " + value.length);
>> >
>> > System.out.println(Arrays.asList(value));
>>
>> Sorry, but from this snippet I cannot track down the problem. Which
>> value has the key variable? How did you load the configuration?
>>
>> Oliver
>>
>>
>> >
>> >
>> > Here is the output of that snippet:
>> >
>> > node1
>> > Size of Array: 2
>> > [node1, node1]
>> >
>> >
>> > I would expect the size of the array to be 1 and the only item to be a
>> > single entry of node1.
>> >
>> > Any pointers are appreciated.
>> >
>> > Thanks!
>> >
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>>
>>
> 


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


Mime
View raw message