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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]