You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by vs...@apache.org on 2009/08/23 14:37:11 UTC

svn commit: r806960 - in /maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src: main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java test/java/org/apache/maven/doxia/module/fo/FoAggregateSinkTest.java

Author: vsiveton
Date: Sun Aug 23 12:37:11 2009
New Revision: 806960

URL: http://svn.apache.org/viewvc?rev=806960&view=rev
Log:
DOXIA-343: FO: links broken if link target contains dot

o fixed links with dot and several soldius
o updated test cases

Modified:
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java
    maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoAggregateSinkTest.java

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.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/FoAggregateSink.java?rev=806960&r1=806959&r2=806960&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java Sun Aug 23 12:37:11 2009
@@ -266,14 +266,19 @@
         String idName = name.replace( '\\', '/' );
 
         // prepend "./" and strip extension
+        while ( idName.indexOf( "//" ) != -1 )
+        {
+            idName = StringUtils.replace( idName, "//", "/" );
+        }
+
         if ( !idName.startsWith( "./" ) )
         {
             idName = "./" + idName;
         }
 
-        if ( idName.indexOf( ".", 2 ) != -1 )
+        if ( idName.substring( 2 ).lastIndexOf( "." ) != -1 )
         {
-            idName = idName.substring( 0, idName.indexOf( ".", 2 ) );
+            idName = idName.substring( 0, idName.lastIndexOf( "." ) );
         }
 
         return idName;
@@ -360,11 +365,17 @@
             // external links
             writeStartTag( BASIC_LINK_TAG, "external-destination", HtmlTools.escapeHTML( name ) );
             writeStartTag( INLINE_TAG, "href.external" );
+            return;
         }
-        else if ( DoxiaUtils.isInternalLink( name ) )
+
+        while ( name.indexOf( "//" ) != -1 )
         {
-            // internal link (ie anchor is in the same source document)
+            name = StringUtils.replace( name, "//", "/" );
+        }
 
+        if ( DoxiaUtils.isInternalLink( name ) )
+        {
+            // internal link (ie anchor is in the same source document)
             String anchor = name.substring( 1 );
 
             if ( !DoxiaUtils.isValidId( anchor ) )

Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoAggregateSinkTest.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/FoAggregateSinkTest.java?rev=806960&r1=806959&r2=806960&view=diff
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoAggregateSinkTest.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/test/java/org/apache/maven/doxia/module/fo/FoAggregateSinkTest.java Sun Aug 23 12:37:11 2009
@@ -140,10 +140,27 @@
         {
             sink = new FoAggregateSink( writer );
             sink.link( "http://www.example.com/" );
+            sink.text( "http://www.example.com/" );
+            sink.link_();
             sink.setDocumentName( "./folder\\docName.xml" );
             sink.link( "#anchor" );
+            sink.text( "#anchor" );
+            sink.link_();
             sink.link( "./././index.html" );
+            sink.text( "./././index.html" );
+            sink.link_();
             sink.link( "./../download.html" );
+            sink.text( "./../download.html" );
+            sink.link_();
+            sink.link( ".///test.html" );
+            sink.text( "./test.html" );
+            sink.link_();
+            sink.link( "./whatsnew-1.1.html" );
+            sink.text( "./whatsnew-1.1.html" );
+            sink.link_();
+            sink.setDocumentName( ".///whatsnew-1.1.html" );
+            sink.body();
+            sink.body_();
         }
         finally
         {
@@ -156,5 +173,8 @@
         assertTrue( result.indexOf( "<fo:basic-link internal-destination=\"./folder/docName#anchor\">" ) != -1 );
         assertTrue( result.indexOf( "<fo:basic-link internal-destination=\"./folder/index\">" ) != -1 );
         assertTrue( result.indexOf( "<fo:basic-link internal-destination=\"./download\">" ) != -1 );
+        assertTrue( result.indexOf( "<fo:basic-link internal-destination=\"./folder/test\">" ) != -1 );
+        assertTrue( result.indexOf( "<fo:basic-link internal-destination=\"./folder/whatsnew-1.1\">" ) != -1 );
+        assertTrue( result.indexOf( "<fo:block id=\"./whatsnew-1.1\">" ) != -1 );
     }
 }