[DOXIA-224] Add source name in parser
Parser has extra parse method, AbstractParser has a default implementation for it.
Apt, Confluence and TWiki already pick up the reference of the source
git-svn-id: https://svn.apache.org/repos/asf/maven/doxia/doxia/trunk@1726913 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
index e648427..cf5599d 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
@@ -22,6 +22,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.Reader;
import java.io.StringReader;
import java.util.Properties;
@@ -170,6 +171,13 @@
{
parse( new StringReader( string ), sink );
}
+
+ @Override
+ public void parse( Reader source, Sink sink, String reference )
+ throws ParseException
+ {
+ parse( source, sink );
+ }
/**
* Set <code>secondParsing</code> to true, if we need a second parsing.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
index f3559b0..26a2c28 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Parser.java
@@ -58,6 +58,17 @@
*/
void parse( Reader source, Sink sink )
throws ParseException;
+
+ /**
+ * Parses the given source model and emits Doxia events into the given sink.
+ *
+ * @param source not null reader that provides the source document.
+ * You could use <code>newReader</code> methods from {@link org.codehaus.plexus.util.ReaderFactory}.
+ * @param sink A sink that consumes the Doxia events.
+ * @throws org.apache.maven.doxia.parser.ParseException if the model could not be parsed.
+ */
+ void parse( Reader source, Sink sink, String reference )
+ throws ParseException;
/**
* The parser type value could be {@link #UNKNOWN_TYPE}, {@link #TXT_TYPE} or
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java
index 3d9ad2c..07d938e 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java
@@ -58,6 +58,8 @@
* called
*/
private boolean ungetted = false;
+
+ private String name;
/**
* Creates the ByLineReaderSource.
@@ -66,9 +68,16 @@
*/
public ByLineReaderSource( final Reader in )
{
- reader = new LineNumberReader( in );
+ this( in, "" );
+ }
+
+ public ByLineReaderSource( final Reader in, final String name )
+ {
+ this.reader = new LineNumberReader( in );
+
+ this.name = name;
- lineNumber = -1;
+ this.lineNumber = -1;
}
/** {@inheritDoc} */
@@ -113,7 +122,7 @@
/** {@inheritDoc} */
public final String getName()
{
- return "";
+ return name;
}
/** {@inheritDoc} */
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
index 651ca14..7b5c059 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
@@ -184,10 +184,17 @@
// Public methods
// ----------------------------------------------------------------------
- /** {@inheritDoc} */
+ @Override
public void parse( Reader source, Sink sink )
throws ParseException
{
+ parse( source, sink, "" );
+ }
+
+ @Override
+ public void parse( Reader source, Sink sink, String reference )
+ throws ParseException
+ {
init();
try
@@ -203,7 +210,7 @@
try
{
- this.source = new AptReaderSource( new StringReader( sourceContent ) );
+ this.source = new AptReaderSource( new StringReader( sourceContent ), reference );
this.sink = sink;
sink.enableLogging( getLog() );
diff --git a/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java b/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
index eabc151..da3d868 100644
--- a/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
+++ b/doxia-modules/doxia-module-confluence/src/main/java/org/apache/maven/doxia/module/confluence/ConfluenceParser.java
@@ -104,11 +104,18 @@
return blocks;
}
- /** {@inheritDoc} */
- public synchronized void parse( Reader source, Sink sink )
+ @Override
+ public void parse( Reader source, Sink sink )
throws ParseException
{
- ByLineSource src = new ByLineReaderSource( source );
+ parse( source, sink, "" );
+ }
+
+ @Override
+ public synchronized void parse( Reader source, Sink sink, String reference )
+ throws ParseException
+ {
+ ByLineSource src = new ByLineReaderSource( source, reference );
try
{
diff --git a/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java b/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java
index 8f9cfb9..8e90cf6 100644
--- a/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java
+++ b/doxia-modules/doxia-module-twiki/src/main/java/org/apache/maven/doxia/module/twiki/TWikiParser.java
@@ -131,14 +131,21 @@
return ret;
}
- /** {@inheritDoc} */
- public final synchronized void parse( final Reader source, final Sink sink )
+ @Override
+ public void parse( Reader source, Sink sink )
+ throws ParseException
+ {
+ parse( source, sink, "" );
+ }
+
+ @Override
+ public final synchronized void parse( final Reader source, final Sink sink, String reference )
throws ParseException
{
init();
List<Block> blocks;
- final ByLineSource src = new ByLineReaderSource( source );
+ final ByLineSource src = new ByLineReaderSource( source, reference );
try
{