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