You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-dev@maven.apache.org by Lukas Theussl <lt...@apache.org> on 2009/08/19 09:33:27 UTC
Re: svn commit: r805576 - 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
Hi Vincent,
[I'm back! :) ]
IIUC, according to the xdoc schema it is perfectly legal to specify a <title> in
both <properties> and <head>, so throwing an Exception is not the right solution
IMO. I would prefer one of the following two alternatives:
1) define and document which title gets used if both are specified and emit a
warning that the other is ignored
2) if a second title is encountered, emit it as an (unkown) meta event
I think 1) is good enough since specifying two titles is not logical (even if
legal) and should be fixed in the source document.
-Lukas
vsiveton@apache.org wrote:
> Author: vsiveton
> Date: Tue Aug 18 21:04:23 2009
> New Revision: 805576
>
> URL: http://svn.apache.org/viewvc?rev=805576&view=rev
> Log:
> DOXIA-359: Xdoc parser doesnt make the difference for <title/>
>
> o added an exception when 2 <title/> are defined in <properties/> and also in <head/>
>
> 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=805576&r1=805575&r2=805576&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 Aug 18 21:04:23 2009
> @@ -69,6 +69,9 @@
> /** Indicates that we're inside <properties> or <head>.*/
> private boolean inHead;
>
> + /** Indicates that <title> was called from <properties> or <head>.*/
> + private boolean hasTitle;
> +
> /** {@inheritDoc} */
> public void parse( Reader source, Sink sink )
> throws ParseException
> @@ -94,6 +97,8 @@
> //setIgnorableWhitespace( true );
>
> super.parse( tmp, sink );
> +
> + this.hasTitle = false;
> }
>
> /** {@inheritDoc} */
> @@ -120,7 +125,13 @@
> }
> else if ( parser.getName().equals( TITLE.toString() ) )
> {
> + if ( hasTitle )
> + {
> + throw new XmlPullParserException( "<title/> should be defined in <properties/> or in <head/>, "
> + + "not both." );
> + }
> sink.title( attribs );
> + 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=805576&r1=805575&r2=805576&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 Aug 18 21:04:23 2009
> @@ -189,6 +189,20 @@
> assertEquals( "body", ( (SinkEventElement) it.next() ).getName() );
> assertEquals( "body_", ( (SinkEventElement) it.next() ).getName() );
> assertFalse( it.hasNext() );
> +
> + text = "<document>"
> + + "<properties><title>title</title>"
> + + "<author email=\"a@b.c\">John Doe</author></properties>"
> + + "<head><title>title</title></head><body></body></document>";
> + try
> + {
> + parser.parse( text, sink );
> + assertTrue( false );
> + }
> + catch ( ParseException e )
> + {
> + assertTrue( true );
> + }
> }
>
> /** @throws Exception */
>
>
>
Re: svn commit: r805576 - 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
Posted by Lukas Theussl <lt...@apache.org>.
Vincent Siveton wrote:
> Hi Lukas,
>
> 2009/8/19 Lukas Theussl <lt...@apache.org>:
>> IIUC, according to the xdoc schema it is perfectly legal to specify a
>> <title> in both <properties> and <head>, so throwing an Exception is not the
>> right solution IMO. I would prefer one of the following two alternatives:
>
> Yes both are legal, but the doc doesn't specify which one is the
> "official" title of a xdoc.
properties/title is required by the xsd and should have priority, head/title is
only there for compatibility with xhtml, but it is optional.
>
>> 1) define and document which title gets used if both are specified and emit
>> a warning that the other is ignored
>
> I was thinking about this idea but due to the parser impl, it will be
> always head/title which emits a warn due to the exception actually.
>
> IMHO head/title should be the right title, properties/title is more
> for backward compatibility reasons. WDYT?
The other way round IMO. The properties/title is a required element, while
head/title is optional, and properties comes before head, so simply emit a warning
when a second title is encountered.
-Lukas
>
> Cheers,
>
> Vincent
>
Re: svn commit: r805576 - 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
Posted by Vincent Siveton <vs...@apache.org>.
Hi Lukas,
2009/8/19 Lukas Theussl <lt...@apache.org>:
> IIUC, according to the xdoc schema it is perfectly legal to specify a
> <title> in both <properties> and <head>, so throwing an Exception is not the
> right solution IMO. I would prefer one of the following two alternatives:
Yes both are legal, but the doc doesn't specify which one is the
"official" title of a xdoc.
> 1) define and document which title gets used if both are specified and emit
> a warning that the other is ignored
I was thinking about this idea but due to the parser impl, it will be
always head/title which emits a warn due to the exception actually.
IMHO head/title should be the right title, properties/title is more
for backward compatibility reasons. WDYT?
Cheers,
Vincent