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=\"&#x123;&amp;\" /></head>";
         assertTrue( writer.toString().indexOf( exp ) != -1 );
     }
+
+    /** {...@inheritdoc} */
+    protected String getCommentBlock( String text )
+    {
+        return "<!-- Simple comment with - - - - -->";
+    }
 }


Reply via email to