From fee97f9574d7db4b961d98e4f15eaf275ada69b1 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Sun, 23 Feb 2020 11:37:33 -0500 Subject: [PATCH 1/2] fail fast on empty element names --- .../utils/xml/PrettyPrintXMLWriter.java | 15 ++++--- .../maven/shared/utils/xml/XMLWriter.java | 26 +++++++----- .../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 deb07d21..d948d8ec 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 @@ /** * XMLWriter with nice indentation - */ -/** + * * @author kama - * */ public class PrettyPrintXMLWriter implements XMLWriter @@ -214,7 +212,7 @@ public void setDocType( String docType ) } /** - * @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 void setLineSeparator( String lineSeparator ) } /** - * @param lineIndentParameter The line indent parameter. + * @param lineIndentParameter the line indent parameter */ public void setLineIndenter( String lineIndentParameter ) { @@ -242,6 +240,11 @@ public void setLineIndenter( String lineIndentParameter ) /** {@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 void endElement() throws IOException } /** - * Write the documents if not already done. + * Write the document if not already done. * * @return true 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 0daad8bc..32a56d26 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 f2723327..28ba5838 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 @@ * 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 @@ */ 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 { From 2c65109bc14c54e04b10923a650ece73d44b3547 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Fri, 16 Apr 2021 17:05:58 -0400 Subject: [PATCH 2/2] format --- .../utils/xml/PrettyPrintXMLWriter.java | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 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 69dcb987..f38c1abd 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 @@ -60,7 +60,7 @@ public class PrettyPrintXMLWriter /** * @param writer not null - * @param lineIndent could be null, but the normal way is some spaces. + * @param lineIndent can be null, but the normal way is some spaces */ public PrettyPrintXMLWriter( PrintWriter writer, String lineIndent ) { @@ -69,7 +69,7 @@ public PrettyPrintXMLWriter( PrintWriter writer, String lineIndent ) /** * @param writer not null - * @param lineIndent could be null, but the normal way is some spaces. + * @param lineIndent can be null, but the normal way is some spaces. */ public PrettyPrintXMLWriter( Writer writer, String lineIndent ) { @@ -94,9 +94,9 @@ public PrettyPrintXMLWriter( Writer writer ) /** * @param writer not null - * @param lineIndent could be null, but the normal way is some spaces. - * @param encoding could be null or invalid. - * @param doctype could be null. + * @param lineIndent can be null, but the normal way is some spaces + * @param encoding can be null or invalid + * @param doctype can be null */ public PrettyPrintXMLWriter( PrintWriter writer, String lineIndent, String encoding, String doctype ) { @@ -105,9 +105,9 @@ public PrettyPrintXMLWriter( PrintWriter writer, String lineIndent, String encod /** * @param writer not null - * @param lineIndent could be null, but the normal way is some spaces. - * @param encoding could be null or invalid. - * @param doctype could be null. + * @param lineIndent can be null, but the normal way is some spaces + * @param encoding can be null or invalid + * @param doctype can be null */ public PrettyPrintXMLWriter( Writer writer, String lineIndent, String encoding, String doctype ) { @@ -116,8 +116,8 @@ public PrettyPrintXMLWriter( Writer writer, String lineIndent, String encoding, /** * @param writer not null - * @param encoding could be null or invalid. - * @param doctype could be null. + * @param encoding can be null or invalid + * @param doctype can be null */ public PrettyPrintXMLWriter( PrintWriter writer, String encoding, String doctype ) { @@ -126,8 +126,8 @@ public PrettyPrintXMLWriter( PrintWriter writer, String encoding, String doctype /** * @param writer not null - * @param encoding could be null or invalid. - * @param doctype could be null. + * @param encoding can be null or invalid + * @param doctype can be null */ public PrettyPrintXMLWriter( Writer writer, String encoding, String doctype ) { @@ -136,10 +136,10 @@ public PrettyPrintXMLWriter( Writer writer, String encoding, String doctype ) /** * @param writer not null - * @param lineIndent could be null, but the normal way is some spaces. - * @param lineSeparator could be null, but the normal way is valid line separator - * @param encoding could be null or the encoding to use. - * @param doctype could be null. + * @param lineIndent can be null, but the normal way is some spaces. + * @param lineSeparator can be null, but the normal way is valid line separator + * @param encoding can be null or the encoding to use. + * @param doctype can be null */ public PrettyPrintXMLWriter( PrintWriter writer, String lineIndent, String lineSeparator, String encoding, String doctype ) @@ -149,10 +149,10 @@ public PrettyPrintXMLWriter( PrintWriter writer, String lineIndent, String lineS /** * @param writer not null - * @param lineIndent could be null, but the normal way is some spaces. - * @param lineSeparator could be null, but the normal way is valid line separator - * @param encoding could be null or the encoding to use. - * @param doctype could be null. + * @param lineIndent can be null, but the normal way is some spaces + * @param lineSeparator can be null, but the normal way is valid line separator + * @param encoding can be null or the encoding to use + * @param doctype can be null */ private PrettyPrintXMLWriter( PrintWriter writer, char[] lineIndent, char[] lineSeparator, String encoding, String doctype ) @@ -240,8 +240,9 @@ public void setLineIndenter( String lineIndentParameter ) public void startElement( String elementName ) throws IOException { - if (elementName.isEmpty()) { - throw new IllegalArgumentException("Element name cannot be empty"); + if ( elementName.isEmpty() ) + { + throw new IllegalArgumentException( "Element name cannot be empty" ); } boolean firstLine = ensureDocumentStarted();