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 vs...@apache.org on 2007/08/04 12:58:30 UTC
svn commit: r562690 - in
/maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc:
XdocMarkup.java XdocParser.java XdocSink.java
Author: vsiveton
Date: Sat Aug 4 03:58:29 2007
New Revision: 562690
URL: http://svn.apache.org/viewvc?view=rev&rev=562690
Log:
o using new abstract Parser/Sink classes
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocMarkup.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/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocMarkup.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/XdocMarkup.java?view=diff&rev=562690&r1=562689&r2=562690
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocMarkup.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocMarkup.java Sat Aug 4 03:58:29 2007
@@ -21,6 +21,8 @@
import javax.swing.text.html.HTML.Tag;
+import org.apache.maven.doxia.markup.XmlMarkup;
+
/**
* List of <code>Xdoc</code> markups.
* <br/>
@@ -32,35 +34,8 @@
* @since 1.0
*/
public interface XdocMarkup
+ extends XmlMarkup
{
- /** The vm line separator */
- /** TODO should be in a super interface */
- String EOL = System.getProperty( "line.separator" );
-
- // ----------------------------------------------------------------------
- // Markup separators
- // ----------------------------------------------------------------------
-
- /** TODO should be in a super XML interface */
-
- /** Xhtml start markup: '<' */
- String START_MARKUP = "<";
-
- /** Xhtml end markup: '>' */
- String END_MARKUP = ">";
-
- /** Xhtml quote markup: '\"' */
- String QUOTE_MARKUP = "\"";
-
- /** Xhtml slash markup: '/' */
- String SLASH_MARKUP = "/";
-
- /** Xhtml space markup: ' ' */
- String SPACE_MARKUP = " ";
-
- /** Xhtml equal markup: '=' */
- String EQUAL_MARKUP = "=";
-
// ----------------------------------------------------------------------
// Specific Xdoc tags
// ----------------------------------------------------------------------
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?view=diff&rev=562690&r1=562689&r2=562690
==============================================================================
--- 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 Sat Aug 4 03:58:29 2007
@@ -32,13 +32,12 @@
import org.apache.maven.doxia.macro.MacroExecutionException;
import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
import org.apache.maven.doxia.macro.MacroRequest;
-import org.apache.maven.doxia.parser.AbstractParser;
+import org.apache.maven.doxia.parser.AbstractXmlParser;
import org.apache.maven.doxia.parser.ParseException;
import org.apache.maven.doxia.sink.Sink;
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.pull.MXParser;
import org.codehaus.plexus.util.xml.pull.XmlPullParser;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -51,7 +50,7 @@
* @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="xdoc"
*/
public class XdocParser
- extends AbstractParser
+ extends AbstractXmlParser
implements XdocMarkup
{
/** The source content of the input reader. Used to pass into macros. */
@@ -76,84 +75,32 @@
private Map macroParameters = new HashMap();
/** {@inheritDoc} */
- public void parse( Reader reader, Sink sink )
+ public void parse( Reader source, Sink sink )
throws ParseException
{
try
{
StringWriter contentWriter = new StringWriter();
- IOUtil.copy( reader, contentWriter );
+ IOUtil.copy( source, contentWriter );
sourceContent = contentWriter.toString();
-
- XmlPullParser parser = new MXParser();
-
- parser.setInput( new StringReader( sourceContent ) );
-
- parseXdoc( parser, sink );
- }
- catch ( XmlPullParserException ex )
- {
- throw new ParseException( "Error parsing the model!", ex );
}
catch ( IOException ex )
{
- throw new ParseException( "Error reading the input model!", ex );
+ throw new ParseException( "Error reading the input source: " + ex.getMessage(), ex );
}
- catch ( MacroExecutionException ex )
+ finally
{
- throw new ParseException( "Macro execution failed!", ex );
+ IOUtil.close( source );
}
- }
- /**
- * Parse the model from the XmlPullParser into the given sink.
- *
- * @param parser A parser.
- * @param sink the sink to receive the events.
- * @throws XmlPullParserException if there's a problem parsing the model
- * @throws MacroExecutionException if there's a problem executing a macro
- */
- public void parseXdoc( XmlPullParser parser, Sink sink )
- throws XmlPullParserException, MacroExecutionException
- {
- int eventType = parser.getEventType();
+ Reader tmp = new StringReader( sourceContent );
- while ( eventType != XmlPullParser.END_DOCUMENT )
- {
- if ( eventType == XmlPullParser.START_TAG )
- {
- handleStartTag( parser, sink );
- }
- else if ( eventType == XmlPullParser.END_TAG )
- {
- handleEndTag( parser, sink );
- }
- else if ( eventType == XmlPullParser.TEXT )
- {
- handleText( parser, sink );
- }
-
- try
- {
- eventType = parser.next();
- }
- catch ( IOException io )
- {
- throw new XmlPullParserException(
- "Error parsing the model!", parser, io );
- }
- }
+ super.parse( tmp, sink );
}
- /**
- * Goes through the possible start tags.
- *
- * @param parser A parser.
- * @param sink the sink to receive the events.
- * @throws XmlPullParserException if there's a problem parsing the model
- */
- private void handleStartTag( XmlPullParser parser, Sink sink )
- throws XmlPullParserException
+ /** {@inheritDoc} */
+ protected void handleStartTag( XmlPullParser parser, Sink sink )
+ throws XmlPullParserException, MacroExecutionException
{
isEmptyElement = parser.isEmptyElementTag();
@@ -409,18 +356,11 @@
{
handleRawText( sink, parser );
}
-
}
- /**
- * Goes through the possible end tags.
- *
- * @param parser A parser.
- * @param sink the sink to receive the events.
- * @throws MacroExecutionException if there's a problem executing a macro
- */
- private void handleEndTag( XmlPullParser parser, Sink sink )
- throws MacroExecutionException
+ /** {@inheritDoc} */
+ protected void handleEndTag( XmlPullParser parser, Sink sink )
+ throws XmlPullParserException, MacroExecutionException
{
if ( parser.getName().equals( DOCUMENT_TAG.toString() ) )
{
@@ -591,11 +531,11 @@
}
else if ( !isEmptyElement )
{
- sink.rawText( START_MARKUP + SLASH_MARKUP );
+ sink.rawText( String.valueOf( LESS_THAN ) + String.valueOf( SLASH ) );
sink.rawText( parser.getName() );
- sink.rawText( END_MARKUP );
+ sink.rawText( String.valueOf( GREATER_THAN ) );
}
else
{
@@ -603,13 +543,9 @@
}
}
- /**
- * Handles text events.
- *
- * @param parser A parser.
- * @param sink the sink to receive the events.
- */
- private void handleText( XmlPullParser parser, Sink sink )
+ /** {@inheritDoc} */
+ protected void handleText( XmlPullParser parser, Sink sink )
+ throws XmlPullParserException
{
String text = parser.getText();
@@ -619,6 +555,10 @@
}
}
+ // ----------------------------------------------------------------------
+ // Private methods
+ // ----------------------------------------------------------------------
+
/**
* Handles raw text events.
*
@@ -627,7 +567,7 @@
*/
private void handleRawText( Sink sink, XmlPullParser parser )
{
- sink.rawText( START_MARKUP );
+ sink.rawText( String.valueOf( LESS_THAN ) );
sink.rawText( parser.getName() );
@@ -635,19 +575,19 @@
for ( int i = 0; i < count; i++ )
{
- sink.rawText( SPACE_MARKUP );
+ sink.rawText( String.valueOf( SPACE ) );
sink.rawText( parser.getAttributeName( i ) );
- sink.rawText( EQUAL_MARKUP );
+ sink.rawText( String.valueOf( EQUAL ) );
- sink.rawText( QUOTE_MARKUP );
+ sink.rawText( String.valueOf( QUOTE ) );
sink.rawText( parser.getAttributeValue( i ) );
- sink.rawText( QUOTE_MARKUP );
+ sink.rawText( String.valueOf( QUOTE ) );
}
- sink.rawText( END_MARKUP );
+ sink.rawText( String.valueOf( GREATER_THAN ) );
}
}
Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.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/XdocSink.java?view=diff&rev=562690&r1=562689&r2=562690
==============================================================================
--- maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java (original)
+++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java Sat Aug 4 03:58:29 2007
@@ -20,15 +20,13 @@
*/
import java.io.Writer;
-import java.util.Enumeration;
-import javax.swing.text.AttributeSet;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.html.HTML.Attribute;
import javax.swing.text.html.HTML.Tag;
-import org.apache.maven.doxia.sink.SinkAdapter;
+import org.apache.maven.doxia.sink.AbstractXmlSink;
import org.apache.maven.doxia.util.HtmlTools;
import org.apache.maven.doxia.util.LineBreaker;
import org.apache.maven.doxia.parser.Parser;
@@ -41,7 +39,7 @@
* @since 1.0
*/
public class XdocSink
- extends SinkAdapter
+ extends AbstractXmlSink
implements XdocMarkup
{
// ----------------------------------------------------------------------
@@ -346,13 +344,13 @@
{
if ( depth == 1 )
{
- markup( START_MARKUP + SECTION_TAG.toString() + SPACE_MARKUP + Attribute.NAME + EQUAL_MARKUP
- + QUOTE_MARKUP );
+ markup( String.valueOf( LESS_THAN ) + SECTION_TAG.toString() + String.valueOf( SPACE ) + Attribute.NAME
+ + String.valueOf( EQUAL ) + String.valueOf( QUOTE ) );
}
else if ( depth == 2 )
{
- markup( START_MARKUP + SUBSECTION_TAG.toString() + SPACE_MARKUP + Attribute.NAME + EQUAL_MARKUP
- + QUOTE_MARKUP );
+ markup( String.valueOf( LESS_THAN ) + SUBSECTION_TAG.toString() + String.valueOf( SPACE ) + Attribute.NAME
+ + String.valueOf( EQUAL ) + String.valueOf( QUOTE ) );
}
}
@@ -394,7 +392,7 @@
{
if ( depth == 1 || depth == 2 )
{
- markup( QUOTE_MARKUP + END_MARKUP );
+ markup( String.valueOf( QUOTE ) + String.valueOf( GREATER_THAN ) );
}
else if ( depth == 3 )
{
@@ -601,31 +599,32 @@
*/
public void figure()
{
- markup( START_MARKUP + Tag.IMG );
+ markup( String.valueOf( SPACE ) + Tag.IMG );
}
/** {@inheritDoc} */
public void figure_()
{
- markup( SPACE_MARKUP + SLASH_MARKUP + END_MARKUP );
+ markup( String.valueOf( SPACE ) + String.valueOf( SLASH ) + String.valueOf( GREATER_THAN ) );
}
/** {@inheritDoc} */
public void figureGraphics( String s )
{
- markup( SPACE_MARKUP + Attribute.SRC + EQUAL_MARKUP + QUOTE_MARKUP + s + QUOTE_MARKUP );
+ markup( String.valueOf( SPACE ) + Attribute.SRC + String.valueOf( EQUAL ) + String.valueOf( QUOTE ) + s
+ + String.valueOf( QUOTE ) );
}
/** {@inheritDoc} */
public void figureCaption()
{
- markup( SPACE_MARKUP + Attribute.ALT + EQUAL_MARKUP + QUOTE_MARKUP );
+ markup( String.valueOf( SPACE ) + Attribute.ALT + String.valueOf( EQUAL ) + String.valueOf( QUOTE ) );
}
/** {@inheritDoc} */
public void figureCaption_()
{
- markup( QUOTE_MARKUP );
+ markup( String.valueOf( QUOTE ) );
}
/**
@@ -1123,143 +1122,9 @@
out.close();
}
- // ----------------------------------------------------------------------
- // TODO Move these in core utils
- // ----------------------------------------------------------------------
-
- /**
- * Starts a Tag, for instance:
- * <pre>
- * <tag>
- * </pre>
- *
- * @param t a non null tag
- * @see #writeStartTag(Tag, MutableAttributeSet)
- */
- private void writeStartTag ( Tag t )
- {
- writeStartTag ( t, null );
- }
-
- /**
- * Starts a Tag with attributes, for instance:
- * <pre>
- * <tag attName="attValue">
- * </pre>
- *
- * @param t a non null tag
- * @param att a set of attributes
- * @see #writeStartTag(Tag, MutableAttributeSet, boolean)
- */
- private void writeStartTag ( Tag t, MutableAttributeSet att )
- {
- writeStartTag ( t, att, false );
- }
-
- /**
- * Starts a Tag with attributes, for instance:
- * <pre>
- * <tag attName="attValue">
- * </pre>
- *
- * @param t a non null tag
- * @param att a set of attributes
- * @param isSimpleTag boolean to write as a simple tag
- */
- private void writeStartTag( Tag t, MutableAttributeSet att, boolean isSimpleTag )
- {
- if ( t == null )
- {
- throw new IllegalArgumentException( "A tag is required" );
- }
-
- StringBuffer sb = new StringBuffer();
- sb.append( START_MARKUP );
- sb.append( t.toString() );
-
- if ( att != null )
- {
- Enumeration names = att.getAttributeNames();
-
- while ( names.hasMoreElements() )
- {
- Object key = names.nextElement();
- Object value = att.getAttribute( key );
-
- if ( value instanceof AttributeSet )
- {
- // ignored
- }
- else
- {
- sb.append( SPACE_MARKUP ).append( key.toString() ).append( EQUAL_MARKUP ).append( QUOTE_MARKUP )
- .append( value.toString() ).append( QUOTE_MARKUP );
- }
- }
- }
-
- if ( isSimpleTag )
- {
- sb.append( SPACE_MARKUP ).append( SLASH_MARKUP );
- }
-
- sb.append( END_MARKUP );
-
- if ( isSimpleTag )
- {
- sb.append( EOL );
- }
-
- markup( sb.toString() );
- }
-
- /**
- * Ends a Tag, for instance:
- * <pre>
- * </tag>
- * </pre>
- *
- * @param t a tag
- */
- private void writeEndTag( Tag t )
- {
- StringBuffer sb = new StringBuffer();
- sb.append( START_MARKUP );
- sb.append( SLASH_MARKUP );
- sb.append( t.toString() );
- sb.append( END_MARKUP );
-
- sb.append( EOL );
-
- markup( sb.toString() );
- }
-
- /**
- * Starts a simple Tag, for instance:
- * <pre>
- * <tag />
- * </pre>
- *
- * @param t a non null tag
- * @see #writeSimpleTag(Tag, MutableAttributeSet)
- */
- private void writeSimpleTag( Tag t )
- {
- writeSimpleTag( t, null );
- }
-
- /**
- * Starts a simple Tag with attributes, for instance:
- * <pre>
- * <tag attName="attValue" />
- * </pre>
- *
- * @param t a non null tag
- * @param att a set of attributes
- * @see #writeStartTag(Tag, MutableAttributeSet, boolean)
- */
- private void writeSimpleTag ( Tag t, MutableAttributeSet att )
+ /** {@inheritDoc} */
+ protected void write( String text )
{
- writeStartTag ( t, att, true );
+ markup( text );
}
}