Author: vsiveton Date: Thu May 28 11:24:35 2009 New Revision: 779565 URL: http://svn.apache.org/viewvc?rev=779565&view=rev Log: DOXIA-325: Not valid xhtml document if comment with minus character
o more generic solution for all xml sink o add test cases Modified: maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/AbstractSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-latex/src/test/java/org/apache/maven/doxia/module/latex/LatexSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/TWikiSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java Modified: maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-book/src/test/java/org/apache/maven/doxia/book/services/renderer/docbook/DocBookBookSinkTest.java Thu May 28 11:24:35 2009 @@ -474,4 +474,10 @@ // TODO return ""; } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return "<!-- Simple comment with - - - - -->"; + } } Modified: maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/sink/XhtmlBaseSink.java Thu May 28 11:24:35 2009 @@ -1745,13 +1745,20 @@ /** {...@inheritdoc} */ public void comment( String comment ) { - StringBuffer buf = new StringBuffer( comment.length() + 9 ); + if ( StringUtils.isNotEmpty( comment ) ) + { + // http://www.w3.org/TR/2000/REC-xml-20001006#sec-comments + while ( comment.indexOf( "--" ) != -1 ) + { + comment = StringUtils.replace( comment, "--", "- -" ); + } + } - buf.append( "" + LESS_THAN + BANG + MINUS + MINUS + SPACE ); + StringBuffer buf = new StringBuffer( comment.length() + 9 ); + buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( SPACE ); buf.append( comment ); - - buf.append( "" + SPACE + MINUS + MINUS + GREATER_THAN ); + buf.append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN ); write( buf.toString() ); } Modified: maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/AbstractSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/AbstractSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/AbstractSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/AbstractSinkTest.java Thu May 28 11:24:35 2009 @@ -700,6 +700,24 @@ assertEquals( "Wrong rawText!", expected, actual ); } + /** + * Checks that the sequence <code>[comment(comment)]</code>, + * invoked on the current sink, produces the same result as + * {...@link #getCommentBlock getCommentBlock}( comment ). + * @since 1.1.1 + */ + public void testComment() + { + String comment = "Simple comment with ----"; + sink.comment( comment ); + sink.flush(); + sink.close(); + + String actual = testWriter.toString(); + String expected = getCommentBlock( comment ); + + assertEquals( "Wrong comment!", expected, actual ); + } // ---------------------------------------------------------------------- // Utility methods @@ -982,4 +1000,13 @@ * @see #testRawText() */ protected abstract String getRawTextBlock( String text ); + + /** + * Returns a comment block generated by this sink. + * @param text The text to use. + * @return The result of invoking a comment block on the current sink. + * @see #testComment() + * @since 1.1.1 + */ + protected abstract String getCommentBlock( String text ); } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java Thu May 28 11:24:35 2009 @@ -265,4 +265,10 @@ { return AptMarkup.BACKSLASH + "" + c; } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return EOL + "~~ Simple comment with ----"; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-confluence/src/test/java/org/apache/maven/doxia/module/confluence/ConfluenceSinkTest.java Thu May 28 11:24:35 2009 @@ -279,4 +279,10 @@ { // nop } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return ""; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/main/java/org/apache/maven/doxia/module/docbook/DocBookSink.java Thu May 28 11:24:35 2009 @@ -35,6 +35,7 @@ import org.apache.maven.doxia.util.HtmlTools; import org.codehaus.plexus.util.FileUtils; +import org.codehaus.plexus.util.StringUtils; /** * <a href="http://www.oasis-open.org/docbook">Docbook</a> Sink implementation. @@ -1534,12 +1535,19 @@ /** {...@inheritdoc} */ public void comment( String comment ) { + if ( StringUtils.isNotEmpty( comment ) ) + { + // http://www.w3.org/TR/2000/REC-xml-20001006#sec-comments + while ( comment.indexOf( "--" ) != -1 ) + { + comment = StringUtils.replace( comment, "--", "- -" ); + } + } + StringBuffer buffer = new StringBuffer( comment.length() + 9 ); buffer.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( SPACE ); - buffer.append( comment ); - buffer.append( SPACE ).append( MINUS ).append( MINUS ).append( GREATER_THAN ); markup( buffer.toString() ); Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-docbook-simple/src/test/java/org/apache/maven/doxia/module/docbook/DocBookSinkTest.java Thu May 28 11:24:35 2009 @@ -244,5 +244,9 @@ return ""; } - + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return "<!-- Simple comment with - - - - -->"; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoSink.java Thu May 28 11:24:35 2009 @@ -1321,6 +1321,15 @@ /** {...@inheritdoc} */ public void comment( String comment ) { + if ( StringUtils.isNotEmpty( comment ) ) + { + // http://www.w3.org/TR/2000/REC-xml-20001006#sec-comments + while ( comment.indexOf( "--" ) != -1 ) + { + comment = StringUtils.replace( comment, "--", "- -" ); + } + } + StringBuffer buf = new StringBuffer( comment.length() + 9 ); buf.append( LESS_THAN ).append( BANG ).append( MINUS ).append( MINUS ).append( SPACE ); Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoSinkTest.java Thu May 28 11:24:35 2009 @@ -414,4 +414,9 @@ return config; } + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return "<!-- Simple comment with - - - - -->"; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-latex/src/test/java/org/apache/maven/doxia/module/latex/LatexSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-latex/src/test/java/org/apache/maven/doxia/module/latex/LatexSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-latex/src/test/java/org/apache/maven/doxia/module/latex/LatexSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-latex/src/test/java/org/apache/maven/doxia/module/latex/LatexSinkTest.java Thu May 28 11:24:35 2009 @@ -232,4 +232,10 @@ // TODO: not implemented return ""; } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return ""; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/TWikiSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/TWikiSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/TWikiSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-twiki/src/test/java/org/apache/maven/doxia/module/twiki/TWikiSinkTest.java Thu May 28 11:24:35 2009 @@ -273,4 +273,10 @@ { // nop } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return ""; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java Thu May 28 11:24:35 2009 @@ -284,4 +284,10 @@ assertEquals( "<a href=\"name\"></a><a href=\"name\" target=\"nirvana\"></a>", writer.toString() ); } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return "<!-- Simple comment with - - - - -->"; + } } Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSink.java Thu May 28 11:24:35 2009 @@ -240,16 +240,6 @@ resetState(); } - /** {...@inheritdoc} */ - public void comment( String comment ) - { - if ( StringUtils.isNotEmpty( comment ) ) - { - comment = StringUtils.replace( comment, "-", " -" ); - } - super.comment( comment ); - } - // ---------------------------------------------------------------------- // Public protected methods // ---------------------------------------------------------------------- Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java?rev=779565&r1=779564&r2=779565&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java Thu May 28 11:24:35 2009 @@ -333,4 +333,10 @@ "<head><title>Title</title><!-- A comment --><meta name=\"author\" content=\"ģ&\" /></head>"; assertTrue( writer.toString().indexOf( exp ) != -1 ); } + + /** {...@inheritdoc} */ + protected String getCommentBlock( String text ) + { + return "<!-- Simple comment with - - - - -->"; + } }