You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2020/02/23 16:37:52 UTC

[maven-shared-utils] 01/01: fail fast on empty element names

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

elharo pushed a commit to branch xml3
in repository https://gitbox.apache.org/repos/asf/maven-shared-utils.git

commit fee97f9574d7db4b961d98e4f15eaf275ada69b1
Author: Elliotte Rusty Harold <el...@ibiblio.org>
AuthorDate: Sun Feb 23 11:37:33 2020 -0500

    fail fast on empty element names
---
 .../shared/utils/xml/PrettyPrintXMLWriter.java     | 15 ++++----
 .../apache/maven/shared/utils/xml/XMLWriter.java   | 26 ++++++++------
 .../shared/utils/xml/PrettyPrintXmlWriterTest.java | 41 ++++++++++------------
 3 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/src/main/java/org/apache/maven/shared/utils/xml/PrettyPrintXMLWriter.java b/src/main/java/org/apache/maven/shared/utils/xml/PrettyPrintXMLWriter.java
index deb07d2..d948d8e 100644
--- a/src/main/java/org/apache/maven/shared/utils/xml/PrettyPrintXMLWriter.java
+++ b/src/main/java/org/apache/maven/shared/utils/xml/PrettyPrintXMLWriter.java
@@ -27,10 +27,8 @@ import org.apache.maven.shared.utils.Os;
 
 /**
  * XMLWriter with nice indentation
- */
-/**
+ * 
  * @author kama
- *
  */
 public class PrettyPrintXMLWriter
     implements XMLWriter
@@ -214,7 +212,7 @@ public class PrettyPrintXMLWriter
     }
 
     /**
-     * @param lineSeparator The line separator to be used.
+     * @param lineSeparator the line separator to be output
      */
     public void setLineSeparator( String lineSeparator )
     {
@@ -227,7 +225,7 @@ public class PrettyPrintXMLWriter
     }
 
     /**
-     * @param lineIndentParameter The line indent parameter.
+     * @param lineIndentParameter the line indent parameter
      */
     public void setLineIndenter( String lineIndentParameter )
     {
@@ -242,6 +240,11 @@ public class PrettyPrintXMLWriter
     /** {@inheritDoc} */
     public void startElement( String elementName ) throws IOException
     {
+        
+        if (elementName.isEmpty()) {
+            throw new IllegalArgumentException("Element name cannot be empty");
+        }
+        
         boolean firstLine = ensureDocumentStarted();
 
         completePreviouslyOpenedElement();
@@ -328,7 +331,7 @@ public class PrettyPrintXMLWriter
     }
 
     /**
-     * Write the documents if not already done.
+     * Write the document if not already done.
      *
      * @return <code>true</code> if the document headers have freshly been written.
      */
diff --git a/src/main/java/org/apache/maven/shared/utils/xml/XMLWriter.java b/src/main/java/org/apache/maven/shared/utils/xml/XMLWriter.java
index 0daad8b..32a56d2 100644
--- a/src/main/java/org/apache/maven/shared/utils/xml/XMLWriter.java
+++ b/src/main/java/org/apache/maven/shared/utils/xml/XMLWriter.java
@@ -30,7 +30,7 @@ public interface XMLWriter
 
     /**
      * Sets the encoding of the document.
-     * If not set, UTF-8 is being used
+     * If not set, UTF-8 is used.
      *
      * @param encoding the encoding
      * @throws IllegalStateException if the generation of the document has already started
@@ -38,7 +38,7 @@ public interface XMLWriter
     void setEncoding( String encoding );
 
     /**
-     * Sets the docType of the document.
+     * Sets the DOCTYPE of the document.
      *
      * @param docType the docType
      * @throws IllegalStateException if the generation of the document has already started
@@ -48,15 +48,17 @@ public interface XMLWriter
 
     /**
      * Start an XML Element tag.
-     * @param name The name of the tag.
-     * @throws IOException if starting the element fails.
+     * 
+     * @param name the name of the tag
+     * @throws IOException if starting the element fails
      */
     void startElement( String name ) throws IOException;
 
 
     /**
      * Add a XML attribute to the current XML Element.
-     * This method must get called immediately after {@link #startElement(String)}
+     * This method must get called immediately after {@link #startElement(String)}.
+     * 
      * @param key The key of the attribute.
      * @param value The value of the attribute.
      * @throws IllegalStateException if no element tag is currently in process
@@ -65,8 +67,9 @@ public interface XMLWriter
     void addAttribute( String key, String value ) throws IOException;
 
     /**
-     * Add a value text to the current element tag
-     * This will perform XML escaping to guarantee valid content
+     * Add text to the current element tag.
+     * This performs XML escaping to guarantee well-formed content.
+     * 
      * @param text The text which should be written.
      * @throws IllegalStateException if no element tag got started yet
      * @throws IOException if writing the text fails.
@@ -74,10 +77,11 @@ public interface XMLWriter
     void writeText( String text ) throws IOException;
 
     /**
-     * Add a preformatted markup to the current element tag
-     * @param text The text which should be written.
-     * @throws IllegalStateException if no element tag got started yet
-     * @throws IOException if writing the markup fails.
+     * Add preformatted markup to the current element tag.
+     * 
+     * @param text the text which should be written
+     * @throws IllegalStateException if no element tag is started yet
+     * @throws IOException if writing the markup fails
      */
     void writeMarkup( String text ) throws IOException;
 
diff --git a/src/test/java/org/apache/maven/shared/utils/xml/PrettyPrintXmlWriterTest.java b/src/test/java/org/apache/maven/shared/utils/xml/PrettyPrintXmlWriterTest.java
index f272332..28ba583 100644
--- a/src/test/java/org/apache/maven/shared/utils/xml/PrettyPrintXmlWriterTest.java
+++ b/src/test/java/org/apache/maven/shared/utils/xml/PrettyPrintXmlWriterTest.java
@@ -1,8 +1,3 @@
-package org.apache.maven.shared.utils.xml;
-
-import java.io.IOException;
-import javax.swing.text.html.HTML;
-import java.io.StringWriter;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,13 +18,15 @@ import java.io.StringWriter;
  * under the License.
  */
 
+package org.apache.maven.shared.utils.xml;
 
+import java.io.IOException;
+import javax.swing.text.html.HTML;
+import java.io.StringWriter;
 
 import org.apache.maven.shared.utils.Os;
 import org.apache.maven.shared.utils.StringUtils;
-import org.junit.After;
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -40,26 +37,24 @@ import org.junit.Test;
  */
 public class PrettyPrintXmlWriterTest
 {
-    StringWriter w;
+    private StringWriter w = new StringWriter();;
 
-    PrettyPrintXMLWriter writer;
+    private PrettyPrintXMLWriter writer = new PrettyPrintXMLWriter( w );
 
-    @Before
-    public void before()
-            throws Exception
-    {
-        w = new StringWriter();
-        writer = new PrettyPrintXMLWriter( w );
-    }
-
-    @After
-    public void after()
-            throws Exception
+    
+    @Test
+    public void testNoStartTag() throws IOException
     {
-        writer = null;
-        w = null;
+        
+        try {
+            writer.startElement( "" );
+            Assert.fail( "allowed empty name" );
+        } catch ( IllegalArgumentException ex ) {
+            Assert.assertEquals( "Element name cannot be empty", ex.getMessage() );
+        }
+        
     }
-
+    
     @Test
     public void testDefaultPrettyPrintXMLWriter() throws IOException
     {