Author: ltheussl
Date: Tue Oct 18 08:27:44 2011
New Revision: 1185529

URL: http://svn.apache.org/viewvc?rev=1185529&view=rev
Log:
[DOXIA-448] Div class attribute replicated to nested h2 element

Modified:
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
    
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/attributes.xml
    
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/XhtmlBaseSinkTest.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java?rev=1185529&r1=1185528&r2=1185529&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/sink/SiteRendererSink.java
 Tue Oct 18 08:27:44 2011
@@ -58,7 +58,7 @@ public class SiteRendererSink
 
     private boolean sectionHasID;
 
-    private boolean sectionTitle;
+    private boolean isSectionTitle;
 
     private Set<String> anchorsInSectionTitle;
 
@@ -92,6 +92,7 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    @Override
     public void title_()
     {
         if ( getTextBuffer().length() > 0 )
@@ -108,6 +109,7 @@ public class SiteRendererSink
      * Do nothing.
      * @see org.apache.maven.doxia.module.xhtml.XhtmlSink#title()
      */
+    @Override
     public void title()
     {
         // nop
@@ -124,6 +126,7 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    @Override
     public void author_()
     {
         if ( getTextBuffer().length() > 0 )
@@ -147,6 +150,7 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    @Override
     public void date_()
     {
         if ( getTextBuffer().length() > 0 )
@@ -173,6 +177,7 @@ public class SiteRendererSink
      * Do nothing.
      * @see org.apache.maven.doxia.module.xhtml.XhtmlSink#body_()
      */
+    @Override
     public void body_()
     {
         // nop
@@ -184,6 +189,7 @@ public class SiteRendererSink
      * Do nothing.
      * @see org.apache.maven.doxia.module.xhtml.XhtmlSink#body()
      */
+    @Override
     public void body()
     {
         // nop
@@ -212,22 +218,25 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    @Override
     public void head_()
     {
         setHeadFlag( false );
     }
 
     /** {@inheritDoc} */
+    @Override
     public void head()
     {
         setHeadFlag( true );
     }
 
     /** {@inheritDoc} */
+    @Override
     public void anchor( String name, SinkEventAttributes attributes )
     {
         super.anchor( name, attributes );
-        if ( sectionTitle )
+        if ( isSectionTitle )
         {
             if ( anchorsInSectionTitle == null )
             {
@@ -236,18 +245,20 @@ public class SiteRendererSink
             anchorsInSectionTitle.add( name );
         }
     }
-    
+
     /** {@inheritDoc} */
+    @Override
     protected void onSectionTitle( int depth, SinkEventAttributes attributes )
     {
         this.sectionTitleBuffer = new StringBuffer();
         sectionHasID = ( attributes != null && attributes.isDefined ( 
Attribute.ID.toString() ) );
-        sectionTitle = true;
+        isSectionTitle = true;
 
         super.onSectionTitle( depth, attributes );
     }
 
     /** {@inheritDoc} */
+    @Override
     protected void onSectionTitle_( int depth )
     {
         String sectionTitle = sectionTitleBuffer.toString();
@@ -267,7 +278,7 @@ public class SiteRendererSink
             sectionHasID = false;
         }
 
-        this.sectionTitle = false;
+        this.isSectionTitle = false;
         anchorsInSectionTitle = null;
         super.onSectionTitle_( depth );
     }
@@ -284,6 +295,7 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    @Override
     public void text( String text )
     {
         if ( sectionTitleBuffer != null )
@@ -296,11 +308,14 @@ public class SiteRendererSink
     }
 
     /** {@inheritDoc} */
+    @Override
     protected void write( String text )
     {
+        String txt = text;
+
         if ( isHeadFlag() )
         {
-            headWriter.write( unifyEOLs( text ) );
+            headWriter.write( unifyEOLs( txt ) );
 
             return;
         }
@@ -311,14 +326,14 @@ public class SiteRendererSink
 
             if ( relativePathToBasedir == null )
             {
-                text = StringUtils.replace( text, "$relativePath", "." );
+                txt = StringUtils.replace( txt, "$relativePath", "." );
             }
             else
             {
-                text = StringUtils.replace( text, "$relativePath", 
relativePathToBasedir );
+                txt = StringUtils.replace( txt, "$relativePath", 
relativePathToBasedir );
             }
         }
 
-        super.write( text );
+        super.write( txt );
     }
 }

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java?rev=1185529&r1=1185528&r2=1185529&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/java/org/apache/maven/doxia/siterenderer/AttributesVerifier.java
 Tue Oct 18 08:27:44 2011
@@ -212,6 +212,8 @@ public class AttributesVerifier
         assertEquals( "section", div.getAttribute( "class" ) );
         h2 = (HtmlHeading2) elementIterator.next();
         assertEquals( "Section with id", h2.asText().trim() );
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "Section_with_id", a.getAttribute( "name" ) );
 
         a = (HtmlAnchor) elementIterator.next();
         assertEquals( "subsection-id", a.getAttribute( "name" ) );
@@ -219,6 +221,30 @@ public class AttributesVerifier
         assertEquals( "section", div.getAttribute( "class" ) );
         h3 = (HtmlHeading3) elementIterator.next();
         assertEquals( "Subsection with id", h3.asText().trim() );
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "Subsection_with_id", a.getAttribute( "name" ) );
+
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "foo", a.getAttribute( "name" ) );
+        div = (HtmlDivision) elementIterator.next();
+        assertEquals( "bar", div.getAttribute( "class" ) );
+        assertEquals( "foo", div.getAttribute( "id" ) );
+        h2 = (HtmlHeading2) elementIterator.next();
+        assertEquals( "Section name", h2.asText().trim() );
+        assertEquals( "", h2.getAttribute( "class" ) );
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "Section_name", a.getAttribute( "name" ) );
+
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "subfoo", a.getAttribute( "name" ) );
+        div = (HtmlDivision) elementIterator.next();
+        assertEquals( "subbar", div.getAttribute( "class" ) );
+        assertEquals( "subfoo", div.getAttribute( "id" ) );
+        h3 = (HtmlHeading3) elementIterator.next();
+        assertEquals( "Subsection name", h3.asText().trim() );
+        assertEquals( "", h3.getAttribute( "class" ) );
+        a = (HtmlAnchor) elementIterator.next();
+        assertEquals( "Subsection_name", a.getAttribute( "name" ) );
 
         assertFalse( elementIterator.hasNext() );
     }

Modified: 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/attributes.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/attributes.xml?rev=1185529&r1=1185528&r2=1185529&view=diff
==============================================================================
--- 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/attributes.xml
 (original)
+++ 
maven/doxia/doxia-sitetools/trunk/doxia-site-renderer/src/test/resources/site/xdoc/attributes.xml
 Tue Oct 18 08:27:44 2011
@@ -83,5 +83,11 @@
       </subsection>
     </section>
 
+    <!-- DOXIA-448 -->
+    <section name="Section name" id="foo" class="bar">
+      <subsection name="Subsection name" id="subfoo" class="subbar">
+      </subsection>
+    </section>
+
   </body>
 </document>

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=1185529&r1=1185528&r2=1185529&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
 Tue Oct 18 08:27:44 2011
@@ -486,7 +486,6 @@ public class XhtmlBaseSink
             att.addAttributes( SinkUtils.filterAttributes(
                     attributes, SinkUtils.SINK_BASE_ATTRIBUTES  ) );
 
-            att.removeAttribute( Attribute.ID.toString() );
             writeStartTag( HtmlMarkup.DIV, att );
         }
     }

Modified: 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/XhtmlBaseSinkTest.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/XhtmlBaseSinkTest.java?rev=1185529&r1=1185528&r2=1185529&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/XhtmlBaseSinkTest.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-core/src/test/java/org/apache/maven/doxia/sink/XhtmlBaseSinkTest.java
 Tue Oct 18 08:27:44 2011
@@ -23,6 +23,7 @@ import java.io.StringWriter;
 import java.io.Writer;
 
 import javax.swing.text.html.HTML.Attribute;
+
 import org.codehaus.plexus.PlexusTestCase;
 
 /**
@@ -211,6 +212,32 @@ public class XhtmlBaseSinkTest
     }
 
     /**
+     * Test of section method, of class XhtmlBaseSink.
+     */
+    public void testSectionAttributes()
+    {
+        final int level = XhtmlBaseSink.SECTION_LEVEL_1;
+        final SinkEventAttributeSet set = new SinkEventAttributeSet(
+            new String[] {"name", "section name", "class", "foo", "id", "bar"} 
);
+
+        try
+        {
+            sink = new XhtmlBaseSink( writer );
+
+            sink.section( level, set );
+            sink.sectionTitle( level, null );
+            sink.sectionTitle_( level );
+            sink.section_( level );
+        }
+        finally
+        {
+            sink.close();
+        }
+
+        assertEquals( "<div class=\"foo\" id=\"bar\"><h2></h2></div>", 
writer.toString() );
+    }
+
+    /**
      * Test of section1 method, of class XhtmlBaseSink.
      */
     public void testSection1()

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java?rev=1185529&r1=1185528&r2=1185529&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
 Tue Oct 18 08:27:44 2011
@@ -476,7 +476,7 @@ public class XdocParser
         }
 
         sink.section( level, attribs );
-        sink.sectionTitle( level, attribs );
+        sink.sectionTitle( level, null );
         sink.text( HtmlTools.unescapeHTML( parser.getAttributeValue( null, 
Attribute.NAME.toString() ) ) );
         sink.sectionTitle_( level );
     }

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.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/XdocParserTest.java?rev=1185529&r1=1185528&r2=1185529&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
 Tue Oct 18 08:27:44 2011
@@ -31,6 +31,7 @@ import org.apache.maven.doxia.parser.Abs
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.SinkEventElement;
 import org.apache.maven.doxia.sink.SinkEventTestingSink;
 
@@ -258,6 +259,40 @@ public class XdocParserTest
     }
 
     /** @throws Exception  */
+    public void testSectionAttributes()
+        throws Exception
+    {
+        // DOXIA-448
+        String text = "<section name=\"section name\" class=\"foo\" 
id=\"bar\"></section>";
+
+        SinkEventTestingSink sink = new SinkEventTestingSink();
+
+        parser.parse( text, sink );
+
+        Iterator<SinkEventElement> it = sink.getEventList().iterator();
+
+        assertEquals( "anchor", ( it.next() ).getName() );
+        assertEquals( "anchor_", ( it.next() ).getName() );
+
+        SinkEventElement next = it.next();
+        assertEquals( "section1", next.getName() );
+        SinkEventAttributeSet set = (SinkEventAttributeSet) next.getArgs()[0];
+        assertEquals( 3, set.getAttributeCount() );
+        assertTrue( set.containsAttribute( "name", "section name" ) );
+        assertTrue( set.containsAttribute( "class", "foo" ) );
+        assertTrue( set.containsAttribute( "id", "bar" ) );
+
+        next = it.next();
+        assertEquals( "sectionTitle1", next.getName() );
+        assertNull( (SinkEventAttributeSet) next.getArgs()[0] );
+
+        assertEquals( "text", ( it.next() ).getName() );
+        assertEquals( "sectionTitle1_", ( it.next() ).getName() );
+        assertEquals( "section1_", ( it.next() ).getName() );
+        assertFalse( it.hasNext() );
+    }
+
+    /** @throws Exception  */
     public void testNestedSectionsEventsList()
         throws Exception
     {


Reply via email to