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
{