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 lt...@apache.org on 2009/08/21 15:06:22 UTC
svn commit: r806537 - in
/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src:
main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
Author: ltheussl
Date: Fri Aug 21 13:06:21 2009
New Revision: 806537
URL: http://svn.apache.org/viewvc?rev=806537&view=rev
Log:
Fix title handling, text and end tag need to be ignored as well if a second title is read. Add test.
Modified:
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/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=806537&r1=806536&r2=806537&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 Fri Aug 21 13:06:21 2009
@@ -125,14 +125,22 @@
}
else if ( parser.getName().equals( TITLE.toString() ) )
{
- if ( hasTitle && getLog().isWarnEnabled() )
+ if ( hasTitle )
{
- getLog().warn( "<title/> was already defined in <properties/>, ignored <title/> in <head/>." );
+ getLog().warn( "<title> was already defined in <properties>, ignored <title> in <head>." );
+
+ try
+ {
+ parser.nextText(); // ignore next text event
+ }
+ catch ( IOException ex )
+ {
+ throw new XmlPullParserException( "Failed to parse text", parser, ex );
+ }
}
else
{
sink.title( attribs );
- this.hasTitle = true;
}
}
else if ( parser.getName().equals( AUTHOR_TAG.toString() ) )
@@ -238,7 +246,11 @@
}
else if ( parser.getName().equals( TITLE.toString() ) )
{
- sink.title_();
+ if ( !hasTitle )
+ {
+ sink.title_();
+ this.hasTitle = true;
+ }
}
else if ( parser.getName().equals( AUTHOR_TAG.toString() ) )
{
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=806537&r1=806536&r2=806537&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 Fri Aug 21 13:06:21 2009
@@ -48,7 +48,7 @@
{
private XdocParser parser;
- /** @see junit.framework.TestCase#setUp() */
+ /** {@inheritDoc} */
protected void setUp()
throws Exception
{
@@ -190,12 +190,29 @@
assertEquals( "body_", ( (SinkEventElement) it.next() ).getName() );
assertFalse( it.hasNext() );
+ // DOXIA-359
text = "<document>"
- + "<properties><title>title</title>"
- + "<author email=\"a@b.c\">John Doe</author></properties>"
- + "<head><title>title</title></head><body></body></document>";
+ + "<properties><title>properties title</title></properties>"
+ + "<head><title>head title</title></head>"
+ + "<body></body></document>";
+
+ sink.reset();
parser.parse( text, sink );
- assertTrue( true );
+
+ it = sink.getEventList().iterator();
+
+ assertEquals( "head", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "title", ( (SinkEventElement) it.next() ).getName() );
+
+ SinkEventElement title = (SinkEventElement) it.next();
+ assertEquals( "text", title.getName() );
+ assertEquals( "properties title", title.getArgs()[0] );
+
+ assertEquals( "title_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "head_", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "body", ( (SinkEventElement) it.next() ).getName() );
+ assertEquals( "body_", ( (SinkEventElement) it.next() ).getName() );
+ assertFalse( it.hasNext() );
}
/** @throws Exception */