markt 2003/12/22 04:38:54 Modified: catalina/src/share/org/apache/catalina/servlets WebdavServlet.java catalina/src/share/org/apache/catalina/util DOMWriter.java Log: - Port patch. - Fix bug 8859. Correct namespace handling for lock owners in WebDAV servlet. Revision Changes Path 1.31 +9 -6 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java Index: WebdavServlet.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/WebdavServlet.java,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- WebdavServlet.java 10 Dec 2003 21:36:05 -0000 1.30 +++ WebdavServlet.java 22 Dec 2003 12:38:54 -0000 1.31 @@ -261,9 +261,11 @@ protected DocumentBuilder getDocumentBuilder() throws ServletException { DocumentBuilder documentBuilder = null; + DocumentBuilderFactory documentBuilderFactory = null; try { - documentBuilder = - DocumentBuilderFactory.newInstance().newDocumentBuilder(); + documentBuilderFactory = DocumentBuilderFactory.newInstance(); + documentBuilderFactory.setNamespaceAware(true); + documentBuilder = documentBuilderFactory.newDocumentBuilder(); } catch(ParserConfigurationException e) { throw new ServletException (sm.getString("webdavservlet.jaxpfailed")); @@ -1014,6 +1016,7 @@ case Node.ELEMENT_NODE: strWriter = new StringWriter(); domWriter = new DOMWriter(strWriter, true); + domWriter.setQualifiedNames(false); domWriter.print(currentNode); lock.owner += strWriter.toString(); break; 1.3 +52 -11 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/DOMWriter.java Index: DOMWriter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/DOMWriter.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- DOMWriter.java 22 Jul 2001 20:25:13 -0000 1.2 +++ DOMWriter.java 22 Dec 2003 12:38:54 -0000 1.3 @@ -69,7 +69,6 @@ import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; /** * A sample DOM writer. This sample program illustrates how to @@ -95,6 +94,8 @@ "EBCDIC-CP-IS", "EBCDIC-CP-AR2", "UTF-16" }; + /** Output qualified names */ + private boolean qualifiedNames = true; /** Print writer. */ protected PrintWriter out; @@ -123,6 +124,14 @@ this.canonical = canonical; } + public boolean getQualifiedNames() { + return this.qualifiedNames; + } + + public void setQualifiedNames(boolean qualifiedNames) { + this.qualifiedNames = qualifiedNames; + } + public static String getWriterEncoding( ) { return (PRINTWRITER_ENCODING); }// getWriterEncoding @@ -178,12 +187,21 @@ // print element with attributes case Node.ELEMENT_NODE: { out.print('<'); - out.print(node.getNodeName()); + if (this.qualifiedNames) { + out.print(node.getNodeName()); + } else { + out.print(node.getLocalName()); + } Attr attrs[] = sortAttributes(node.getAttributes()); for ( int i = 0; i < attrs.length; i++ ) { Attr attr = attrs[i]; out.print(' '); - out.print(attr.getNodeName()); + if (this.qualifiedNames) { + out.print(attr.getNodeName()); + } else { + out.print(attr.getLocalName()); + } + out.print("=\""); out.print(normalize(attr.getNodeValue())); out.print('"'); @@ -211,7 +229,11 @@ } } else { out.print('&'); - out.print(node.getNodeName()); + if (this.qualifiedNames) { + out.print(node.getNodeName()); + } else { + out.print(node.getLocalName()); + } out.print(';'); } break; @@ -238,7 +260,12 @@ // print processing instruction case Node.PROCESSING_INSTRUCTION_NODE: { out.print("<?"); - out.print(node.getNodeName()); + if (this.qualifiedNames) { + out.print(node.getNodeName()); + } else { + out.print(node.getLocalName()); + } + String data = node.getNodeValue(); if ( data != null && data.length() > 0 ) { out.print(' '); @@ -251,7 +278,11 @@ if ( type == Node.ELEMENT_NODE ) { out.print("</"); - out.print(node.getNodeName()); + if (this.qualifiedNames) { + out.print(node.getNodeName()); + } else { + out.print(node.getLocalName()); + } out.print('>'); } @@ -268,10 +299,20 @@ array[i] = (Attr)attrs.item(i); } for ( int i = 0; i < len - 1; i++ ) { - String name = array[i].getNodeName(); + String name = null; + if (this.qualifiedNames) { + name = array[i].getNodeName(); + } else { + name = array[i].getLocalName(); + } int index = i; for ( int j = i + 1; j < len; j++ ) { - String curName = array[j].getNodeName(); + String curName = null; + if (this.qualifiedNames) { + curName = array[j].getNodeName(); + } else { + curName = array[j].getLocalName(); + } if ( curName.compareTo(name) < 0 ) { name = curName; index = j;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]