DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=31046>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=31046 [configuration] XMLConfiguration.addProperty doesn't create new child nodes Summary: [configuration] XMLConfiguration.addProperty doesn't create new child nodes Product: Commons Version: Nightly Builds Platform: All OS/Version: All Status: NEW Severity: Critical Priority: Other Component: Configuration AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Issue reported by Ben Hutchison on the dev list: XMLConfiguration.addProperty(key, Object) doesn't handle nest keys properly. In this loop logic, the full key name is broken into parts, and the DOM tree is walked. However, if a branch mentioned in the key isn't there, the loop incorrectly breaks out. Result is that eg addProperty("a.b") doesn't actually add at "a.b" unless "a" & "b" already exist. Old version shown: String[] nodes = parseElementNames(name); Element element = document.getDocumentElement(); Element parent = element; for (int i = 0; i < nodes.length; i++) { if (element == null) break; //******************** this is not right ********************** parent = element; String eName = nodes[i]; Element child = getChildElementWithName(eName, element); element = child; } My tested fix: Element element = document.getDocumentElement(); Element child = null; for (int i = 0; i < nodes.length; i++) { child = getChildElementWithName(nodes[i], element); if (child == null) { child = document.createElement(nodes[i]); element.appendChild(child); } element = child; } if (attName == null) { CharacterData data = document.createTextNode(value.toString()); child.appendChild(data); } else { child.setAttribute(attName, value.toString()); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]