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 2022/02/11 15:58:55 UTC

[tomcat] 02/02: Improve human readability of WebDAV XML responses.

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 5569e41c1412d0495f0685d2989055582347b414
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 62d492d..5dfed80 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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org