This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 63dc7fb7e94cbc0b44d0c5edb0648141b3dd51d3 Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri Feb 11 15:35:59 2022 +0000 Improve human readability of WebDAV XML responses. --- java/org/apache/catalina/util/XMLWriter.java | 32 +++++++++++++++++++++------- webapps/docs/changelog.xml | 5 +++++ 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/java/org/apache/catalina/util/XMLWriter.java b/java/org/apache/catalina/util/XMLWriter.java index 937fd07..019c4b9 100644 --- a/java/org/apache/catalina/util/XMLWriter.java +++ b/java/org/apache/catalina/util/XMLWriter.java @@ -24,10 +24,8 @@ import java.io.Writer; */ public class XMLWriter { - // -------------------------------------------------------------- Constants - /** * Opening tag. */ @@ -48,7 +46,6 @@ public class XMLWriter { // ----------------------------------------------------- Instance Variables - /** * Buffer. */ @@ -61,8 +58,10 @@ public class XMLWriter { protected final Writer writer; - // ----------------------------------------------------------- Constructors + protected boolean lastWriteWasOpen; + + // ----------------------------------------------------------- Constructors /** * New XML writer utility that will store its data in an internal buffer. @@ -87,7 +86,6 @@ public class XMLWriter { // --------------------------------------------------------- Public Methods - /** * Retrieve generated XML. * @@ -138,6 +136,9 @@ public class XMLWriter { if ((namespace != null) && (namespace.length() > 0)) { switch (type) { case OPENING: + if (lastWriteWasOpen) { + buffer.append('\n'); + } if (namespaceInfo != null) { buffer.append("<" + namespace + ":" + name + " xmlns:" + namespace + "=\"" @@ -145,32 +146,47 @@ public class XMLWriter { } else { buffer.append("<" + namespace + ":" + name + ">"); } + lastWriteWasOpen = true; break; case CLOSING: buffer.append("</" + namespace + ":" + name + ">\n"); + lastWriteWasOpen = false; break; case NO_CONTENT: default: + if (lastWriteWasOpen) { + buffer.append('\n'); + } if (namespaceInfo != null) { buffer.append("<" + namespace + ":" + name + " xmlns:" + namespace + "=\"" - + namespaceInfo + "\"/>"); + + namespaceInfo + "\"/>\n"); } else { - buffer.append("<" + namespace + ":" + name + "/>"); + buffer.append("<" + namespace + ":" + name + "/>\n"); } + lastWriteWasOpen = false; break; } } else { switch (type) { case OPENING: + if (lastWriteWasOpen) { + buffer.append('\n'); + } buffer.append("<" + name + ">"); + lastWriteWasOpen = true; break; case CLOSING: buffer.append("</" + name + ">\n"); + lastWriteWasOpen = false; break; case NO_CONTENT: default: - buffer.append("<" + name + "/>"); + if (lastWriteWasOpen) { + buffer.append('\n'); + } + buffer.append("<" + name + "/>\n"); + lastWriteWasOpen = false; break; } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 8920403..7aa98fc 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -145,6 +145,11 @@ copy or delete. Report the paths relative to the server root for any resources with an error. (markt) </fix> + <fix> + Improve the format of WebDAV XML responses to make them easier for + humans to read. The change ensures that there is always a line break + before starting a new element. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org