stephan     2002/08/30 01:14:57

  Modified:    src/java/org/apache/cocoon/webapps/session/xml XMLUtil.java
  Log:
  NPE tested with Blackdown 1.4.1 and jakarta-tomcat-4.1.9-LE-jdk14.
  The Excalibur JaxpParser take the right parser. The problem is that
  XMLUtil gets different types of Element:
  org.apache.xerces.dom.ElementNSImpl and
  org.apache.xerces.dom.ElementImpl
  And ElementImpl.getLocalName() returns null.
  
  Revision  Changes    Path
  1.6       +24 -8     
xml-cocoon2/src/java/org/apache/cocoon/webapps/session/xml/XMLUtil.java
  
  Index: XMLUtil.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/session/xml/XMLUtil.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLUtil.java      21 Aug 2002 06:43:58 -0000      1.5
  +++ XMLUtil.java      30 Aug 2002 08:14:57 -0000      1.6
  @@ -836,7 +836,7 @@
           try {
               getNodesFromPath(result, contextNode, path, 0);
           } catch (NullPointerException npe) {
  -            // this NPE is thrown because the parser iss not configured
  +            // this NPE is thrown because the parser is not configured
               // to use DOM Level 2
               throw new NullPointerException("XMLUtil.getNodeListFromPath() did catch 
a NullPointerException."+
                             "This might be due to a missconfigured XML parser which 
does not use DOM Level 2."+
  @@ -861,9 +861,17 @@
                   l = childs.getLength();
                   while (m < l) {
                       item = childs.item(m);
  -                    if (item.getNodeType() == Document.ELEMENT_NODE
  -                        && item.getLocalName().equals(path[startIndex]) == true) {
  -                        result.addNode(item);
  +                    if (item.getNodeType() == Document.ELEMENT_NODE) {
  +                        // Work around: org.apache.xerces.dom.ElementImpl doesn't 
handle getLocalName() correct
  +                        if (item.getLocalName()!=null) {
  +                            if (item.getLocalName().equals(path[startIndex]) == 
true) {
  +                                result.addNode(item);
  +                            }
  +                        } else {
  +                            if (item.getNodeName().equals(path[startIndex]) == 
true) {
  +                                result.addNode(item);
  +                            }
  +                        }
                       }
                       m++;
                   }
  @@ -874,9 +882,17 @@
                   l = childs.getLength();
                   while (m < l) {
                       item = childs.item(m);
  -                    if (item.getNodeType() == Document.ELEMENT_NODE
  -                        && item.getLocalName().equals(path[startIndex]) == true) {
  -                        getNodesFromPath(result, item, path, startIndex+1);
  +                    if (item.getNodeType() == Document.ELEMENT_NODE) {
  +                        // Work around: org.apache.xerces.dom.ElementImpl doesn't 
handle getLocalName() correct
  +                        if (item.getLocalName()!=null) {
  +                            if (item.getLocalName().equals(path[startIndex]) == 
true) {
  +                                getNodesFromPath(result, item, path, startIndex+1);
  +                            }
  +                        } else {
  +                            if (item.getNodeName().equals(path[startIndex]) == 
true) {
  +                                getNodesFromPath(result, item, path, startIndex+1);
  +                            }
  +                        }
                       }
                       m++;
                   }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to