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]