Update of /var/cvs/src/org/mmbase/util/xml
In directory james.mmbase.org:/tmp/cvs-serv2048
Modified Files:
BuilderReader.java
Log Message:
MMB-1714
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/util/xml
See also: http://www.mmbase.org/jira/browse/MMB-1714
Index: BuilderReader.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/xml/BuilderReader.java,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -b -r1.100 -r1.101
--- BuilderReader.java 3 Sep 2008 16:31:02 -0000 1.100
+++ BuilderReader.java 3 Sep 2008 16:57:38 -0000 1.101
@@ -39,7 +39,7 @@
* @author Rico Jansen
* @author Pierre van Rooden
* @author Michiel Meeuwissen
- * @version $Id: BuilderReader.java,v 1.100 2008/09/03 16:31:02 michiel Exp $
+ * @version $Id: BuilderReader.java,v 1.101 2008/09/03 16:57:38 michiel Exp $
*/
public class BuilderReader extends DocumentReader {
@@ -167,21 +167,50 @@
doc.getDocumentElement().setAttribute(item.getNodeName(),
item.getNodeValue());
}
}
- {
- // copy class, searchage
+
+ for (String name : new String[] {"class", "searchage", "status"}) { //
these must entirely
+ //
replace the tag if present
+ Element overrideEl =
getElementByPath(overrides.getDocumentElement(), name);
+ if (overrideEl != null) {
+ Element newEl = (Element) doc.importNode(overrideEl, true);
+ Element docEl = getElementByPath(doc.getDocumentElement(),
name);
+ if (docEl != null) {
+ doc.getDocumentElement().replaceChild(docEl, newEl);
+ } else {
+ document.appendChild(newEl);
+ }
+ }
+ }
+
+ for (String list : new String[] {"names", "descriptions",
"properties"}) {
+ // if these are found, simply all sub-elements must be added.
+
+ List<Element> elementList =
getChildElements(doc.getDocumentElement(), list);
+ Element element;
+ if (elementList.size() == 0) {
+ element = document.createElement(list);
+ document.appendChild(element);
+ } else {
+ element = elementList.get(elementList.size() - 1);
+ }
+ for (Element e : getChildElements(overrides.getDocumentElement(),
list + ".*")) {
+ Element newE = (Element) doc.importNode(e, true);
+ element.appendChild(newE);
+
+ }
}
- // add fieldlists
- for(Element fieldList :
getChildElements(overrides.getDocumentElement(), "fieldlist")) {
- Element newFieldList = (Element) doc.importNode(fieldList, true);
- doc.getDocumentElement().appendChild(newFieldList);
- }
- // add functionlists
- for(Element functionList :
getChildElements(overrides.getDocumentElement(), "functionlist")) {
- Element newFunctionList = (Element) doc.importNode(functionList,
true);
- doc.getDocumentElement().appendChild(newFunctionList);
+
+ for (String list : new String[] {"fieldlist", "functionlist",
"indexlist"}) {
+ // if these are found, they simply must be added too.
+
+ for(Element el : getChildElements(overrides.getDocumentElement(),
list)) {
+ Element newEl = (Element) doc.importNode(el, true);
+ doc.getDocumentElement().appendChild(newEl);
}
}
+ }
+
/**
* Resolves inheritance.
* If a builder 'extends' another builder, the parser attempts to
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs