Update of /var/cvs/src/org/mmbase/bridge/util/xml
In directory james.mmbase.org:/tmp/cvs-serv10595

Modified Files:
      Tag: MMBase-1_8
        Generator.java 
Log Message:
getElementById, it's a disaster


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/bridge/util/xml


Index: Generator.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/bridge/util/xml/Generator.java,v
retrieving revision 1.39.2.5
retrieving revision 1.39.2.6
diff -u -b -r1.39.2.5 -r1.39.2.6
--- Generator.java      18 Feb 2008 12:52:00 -0000      1.39.2.5
+++ Generator.java      23 Apr 2008 13:29:17 -0000      1.39.2.6
@@ -26,7 +26,7 @@
  *
  * @author Michiel Meeuwissen
  * @author Eduard Witteveen
- * @version $Id: Generator.java,v 1.39.2.5 2008/02/18 12:52:00 michiel Exp $
+ * @version $Id: Generator.java,v 1.39.2.6 2008/04/23 13:29:17 michiel Exp $
  * @since  MMBase-1.6
  */
 public class Generator {
@@ -43,6 +43,7 @@
 
     private boolean namespaceAware = false;
 
+    private boolean getElementByIdWorks = false;
     /**
      * To create documents representing structures from the cloud, it
      * needs a documentBuilder, to contruct the DOM Document, and the
@@ -177,7 +178,9 @@
         Element object = getNode(node);
 
         if (! (object.getFirstChild() instanceof Element)) {
-            log.warn("Cannot find first field of " + XMLWriter.write(object, 
false));
+            Node firstChild = object.getFirstChild();
+            log.warn("Cannot find first field of " + XMLWriter.write(object, 
false) + " for " + node);
+            log.warn(firstChild == null ? "NULL" : ("" + firstChild.getClass() 
+ " " + firstChild.getNodeName()), new Exception());
             return object;
         }
         // get the field...
@@ -278,6 +281,9 @@
 
     protected Element getElementById(Node n, String id) {
 
+        if (getElementByIdWorks) {
+            object = getDocument().getElementById("" + node.getNumber());
+        } else {
         NodeList list = n.getChildNodes();
         for (int i = 0 ; i < list.getLength(); i++) {
             Node node = list.item(i);
@@ -292,7 +298,9 @@
             Element subs = getElementById(node, id);
             if (subs != null) return subs;
         }
+
         return null;
+        }
 
     }
 
@@ -310,6 +318,7 @@
         try {
             java.lang.reflect.Method m =  cl.getMethod("setIdAttribute", new 
Class[] {String.class, Boolean.TYPE});
             m.invoke(object, new Object[] {name, Boolean.TRUE});
+            getElementByIdWorks = true;
         } catch(NoSuchMethodException nsme) {
             log.warn(nsme + "Try a better dom implementation. This one 
sucks.", nsme);
         } catch(Exception iae) {
@@ -325,14 +334,8 @@
 
         // if we are a relation,.. behave like one!
         // why do we find it out now, and not before?
-        boolean getElementByIdWorks = false;
-        Element object = null;
-        if (getElementByIdWorks) {
-            // Michiel: I tried it by specifieing id as ID in dtd, but that 
also doesn't make it work.
-            object = getDocument().getElementById("" + node.getNumber());
-        } else {
-            object = getElementById(getDocument(), "" + node.getNumber());
-        }
+
+        Element object = getElementById(getDocument(), "" + node.getNumber());
 
         if (object != null)
             return object;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to