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

Reply via email to