You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2003/12/22 13:38:54 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util DOMWriter.java

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: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org