[
https://issues.apache.org/jira/browse/CONFIGURATION-328?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
vivek updated CONFIGURATION-328:
--------------------------------
Priority: Major (was: Blocker)
I tried adding attribute as part of the property element itself,
{code:java}
nodeToAdd.addAttribute(new DefaultConfigurationNode(attrName, newPropertyName));
{code}
This seems to work fine. So, instead of using "setAttribute(true)" if I just do
addAttribute it seems to work fine. May be that's the right way.
I'll leave to you guys to see whether there is any issue in 1.5 or it used to
work in 1.3 because of some bug, which has been fixed in 1.5.
For me the workaround is working fine now.
> XMLConfiguration addNodes() not behaving correctly
> --------------------------------------------------
>
> Key: CONFIGURATION-328
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-328
> Project: Commons Configuration
> Issue Type: Bug
> Affects Versions: 1.5
> Environment: Linux, Apache Configuration 1.5
> Reporter: vivek
> Fix For: 1.6
>
>
> Things used to work fine in 1.3, but now when I'm trying 1.5 my JUnit test
> suite is breaking when adding new properties. Here is what I'm doing,
> 1) I already have a configuration as following,
> {code:xml}
> <test>
> <property name="isOk">
> <value>true</value>
> <default>false</default>
> </property>
> <property name="intProperty">
> <value>900</value>
> <default>500</default>
> </property>
> <property extra="0" name="stringProperty">
> <default>Bye</default>
> </property>
> </test>
> {code}
> 2) Now I need to add two new properties under <test>,
> {code:xml}
> <property name="newFirst">
> <value>first</value>
> </property>
> <property name="newSecond">
> <value>second</value>
> </property>
> {code}
> 3) Here is the code I'm using,
> a) First create a new HierarchicalConfiguration.Node
> {code:java}
> private HierarchicalConfiguration.Node createNode(String name, Object value)
> {
> HierarchicalConfiguration.Node node = new
> HierarchicalConfiguration.Node(name);
> node.setValue(value);
> return node;
> }
> {code}
>
> b) Add the node to the list
> {code:java}
> List<HierarchicalConfiguration.Node> attrNodes = new
> ArrayList<HierarchicalConfiguration.Node>();
> Node attrNode = createNode(attrName, newPropertyName);
> attrNode.setAttribute(true);
> attrNodes.add(attrNode);
> {code}
>
> c) Call addNodes on XMLConfiguration,
> {code:java}
> conf.addNodes(attrPath, attrNodes);
> {code}
> I run this in a look for each new property I need to add. For first property,
> I get element count for the test.property as 3 (conf.getMaxIndex(key)) - so I
> insert at test.property(3), which is right, but for the second property I get
> element count as 5 --> This is wrong, it should have been 4 (because I just
> added 1).
> I check the saved the configuration file after adding those two new
> properties and it looks wrong too. Here is what I get,
> {code:xml}
> <test>
> <property name="isOk">
> <value>true</value>
> <default>false</default>
> </property>
> <property name="intProperty">
> <value>900</value>
> <default>500</default>
> </property>
> <property extra="0" name="stringProperty">
> <value>Hi</value>
> default>Bye</default>
> </property>
> <property>
> <name>newFirst</name>
> </property>
> <property>
> <value>first</value>
> </property>
> <property>
> <name>newSecond</name>
> </property>
> <property>
> <value>second</value>
> </property>
> </test>
> {code}
> The total element count for test.property gives me 7 ==> I was expecting 5.
> There seems to have some code change in 1.5 releated to addNodes (for ex.,
> CONFIGURATION-287). I'm not sure if I need to change the way I was calling
> addNodes before. It works fine with 1.3, but 1.5 completely fails on adding
> new properties.
> I do need 1.5 for other bug fixes ( CONFIGURATION-268 and some other), but I
> can't use it until the addNodes behave correctly.
> Marking this as blocker as I'm blocked because of this issue. If there is a
> workaround then please let me know.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.