[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
         {