You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2021/05/30 08:45:43 UTC

[maven-doxia] 01/01: [DOXIA-588] Update Xhtml5BaseSinkTest align missing

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

slachiewicz pushed a commit to branch DOXIA-588v2
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 072181ba70acb35450f8e95c6e7251da2ed0621a
Author: dcruette <dc...@qualitesys.com>
AuthorDate: Mon Apr 26 19:09:38 2021 +0200

    [DOXIA-588] Update Xhtml5BaseSinkTest align missing
    
    See https://issues.apache.org/jira/browse/DOXIA-588
---
 .../maven/doxia/sink/impl/Xhtml5BaseSink.java      | 24 +++++++++++
 .../maven/doxia/sink/impl/XhtmlBaseSink.java       | 24 +++++++++++
 .../maven/doxia/sink/impl/Xhtml5BaseSinkTest.java  |  6 +--
 .../maven/doxia/sink/impl/XhtmlBaseSinkTest.java   | 15 ++++---
 .../apache/maven/doxia/module/apt/AptSinkTest.java | 47 ++++++++++++++++++++++
 .../maven/doxia/module/xdoc/XdocSinkTest.java      |  2 +-
 6 files changed, 106 insertions(+), 12 deletions(-)

diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
index 2f0d9bc..45d726f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
@@ -39,6 +39,7 @@ import javax.swing.text.html.HTML.Tag;
 
 import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.markup.Markup;
+import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.util.DoxiaUtils;
 import org.apache.maven.doxia.util.HtmlTools;
@@ -1659,6 +1660,29 @@ public class Xhtml5BaseSink
     {
         Tag t = ( headerRow ? HtmlMarkup.TH : HtmlMarkup.TD );
 
+        if ( !headerRow && cellCountStack != null && !cellCountStack.isEmpty()
+            && cellJustifStack != null && !cellJustifStack.isEmpty() && getCellJustif() != null )
+        {
+            int cellCount = getCellCount();
+            if ( cellCount < getCellJustif().length )
+            {
+                Map<Integer, MutableAttributeSet> hash = new HashMap<>();
+                hash.put( Sink.JUSTIFY_CENTER, SinkEventAttributeSet.CENTER );
+                hash.put( Sink.JUSTIFY_LEFT, SinkEventAttributeSet.LEFT );
+                hash.put( Sink.JUSTIFY_RIGHT, SinkEventAttributeSet.RIGHT );
+                MutableAttributeSet atts = hash.get( getCellJustif()[cellCount] );
+
+                if ( attributes == null )
+                {
+                    attributes = new SinkEventAttributeSet();
+                }
+                if ( atts != null )
+                {
+                    attributes.addAttributes( atts );
+                }
+            }
+        }
+
         if ( attributes == null )
         {
             writeStartTag( t, null );
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
index 6cb76e1..10d08ec 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
@@ -38,6 +38,7 @@ import javax.swing.text.html.HTML.Tag;
 
 import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.markup.Markup;
+import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.util.DoxiaUtils;
 import org.apache.maven.doxia.util.HtmlTools;
@@ -1536,6 +1537,29 @@ public class XhtmlBaseSink
     {
         Tag t = ( headerRow ? HtmlMarkup.TH : HtmlMarkup.TD );
 
+        if ( !headerRow && cellCountStack != null && !cellCountStack.isEmpty()
+            && cellJustifStack != null && !cellJustifStack.isEmpty() && getCellJustif() != null )
+        {
+            int cellCount = getCellCount();
+            if ( cellCount < getCellJustif().length )
+            {
+                Map<Integer, MutableAttributeSet> hash = new HashMap<>();
+                hash.put( Sink.JUSTIFY_CENTER, SinkEventAttributeSet.CENTER );
+                hash.put( Sink.JUSTIFY_LEFT, SinkEventAttributeSet.LEFT );
+                hash.put( Sink.JUSTIFY_RIGHT, SinkEventAttributeSet.RIGHT );
+                MutableAttributeSet atts = hash.get( getCellJustif()[cellCount] );
+
+                if ( attributes == null )
+                {
+                    attributes = new SinkEventAttributeSet();
+                }
+                if ( atts != null )
+                {
+                    attributes.addAttributes( atts );
+                }
+            }
+        }
+
         if ( attributes == null )
         {
             writeStartTag( t, null );
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
index 029da65..6e1652e 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
@@ -176,9 +176,9 @@ public class Xhtml5BaseSinkTest
         assertTrue( actual.contains(
                 "<table border=\"0\" class=\"bodyTable\" align=\"right\">" + "<caption>caption3</caption>" ) );
 
-        assertTrue( actual.contains( "<td>cell11</td>" ) );
-        assertTrue( actual.contains( "<td>nestedTable1Cell11</td>" ) );
-        assertTrue( actual.contains( "<td>nestedTable2Cell11</td>" ) );
+        assertTrue( actual.contains( "<td align=\"center\">cell11</td>" ) );
+        assertTrue( actual.contains( "<td align=\"left\">nestedTable1Cell11</td>" ) );
+        assertTrue( actual.contains( "<td align=\"right\">nestedTable2Cell11</td>" ) );
         assertTrue( actual.contains( "<td>nestedTable1Cell22</td>" ) );
         assertTrue( actual.contains( "<td>cell22</td>" ) );
     }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
index e9f7074..9e498e2 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
@@ -93,7 +93,7 @@ public class XhtmlBaseSinkTest
             sink = new XhtmlBaseSink( writer );
 
             sink.table();
-            sink.tableRows( new int[] { Sink.JUSTIFY_CENTER }, false );
+            sink.tableRows( new int[] { Sink.JUSTIFY_CENTER, Sink.JUSTIFY_LEFT }, false );
             sink.tableRow();
             sink.tableCell();
             sink.text( "cell11" );
@@ -106,7 +106,7 @@ public class XhtmlBaseSinkTest
             sink.tableRow();
             sink.tableCell();
             sink.table( SinkEventAttributeSet.LEFT );
-            sink.tableRows( new int[] { Sink.JUSTIFY_LEFT }, false );
+            sink.tableRows( new int[] { Sink.JUSTIFY_LEFT, Sink.JUSTIFY_RIGHT }, false );
             sink.tableRow();
             sink.tableCell();
             sink.text( "nestedTable1Cell11" );
@@ -119,7 +119,7 @@ public class XhtmlBaseSinkTest
             sink.tableCell();
 
             sink.table( SinkEventAttributeSet.RIGHT );
-            sink.tableRows( new int[] { Sink.JUSTIFY_RIGHT }, false );
+            sink.tableRows( new int[] { Sink.JUSTIFY_RIGHT, Sink.JUSTIFY_CENTER }, false );
             sink.tableRow();
             sink.tableCell();
             sink.text( "nestedTable2Cell11" );
@@ -177,11 +177,10 @@ public class XhtmlBaseSinkTest
         assertTrue( actual.contains(
                 "<table border=\"0\" class=\"bodyTable\" align=\"right\">" + "<caption>caption3</caption>" ) );
 
-        assertTrue( actual.contains( "<td>cell11</td>" ) );
-        assertTrue( actual.contains( "<td>nestedTable1Cell11</td>" ) );
-        assertTrue( actual.contains( "<td>nestedTable2Cell11</td>" ) );
-        assertTrue( actual.contains( "<td>nestedTable1Cell22</td>" ) );
-        assertTrue( actual.contains( "<td>cell22</td>" ) );
+        assertTrue( actual.contains( "<td align=\"center\">cell11</td>" ) );
+        assertTrue( actual.contains( "<td align=\"right\">nestedTable2Cell11</td>" ) );
+        assertTrue( actual.contains( "<td align=\"right\">nestedTable1Cell22</td>" ) );
+        assertTrue( actual.contains( "<td align=\"left\">cell22</td>" ) );
     }
 
     /**
diff --git a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
index e41855c..de18ee8 100644
--- a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
+++ b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
@@ -422,4 +422,51 @@ public class AptSinkTest extends AbstractSinkTest
 
         assertEquals( "Wrong link or paragraph markup in table cell", expected, getSinkContent() );
     }
+
+    public void testTableCellsWithJustification()
+    {
+        final String linkTarget = "target";
+        final String linkText = "link";
+        final String paragraphText = "paragraph text";
+        final Sink sink = getSink();
+        sink.table();
+        sink.tableRows( new int[] { Sink.JUSTIFY_RIGHT, Sink.JUSTIFY_LEFT }, false );
+        sink.tableRow();
+        sink.tableCell();
+        sink.link( linkTarget );
+        sink.text( linkText );
+        sink.link_();
+        sink.tableCell_();
+        sink.tableCell();
+        sink.paragraph();
+        sink.text( paragraphText );
+        sink.paragraph_();
+        sink.tableCell_();
+        sink.tableRow_();
+        sink.tableRows_();
+        sink.table_();
+        sink.flush();
+        sink.close();
+
+        String expected = EOL +
+                AptMarkup.TABLE_ROW_START_MARKUP +
+                AptMarkup.TABLE_COL_RIGHT_ALIGNED_MARKUP + 
+                AptMarkup.TABLE_COL_LEFT_ALIGNED_MARKUP + 
+                EOL +
+                AptMarkup.LINK_START_1_MARKUP+
+                linkTarget +
+                AptMarkup.LINK_START_2_MARKUP+
+                linkText +
+                AptMarkup.LINK_END_MARKUP+
+                AptMarkup.TABLE_CELL_SEPARATOR_MARKUP +
+                paragraphText +
+                AptMarkup.TABLE_CELL_SEPARATOR_MARKUP +
+                EOL +
+                AptMarkup.TABLE_ROW_START_MARKUP +
+                AptMarkup.TABLE_COL_RIGHT_ALIGNED_MARKUP +
+                AptMarkup.TABLE_COL_LEFT_ALIGNED_MARKUP +
+                EOL;
+
+        assertEquals( "Wrong justification in table cells", expected, getSinkContent() );
+    }
 }
diff --git a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java
index 1e45d94..f1d21b7 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java
+++ b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java
@@ -197,7 +197,7 @@ public class XdocSinkTest
     protected String getTableBlock( String cell, String caption )
     {
         return "<table border=\"0\"><caption>" + caption
-                + "</caption>\n<tr valign=\"top\">\n<td>" + cell + "</td></tr></table>";
+                + "</caption>\n<tr valign=\"top\">\n<td align=\"center\">" + cell + "</td></tr></table>";
     }
 
     /** {@inheritDoc} */