ozeigermann    2004/04/22 00:02:48

  Modified:    webdavclient/clientlib/src/java/org/apache/webdav/lib/methods
                        ReportMethod.java PropFindMethod.java
                        UpdateMethod.java XMLResponseMethodBase.java
                        VersionControlMethod.java PropPatchMethod.java
                        AclMethod.java LabelMethod.java
                        AclReportMethod.java OptionsMethod.java
               webdavclient/clientlib/src/java/org/apache/util
                        XMLPrinter.java
  Added:       webdavclient/clientlib/src/java/org/apache/util
                        XMLDebugOutputer.java
  Log:
  Applied additional patch by Thomas Bernert to address issue #28379
  
  Revision  Changes    Path
  1.4       +4 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/ReportMethod.java
  
  Index: ReportMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/ReportMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ReportMethod.java 19 Apr 2004 07:59:10 -0000      1.3
  +++ ReportMethod.java 22 Apr 2004 07:02:48 -0000      1.4
  @@ -355,7 +355,7 @@
               return preloadedQuery;
   
           XMLPrinter printer = new XMLPrinter();
  -        printer.setDebug(getDebug() != 0);
  +
   
           printer.writeXMLHeader();
           if (type!= LOCATE_HISTORY)
  
  
  
  1.4       +4 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/PropFindMethod.java
  
  Index: PropFindMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/PropFindMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PropFindMethod.java       19 Apr 2004 07:59:10 -0000      1.3
  +++ PropFindMethod.java       22 Apr 2004 07:02:48 -0000      1.4
  @@ -353,7 +353,7 @@
       protected String generateRequestBody() {
   
           XMLPrinter printer = new XMLPrinter();
  -        printer.setDebug(getDebug() != 0);
  +
           printer.writeXMLHeader();
           printer.writeElement("D", "DAV:", "propfind",
                                XMLPrinter.OPENING);
  
  
  
  1.4       +4 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/UpdateMethod.java
  
  Index: UpdateMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/UpdateMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- UpdateMethod.java 19 Apr 2004 07:59:10 -0000      1.3
  +++ UpdateMethod.java 22 Apr 2004 07:02:48 -0000      1.4
  @@ -95,7 +95,7 @@
       protected String generateRequestBody() {
           if (target != null) {
               XMLPrinter printer = new XMLPrinter();
  -                     printer.setDebug(getDebug() != 0);
  +
   
               printer.writeXMLHeader();
               printer.writeElement("D", "DAV:", "update", XMLPrinter.OPENING);
  
  
  
  1.9       +16 -5     
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/XMLResponseMethodBase.java
  
  Index: XMLResponseMethodBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/XMLResponseMethodBase.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XMLResponseMethodBase.java        19 Apr 2004 09:32:43 -0000      1.8
  +++ XMLResponseMethodBase.java        22 Apr 2004 07:02:48 -0000      1.9
  @@ -44,6 +44,7 @@
   import org.apache.util.DOMUtils;
   import org.apache.util.DOMWriter;
   import org.apache.util.WebdavStatus;
  +import org.apache.util.XMLDebugOutputer;
   import org.apache.webdav.lib.BaseProperty;
   import org.apache.webdav.lib.Property;
   import org.apache.webdav.lib.ResponseEntity;
  @@ -99,10 +100,16 @@
        */
       public XMLResponseMethodBase(String uri) {
           super(uri);
  +        
       }
   
   
       // ----------------------------------------------------- Instance Variables
  +    
  +    /**
  +     * XML Debug Outputer
  +     */
  +    private XMLDebugOutputer xo = new XMLDebugOutputer();
   
   
       /**
  @@ -167,6 +174,8 @@
        */ 
       public void setDebug(int debug) {
           this.debug = debug;
  +        
  +        xo.setDebug((debug > 0));
       }
       
        /**
  @@ -242,7 +251,7 @@
                                        System.out.println("Depth: 
"+((DepthSupport)this).getDepth());
                                }
   
  -                System.out.println(contents);
  +                xo.print(contents);
                   
System.out.println("------------------------------------------------------------------------");
               }
   
  @@ -344,7 +353,7 @@
                        
   
   
  -                
System.out.println(responseDocument.getDocumentElement().toString());
  +                xo.print(responseDocument);
                   
System.out.println("------------------------------------------------------------------------");
               }
   
  @@ -395,6 +404,7 @@
                       || this instanceof ReportMethod)
                       && status == HttpStatus.SC_OK) {
   
  +
                   Document rdoc = getResponseDocument();
   
                   NodeList list = null;
  @@ -402,6 +412,7 @@
                       Element multistatus = 
getResponseDocument().getDocumentElement();
                       list = multistatus.getChildNodes();
                   }
  +
                   if (list != null) {
                       for (int i = 0; i < list.getLength(); i++) {
                           try {
  
  
  
  1.4       +4 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/VersionControlMethod.java
  
  Index: VersionControlMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/VersionControlMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- VersionControlMethod.java 19 Apr 2004 07:59:10 -0000      1.3
  +++ VersionControlMethod.java 22 Apr 2004 07:02:48 -0000      1.4
  @@ -117,7 +117,7 @@
   
           if (sTarget != null){
               XMLPrinter printer = new XMLPrinter();
  -                     printer.setDebug(getDebug() != 0);
  +
   
               printer.writeXMLHeader();
   
  
  
  
  1.4       +4 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/PropPatchMethod.java
  
  Index: PropPatchMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/PropPatchMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PropPatchMethod.java      19 Apr 2004 07:59:10 -0000      1.3
  +++ PropPatchMethod.java      22 Apr 2004 07:02:48 -0000      1.4
  @@ -192,7 +192,7 @@
        */
       protected String generateRequestBody() {
           XMLPrinter printer = new XMLPrinter();
  -        printer.setDebug(getDebug() != 0);
  +
   
           printer.writeXMLHeader();
           printer.writeElement("D", "DAV:", "propertyupdate",
  
  
  
  1.5       +3 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/AclMethod.java
  
  Index: AclMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/AclMethod.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AclMethod.java    19 Apr 2004 07:59:10 -0000      1.4
  +++ AclMethod.java    22 Apr 2004 07:02:48 -0000      1.5
  @@ -118,7 +118,6 @@
       protected String generateRequestBody() {
   
           XMLPrinter printer = new XMLPrinter();
  -        printer.setDebug(getDebug() != 0);
   
           printer.writeXMLHeader();
           printer.writeElement("D", "DAV:", "acl",
  
  
  
  1.4       +4 -5      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/LabelMethod.java
  
  Index: LabelMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/LabelMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LabelMethod.java  19 Apr 2004 07:59:10 -0000      1.3
  +++ LabelMethod.java  22 Apr 2004 07:02:48 -0000      1.4
  @@ -181,8 +181,7 @@
                    "calling this function");
   
           XMLPrinter printer = new XMLPrinter();
  -        printer.setDebug(getDebug() != 0);
  -
  + 
           printer.writeXMLHeader();
           printer.writeElement("D", "DAV:", "label", XMLPrinter.OPENING);
   
  
  
  
  1.4       +3 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/AclReportMethod.java
  
  Index: AclReportMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/AclReportMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AclReportMethod.java      19 Apr 2004 07:59:10 -0000      1.3
  +++ AclReportMethod.java      22 Apr 2004 07:02:48 -0000      1.4
  @@ -144,7 +144,6 @@
        */
       protected String generateRequestBody() {
           XMLPrinter printer = new XMLPrinter();
  -        printer.setDebug(getDebug()!= 0);
   
           printer.writeXMLHeader();
   
  
  
  
  1.4       +3 -4      
jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/OptionsMethod.java
  
  Index: OptionsMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/webdav/lib/methods/OptionsMethod.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- OptionsMethod.java        19 Apr 2004 07:59:10 -0000      1.3
  +++ OptionsMethod.java        22 Apr 2004 07:02:48 -0000      1.4
  @@ -264,7 +264,6 @@
   
           if (type != 0){
               XMLPrinter printer = new XMLPrinter();
  -            printer.setDebug(getDebug() != 0);
   
               printer.writeXMLHeader();
               //System.out.println(printer.toString());
  
  
  
  1.5       +14 -55    
jakarta-slide/webdavclient/clientlib/src/java/org/apache/util/XMLPrinter.java
  
  Index: XMLPrinter.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/webdavclient/clientlib/src/java/org/apache/util/XMLPrinter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLPrinter.java   19 Apr 2004 07:59:11 -0000      1.4
  +++ XMLPrinter.java   22 Apr 2004 07:02:48 -0000      1.5
  @@ -37,9 +37,6 @@
       
       // -------------------------------------------------------------- Constants
       
  -    private int indentLevel = 0; // indentlevel of XML formating
  -    private boolean debugMode = false;
  -     
        
       
       
  @@ -173,34 +170,7 @@
       public void writeElement(String namespace, String name, int type) {
           writeElement(namespace, null, name, type);
       }
  -    
  -     /**
  -      * set debug mode
  -      * @param debug
  -      */
  -     public void setDebug(boolean debug) {
  -             debugMode = debug;
  -     }
  -
  -
  -    
  -    /**
  -     * Make a formatstring for debuging output of XML data
  -     * 
  -     * @param debugMode    
  -     * @param indentLevel  Level of indention
  -     * @return
  -     */    
  -    private String debugFormat(boolean debugMode,  int indentLevel) {
  -        int step = 3;
  -        String out = "\n                                                            
                                                                                ";
  -         
  -        if (debugMode)  
  -            return out.substring(0, step * indentLevel + 1);
  -        else
  -            return "";             
  -    }
  -    
  +   
       /**
        * Write an element.
        * 
  @@ -218,59 +188,48 @@
           if ((namespace != null) && (namespace.length() > 0)) {
               switch (type) {
               case OPENING:
  -                indentLevel++;           
                   if ((namespaceInfo != null) && (namespaceInfo.length() > 0)) {
  -                    buffer.append(debugFormat(debugMode, indentLevel) + "<" + 
namespace + ":" + name + " xmlns:" 
  +                    buffer.append("<" + namespace + ":" + name + " xmlns:" 
                                     + namespace + "=\"" 
                                     + namespaceInfo + "\">");
                   } else {
  -                    buffer.append(debugFormat(debugMode, indentLevel)+"<" + 
namespace + ":" + name + ">");
  +                    buffer.append("<" + namespace + ":" + name + ">");
                   }
                   break;
               case CLOSING:
  -                indentLevel--;
  -
  -                buffer.append(debugFormat(debugMode, indentLevel)+"</" + namespace 
+ ":" + name + ">");
  +               buffer.append("</" + namespace + ":" + name + ">");
                   break;
               case NO_CONTENT:
               default:
                   if ((namespaceInfo != null)  && (namespaceInfo.length() > 0)) {
  -                    buffer.append(debugFormat(debugMode, indentLevel+1)+"<" + 
namespace + ":" + name + " xmlns:" 
  +                    buffer.append("<" + namespace + ":" + name + " xmlns:" 
                                     + namespace + "=\"" 
                                     + namespaceInfo + "\"/>");
                   } else {
  -                    buffer.append(debugFormat(debugMode, indentLevel+1)+ "<" + 
namespace + ":" + name + "/>");
  +                    buffer.append("<" + namespace + ":" + name + "/>");
                   }
                   break;
               }
           } else {
               switch (type) {
               case OPENING:
  -            
  -
                   if ((namespaceInfo != null) && (namespaceInfo.length()>0)) {
  -                    buffer.append(debugFormat(debugMode, indentLevel+1)+"<op3" + 
name + " xmlns=\"" + namespaceInfo 
  +                    buffer.append("<op3" + name + " xmlns=\"" + namespaceInfo 
                                     + "\">");
                   } else {
  -                    indentLevel++;
  -
  -                    buffer.append(debugFormat(debugMode, indentLevel)+"<op4" + name 
+ ">");
  +                    buffer.append("<op4" + name + ">");
                   }
                   break;
               case CLOSING:
  -                indentLevel--;
  -                
  -                buffer.append(debugFormat(debugMode, indentLevel)+"</" + name + 
">");
  +                buffer.append("</" + name + ">");
                   break;
               case NO_CONTENT:
               default:
                   if ((namespaceInfo != null) && (namespaceInfo.length()>0)) {
  -                    buffer.append(debugFormat(debugMode, indentLevel+1)+"<nc3" + 
name + " xmlns=\"" + namespaceInfo 
  +                    buffer.append("<nc3" + name + " xmlns=\"" + namespaceInfo 
                                     + "\"/>");
                   } else {
  -                    indentLevel++;
  -
  -                    buffer.append(debugFormat(debugMode, indentLevel)+"<nc4" + name 
+ ">");
  +                    buffer.append("<nc4" + name + ">");
                   }
                   break;
               }
  
  
  
  1.1                  
jakarta-slide/webdavclient/clientlib/src/java/org/apache/util/XMLDebugOutputer.java
  
  Index: XMLDebugOutputer.java
  ===================================================================
  /*
   * $Header: 
   * $Revision: 
   * $Date: 
   *
   * ====================================================================
   *
   * Copyright 1999-2002 The Apache Software Foundation 
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   */
  
  package org.apache.util;
  
  import org.w3c.dom.Document;
  import org.w3c.dom.Node;
  import org.w3c.dom.NodeList;
  import org.w3c.dom.NamedNodeMap;
  import org.xml.sax.SAXException;
  
  import javax.xml.parsers.DocumentBuilderFactory;
  import javax.xml.parsers.DocumentBuilder;
  import javax.xml.parsers.ParserConfigurationException;
  import java.io.*;
  import org.xml.sax.InputSource;
  
  
  
  import java.util.StringTokenizer;
  
  /**
   * XMLDebugOutputer helper class.
   */
  public class XMLDebugOutputer {
      
      // -------------------------------------------------------------- Constants
      
      // blanks for indent (80 char)                  
      private final static String INDENT = "                                           
                                     ";
      private int tabWidth = 3;    
  
  
      // ----------------------------------------------------- Instance Variables
      
      // indicator of debug mode
      private boolean debug = false;
      
      
      // local parser
      private DocumentBuilderFactory dbf=null;
      private DocumentBuilder         db=null;
              
  
      // ----------------------------------------------------------- Constructors
      
      /**
       * Constructor
       */
      public XMLDebugOutputer() {
  
          try {
               dbf=DocumentBuilderFactory.newInstance();
               db =dbf.newDocumentBuilder();
              
          } catch (ParserConfigurationException e) {
          }
  
      //        Document doc=db.parse(file);
  
      };
  
      // --------------------------------------------------------- Public Methods
  
      /**
       * Print the given document to debug output. If debug is set to true;
       * @param doc
       */
      public void print(Document doc) {
          
          Node root = doc.getDocumentElement();
  
          dispatchNode(root, 0);
      }  
      
      /**
       * Print the given XML string to debug output. If debug is set to true;
       * @param xmlString
       */
      public void print(String xmlString) {
   
          try {
              Document doc = db.parse(new InputSource(new StringReader(xmlString)));
              print(doc);
             
          } catch (SAXException e) {
          } catch (IOException e) {
          }
          
          
      }  
      
      /**
       * Set debug information.
       * @param debug
       */
      public void setDebug(boolean debug) {
          this.debug = debug;
      } 
      
      
      // --------------------------------------------------------- Private Methods
  
   
      
      private void dispatchNode(Node node, int level) {
          switch (node.getNodeType()) {
              case Node.CDATA_SECTION_NODE :
                  printCDATANode(node, level);
                  break;
      
              case Node.COMMENT_NODE :
                  printCommentNode(node, level);
                  break;
      
              case Node.TEXT_NODE :
                  printTextNode(node, level);
                  break;
      
              case Node.ELEMENT_NODE :
                  printElementNode(node, level);
                  break;
      
              default :
                  break;
          }
      }
      
      private void printCDATANode(Node node, int level) {
          System.out.print(INDENT.substring(0, level * tabWidth));
          System.out.println("<![CDATA[");
      
          indentBlock(node.getNodeValue(), level + 1);
      
          System.out.print(INDENT.substring(0, level * tabWidth));
          System.out.println("]]>");
      }
      
      private void printTextNode(Node node, int level) {
          indentBlock(node.getNodeValue(), level + 1);
      }
      
      private void printCommentNode(Node node, int level) {
          System.out.print(INDENT.substring(0, level * tabWidth));
          System.out.println("<!-- ");
          indentBlock(node.getNodeValue(), level + 1);
          System.out.print(INDENT.substring(0, level * tabWidth));
          System.out.println(" -->");
      }
      
      private void printElementNode(Node node, int level) {
          String name = node.getNodeName();
          System.out.print(INDENT.substring(0, level * tabWidth));
          System.out.print("<");
          System.out.print(name);
      
          NamedNodeMap attributes = node.getAttributes();
          for (int i = 0; attributes != null && i < attributes.getLength(); i++) {
              if (attributes.getLength() > 1) {
                  System.out.println();
                  System.out.print(INDENT.substring(0, (2 + level) * tabWidth));
              } else {
                  System.out.print(" ");
              }
      
              Node attribute = attributes.item(i);
              System.out.print(attribute.getNodeName());
              System.out.print("=\"");
              System.out.print(attribute.getNodeValue());
              System.out.print("\"");
          }
          System.out.println(">");
      
          // in case of more than one attribute add a blank line as seperator
          if (attributes.getLength() > 1) {
              System.out.println();
          }
      
          if (node.hasChildNodes()) {
              NodeList children = node.getChildNodes();
              for (int i = 0; i < children.getLength(); i++) {
                  // recursive use of dispatchNode()
                  dispatchNode(children.item(i), level + 1);
              }
          }
      
          System.out.print(INDENT.substring(0, level * tabWidth));
          System.out.print("</");
          System.out.print(name);
          System.out.println(">");
      }
      
      private void simpleIndentBlock(String block, int level) {
          StringTokenizer stok = new StringTokenizer(block, "\n\r");
          while (stok.hasMoreTokens()) {
              String token = stok.nextToken().trim();
      
   
              if (token.length() > 0) {
                  System.out.print(INDENT.substring(0, level * tabWidth));
                  System.out.println(token);
              }
          }
      }
      
      private void indentBlock(String block, int level) {
          StringTokenizer linetok = new StringTokenizer(block.replace('\n', ' '));
          int pos = level * tabWidth;
      
          if (linetok.countTokens() > 0) {
              System.out.print(INDENT.substring(0, level * tabWidth));
          }
      
          while (linetok.hasMoreTokens()) {
              String token = linetok.nextToken();
              pos += (token.length() + 1);
              if (pos < 80 && token.length() < (80 - (level * tabWidth))) {
                  if (linetok.countTokens() > 0) {
                      System.out.print(token);
                      System.out.print(" ");
                  } else {
                      System.out.println(token);
                  }
              } else {
                  System.out.println(token);
                  if (linetok.countTokens() > 0) {
                      System.out.print(INDENT.substring(0, level * tabWidth));
                  }
                  pos = level * tabWidth;
              }
          }
      }
  
  
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to