You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/01/08 15:48:26 UTC

[maven-doxia] branch DOXIA-632 updated (d6c3baa -> 256c506)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch DOXIA-632
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git.


    omit d6c3baa  [DOXIA-632] Remove remaining deprecated code
    omit fb840ba  [DOXIA-534] Remove Doxia Logging API
     add 9b53544  send PR notifications to issues@maven.a.o
     new 1bcf341  [DOXIA-534] Remove Doxia Logging API
     new 256c506  [DOXIA-632] Remove remaining deprecated code

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (d6c3baa)
            \
             N -- N -- N   refs/heads/DOXIA-632 (256c506)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml               | 1 +
 src/site/xdoc/index.xml | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

[maven-doxia] 01/02: [DOXIA-534] Remove Doxia Logging API

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch DOXIA-632
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 1bcf3411a08a788fa3bb9cfba8bae9a415b8ca15
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Fri Dec 31 00:06:34 2021 +0100

    [DOXIA-534] Remove Doxia Logging API
    
    This closes #80
---
 doxia-core/pom.xml                                 |   9 +-
 .../java/org/apache/maven/doxia/DefaultDoxia.java  |   5 -
 .../apache/maven/doxia/macro/AbstractMacro.java    |  28 ---
 .../java/org/apache/maven/doxia/macro/Macro.java   |   2 -
 .../maven/doxia/macro/snippet/SnippetMacro.java    |   6 +-
 .../apache/maven/doxia/parser/AbstractParser.java  |  30 ---
 .../maven/doxia/parser/AbstractXmlParser.java      |   6 +-
 .../java/org/apache/maven/doxia/parser/Parser.java |   4 +-
 .../maven/doxia/parser/Xhtml5BaseParser.java       |  83 +------
 .../apache/maven/doxia/parser/XhtmlBaseParser.java |  82 +------
 .../apache/maven/doxia/sink/impl/AbstractSink.java |  26 --
 .../maven/doxia/sink/impl/RandomAccessSink.java    |   8 -
 .../maven/doxia/sink/impl/Xhtml5BaseSink.java      |  76 +-----
 .../maven/doxia/sink/impl/XhtmlBaseSink.java       |  75 +-----
 .../org/apache/maven/doxia/util/XmlValidator.java  |  33 +--
 .../apache/maven/doxia/macro/EchoMacroTest.java    |  12 -
 .../maven/doxia/module/AbstractIdentityTest.java   |   2 -
 .../maven/doxia/parser/Xhtml5BaseParserTest.java   |   3 -
 .../maven/doxia/parser/XhtmlBaseParserTest.java    |   5 +-
 .../maven/doxia/sink/impl/AbstractSinkTest.java    |   4 -
 .../org/apache/maven/doxia/sink/impl/TextSink.java |   9 +-
 .../apache/maven/doxia/util/XmlValidatorTest.java  |   5 +-
 doxia-logging-api/pom.xml                          |  42 ----
 .../java/org/apache/maven/doxia/logging/Log.java   | 196 ---------------
 .../org/apache/maven/doxia/logging/LogEnabled.java |  40 ---
 .../maven/doxia/logging/PlexusLoggerWrapper.java   | 213 ----------------
 .../maven/doxia/logging/SystemStreamLog.java       | 271 ---------------------
 doxia-logging-api/src/site/apt/index.apt           |  27 --
 doxia-logging-api/src/site/site.xml                |  42 ----
 doxia-modules/doxia-module-apt/pom.xml             |  11 +-
 .../apache/maven/doxia/module/apt/AptParser.java   |  90 +------
 .../org/apache/maven/doxia/module/apt/AptSink.java |   6 +-
 doxia-modules/doxia-module-fml/pom.xml             |   9 +
 .../maven/doxia/module/fml/FmlContentParser.java   |  14 +-
 .../apache/maven/doxia/module/fml/FmlParser.java   |  71 +-----
 doxia-modules/doxia-module-markdown/pom.xml        |   7 +
 doxia-modules/doxia-module-xdoc/pom.xml            |   9 +
 .../apache/maven/doxia/module/xdoc/XdocParser.java |  15 +-
 .../maven/doxia/module/xdoc/XmlWriterXdocSink.java |   8 -
 doxia-modules/doxia-module-xhtml/pom.xml           |  11 +-
 .../maven/doxia/module/xhtml/XhtmlParser.java      |  14 +-
 doxia-modules/doxia-module-xhtml5/pom.xml          |   9 +
 .../maven/doxia/module/xhtml5/Xhtml5Parser.java    |  14 +-
 doxia-sink-api/pom.xml                             |   6 -
 .../java/org/apache/maven/doxia/sink/Sink.java     |   3 -
 pom.xml                                            |  19 +-
 src/site/resources/images/doxia-deps.png           | Bin 22303 -> 31011 bytes
 src/site/xdoc/doxia-deps.odg                       | Bin 12923 -> 12670 bytes
 src/site/xdoc/index.xml                            |   7 +-
 49 files changed, 184 insertions(+), 1483 deletions(-)

diff --git a/doxia-core/pom.xml b/doxia-core/pom.xml
index d6185b4..bfe68b3 100644
--- a/doxia-core/pom.xml
+++ b/doxia-core/pom.xml
@@ -39,8 +39,8 @@ under the License.
       <artifactId>doxia-sink-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.maven.doxia</groupId>
-      <artifactId>doxia-logging-api</artifactId>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -86,6 +86,11 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
 
   </dependencies>
 
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java b/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
index dae7ec2..90fd183 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
@@ -19,7 +19,6 @@ package org.apache.maven.doxia;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.manager.ParserManager;
@@ -28,7 +27,6 @@ import org.apache.maven.doxia.sink.Sink;
 
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.io.Reader;
 
@@ -41,7 +39,6 @@ import java.io.Reader;
  */
 @Component( role = Doxia.class )
 public class DefaultDoxia
-    extends AbstractLogEnabled
     implements Doxia
 {
     @Requirement
@@ -67,8 +64,6 @@ public class DefaultDoxia
     {
         Parser parser = parserManager.getParser( parserId );
 
-        parser.enableLogging( new PlexusLoggerWrapper( getLogger() ) );
-
         parser.parse( source, sink, reference );
     }
 
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
index 391ef93..4374846 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/AbstractMacro.java
@@ -21,8 +21,6 @@ package org.apache.maven.doxia.macro;
 
 import java.util.Map;
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.StringUtils;
@@ -36,32 +34,6 @@ import org.codehaus.plexus.util.StringUtils;
 public abstract class AbstractMacro
     implements Macro
 {
-    /** Log instance. */
-    private Log logger;
-
-    /** {@inheritDoc} */
-    public void enableLogging( Log log )
-    {
-        this.logger = log;
-    }
-
-    /**
-     * Returns a logger for this macro.
-     * If no logger has been configured, a new SystemStreamLog is returned.
-     *
-     * @return Log
-     * @since 1.1
-     */
-    protected Log getLog()
-    {
-        if ( logger == null )
-        {
-            logger = new SystemStreamLog();
-        }
-
-        return logger;
-    }
-
     /**
      * Check if the given parameter is required. Throws an
      * IllegalArgumentException if paramValue is null or empty.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java
index be52dad..f737468 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/Macro.java
@@ -19,7 +19,6 @@ package org.apache.maven.doxia.macro;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.LogEnabled;
 import org.apache.maven.doxia.sink.Sink;
 
 /**
@@ -29,7 +28,6 @@ import org.apache.maven.doxia.sink.Sink;
  * @since 1.0
  */
 public interface Macro
-    extends LogEnabled
 {
     /** The Plexus lookup role. */
     String ROLE = Macro.class.getName();
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
index cbff994..b3007a2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
@@ -27,6 +27,8 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
@@ -42,6 +44,8 @@ import java.util.Map;
 public class SnippetMacro
     extends AbstractMacro
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( SnippetMacro.class );
+
     /**
      * Holds the cache.
      */
@@ -205,7 +209,7 @@ public class SnippetMacro
             {
                 if ( ignoreDownloadError )
                 {
-                    getLog().debug( "IOException which reading " + url + ": " + e );
+                    LOGGER.debug( "Exception while reading '{}'", url, e );
                     result =
                         new StringBuffer( "Error during retrieving content skip as ignoreDownloadError activated." );
                 }
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 8520e43..ee032e7 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
@@ -27,8 +27,6 @@ import java.io.StringReader;
 
 import java.util.Properties;
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.apache.maven.doxia.macro.Macro;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
@@ -53,9 +51,6 @@ public abstract class AbstractParser
     @Requirement
     private MacroManager macroManager;
 
-    /** Log instance. */
-    private Log logger;
-
     /**
      * Emit Doxia comment events when parsing comments?
      */
@@ -140,8 +135,6 @@ public abstract class AbstractParser
     {
         Macro macro = getMacroManager().getMacro( macroId );
 
-        macro.enableLogging( getLog() );
-
         macro.execute( sink, request );
     }
 
@@ -228,29 +221,6 @@ public abstract class AbstractParser
         return secondParsing;
     }
 
-    /** {@inheritDoc} */
-    public void enableLogging( Log log )
-    {
-        this.logger = log;
-    }
-
-    /**
-     * Returns the current logger for this parser.
-     * If no logger has been configured yet, a new SystemStreamLog is returned.
-     *
-     * @return Log
-     * @since 1.1
-     */
-    protected Log getLog()
-    {
-        if ( logger == null )
-        {
-            logger = new SystemStreamLog();
-        }
-
-        return logger;
-    }
-
     /**
      * Gets the current {@link MacroManager}.
      *
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
index c0b1ddb..7a1b581 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java
@@ -120,7 +120,7 @@ public abstract class AbstractXmlParser
                 throw new ParseException( "Error reading the model: " + e.getMessage(), e );
             }
 
-            new XmlValidator( getLog() ).validate( content );
+            new XmlValidator( ).validate( content );
 
             src = new StringReader( content );
         }
@@ -131,13 +131,11 @@ public abstract class AbstractXmlParser
             XmlPullParser parser = new MXParser();
 
             parser.setInput( src );
-            
+
             // allow parser initialization, e.g. for additional entities in XHTML
             // Note: do it after input is set, otherwise values are reset
             initXmlParser( parser );
 
-            sink.enableLogging( getLog() );
-
             parseXml( parser, sink );
         }
         catch ( XmlPullParserException ex )
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 6a2934b..0e1cd39 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
@@ -19,7 +19,6 @@ package org.apache.maven.doxia.parser;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.LogEnabled;
 import org.apache.maven.doxia.sink.Sink;
 
 import java.io.Reader;
@@ -33,7 +32,6 @@ import java.io.Reader;
  * @since 1.0
  */
 public interface Parser
-    extends LogEnabled
 {
     /** The Plexus lookup role. */
     String ROLE = Parser.class.getName();
@@ -57,7 +55,7 @@ public interface Parser
      */
     void parse( Reader source, Sink sink )
         throws ParseException;
-    
+
     /**
      * Parses the given source model and emits Doxia events into the given sink.
      *
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java
index dd10f58..cc8f579 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/Xhtml5BaseParser.java
@@ -20,11 +20,7 @@ package org.apache.maven.doxia.parser;
  */
 
 import java.io.Reader;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
 import java.util.Stack;
-import java.util.TreeSet;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -34,9 +30,12 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.util.DoxiaUtils;
+
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Common base parser for xhtml5 events.
@@ -45,6 +44,8 @@ public class Xhtml5BaseParser
     extends AbstractXmlParser
         implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( Xhtml5BaseParser.class );
+
     /**
      * True if a &lt;script&gt;&lt;/script&gt; or &lt;style&gt;&lt;/style&gt; block is read. CDATA sections within are
      * handled as rawText.
@@ -75,10 +76,6 @@ public class Xhtml5BaseParser
     /** Used to wrap the definedTerm with its definition, even when one is omitted */
     boolean hasDefinitionListItem = false;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     /** {@inheritDoc} */
     @Override
     public void parse( Reader source, Sink sink, String reference )
@@ -92,8 +89,6 @@ public class Xhtml5BaseParser
         }
         finally
         {
-            logWarnings();
-
             setSecondParsing( false );
             init();
         }
@@ -730,14 +725,8 @@ public class Xhtml5BaseParser
     {
         if ( !baseStartTag( parser, sink ) )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().warn( "Unrecognized xml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
@@ -996,8 +985,7 @@ public class Xhtml5BaseParser
         {
             String linkAnchor = DoxiaUtils.encodeId( id, true );
 
-            String msg = "Modified invalid link: '" + id + "' to '" + linkAnchor + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid link '{}' to '{}'", id, linkAnchor );
 
             return linkAnchor;
         }
@@ -1017,7 +1005,6 @@ public class Xhtml5BaseParser
         this.orderedListDepth = 0;
         this.headingLevel = 0;
         this.inVerbatim = false;
-        this.warnMessages = null;
     }
 
     private void handleAEnd( Sink sink )
@@ -1049,8 +1036,7 @@ public class Xhtml5BaseParser
                 {
                     href = href.substring( 0, hashIndex ) + "#" + DoxiaUtils.encodeId( hash, true );
 
-                    String msg = "Modified invalid link: '" + hash + "' to '" + href + "'";
-                    logMessage( "modifiedLink", msg );
+                    LOGGER.debug( "Modified invalid link '{}' to '{}'", hash, href );
                 }
             }
             sink.link( href, attribs );
@@ -1254,55 +1240,4 @@ public class Xhtml5BaseParser
 
         sink.tableRows( justif, grid );
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String log = "[XHTML Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( log );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( log );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.1
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
index 411b045..1aa9bc2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/XhtmlBaseParser.java
@@ -20,10 +20,6 @@ package org.apache.maven.doxia.parser;
  */
 
 import java.io.Reader;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -37,6 +33,8 @@ import org.apache.maven.doxia.util.DoxiaUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Common base parser for xhtml events.
@@ -49,6 +47,8 @@ public class XhtmlBaseParser
     extends AbstractXmlParser
         implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XhtmlBaseParser.class );
+
     /**
      * True if a &lt;script&gt;&lt;/script&gt; or &lt;style&gt;&lt;/style&gt; block is read. CDATA sections within are
      * handled as rawText.
@@ -76,10 +76,6 @@ public class XhtmlBaseParser
     /** Used to wrap the definedTerm with its definition, even when one is omitted */
     boolean hasDefinitionListItem = false;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     /** {@inheritDoc} */
     @Override
     public void parse( Reader source, Sink sink, String reference )
@@ -93,8 +89,6 @@ public class XhtmlBaseParser
         }
         finally
         {
-            logWarnings();
-
             setSecondParsing( false );
             init();
         }
@@ -740,14 +734,8 @@ public class XhtmlBaseParser
     {
         if ( !baseStartTag( parser, sink ) )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().warn( "Unrecognized xml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
@@ -1002,8 +990,7 @@ public class XhtmlBaseParser
         {
             String linkAnchor = DoxiaUtils.encodeId( id, true );
 
-            String msg = "Modified invalid link: '" + id + "' to '" + linkAnchor + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid link '{}' to '{}'", id, linkAnchor );
 
             return linkAnchor;
         }
@@ -1024,7 +1011,6 @@ public class XhtmlBaseParser
         this.sectionLevel = 0;
         this.inVerbatim = false;
         this.inFigure = false;
-        this.warnMessages = null;
     }
 
     private void handleAEnd( Sink sink )
@@ -1056,8 +1042,7 @@ public class XhtmlBaseParser
                 {
                     href = href.substring( 0, hashIndex ) + "#" + DoxiaUtils.encodeId( hash, true );
 
-                    String msg = "Modified invalid link: '" + hash + "' to '" + href + "'";
-                    logMessage( "modifiedLink", msg );
+                    LOGGER.debug( "Modified invalid link '{}' to '{}'", hash, href );
                 }
             }
             sink.link( href, attribs );
@@ -1253,55 +1238,4 @@ public class XhtmlBaseParser
 
         sink.tableRows( justif, grid );
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String log = "[XHTML Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( log );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( log );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.1
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java
index 4b0c137..e5495cf 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractSink.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.sink.impl;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.Sink;
 
@@ -34,31 +32,7 @@ import org.apache.maven.doxia.sink.Sink;
 public abstract class AbstractSink
     implements Sink, Markup
 {
-    private Log logger;
-
-    /** {@inheritDoc} */
-    public void enableLogging( Log log )
-    {
-        this.logger = log;
-    }
-
     /**
-     * Returns a logger for this sink.
-     * If no logger has been configured, a new SystemStreamLog is returned.
-     *
-     * @return Log
-     */
-    protected Log getLog()
-    {
-        if ( logger == null )
-        {
-            logger = new SystemStreamLog();
-        }
-
-        return logger;
-    }
-
-     /**
       * Parses the given String and replaces all occurrences of
       * '\n', '\r' and '\r\n' with the system EOL. All Sinks should
       * make sure that text output is filtered through this method.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
index a74bf1e..85665b2 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
@@ -27,7 +27,6 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.SinkFactory;
@@ -1343,11 +1342,4 @@ public class RandomAccessSink
     {
         currentSink.verbatim_();
     }
-
-    /** {@inheritDoc} */
-    @Override
-    public void enableLogging( Log log )
-    {
-        currentSink.enableLogging( log );
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
index 45d726f..dbf2884 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
@@ -29,9 +29,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Stack;
-import java.util.TreeSet;
 
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.html.HTML.Attribute;
@@ -46,6 +44,8 @@ import org.apache.maven.doxia.util.HtmlTools;
 
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Abstract base xhtml5 sink implementation.
@@ -54,6 +54,8 @@ public class Xhtml5BaseSink
     extends AbstractXmlSink
     implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( Xhtml5BaseSink.class );
+
     // ----------------------------------------------------------------------
     // Instance fields
     // ----------------------------------------------------------------------
@@ -119,10 +121,6 @@ public class Xhtml5BaseSink
      * */
     protected boolean tableRows = false;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     // ----------------------------------------------------------------------
     // Constructor
     // ----------------------------------------------------------------------
@@ -276,7 +274,6 @@ public class Xhtml5BaseSink
         this.evenTableRow = true;
         this.tableAttributes = null;
         this.tableRows = false;
-        this.warnMessages = null;
     }
 
     /**
@@ -1455,10 +1452,7 @@ public class Xhtml5BaseSink
 
         if ( this.tableContentWriterStack.isEmpty() )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                getLog().warn( "No table content." );
-            }
+            LOGGER.warn( "No table content" );
             return;
         }
 
@@ -1809,8 +1803,7 @@ public class Xhtml5BaseSink
         {
             id = DoxiaUtils.encodeId( name, true );
 
-            String msg = "Modified invalid anchor name: '" + name + "' to '" + id + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid anchor name '{}' to '{}'", name, id );
         }
 
         MutableAttributeSet att = new SinkEventAttributeSet();
@@ -2184,8 +2177,7 @@ public class Xhtml5BaseSink
 
             if ( !originalComment.equals( comment ) )
             {
-                getLog().warn( "[Xhtml5 Sink] Modified invalid comment '" + originalComment
-                        + "' to '" + comment + "'" );
+                LOGGER.warn( "Modified invalid comment '{}' to '{}'", originalComment, comment );
             }
 
             final StringBuilder buffer = new StringBuilder( comment.length() + 7 );
@@ -2244,8 +2236,7 @@ public class Xhtml5BaseSink
     {
         if ( requiredParams == null || !( requiredParams[0] instanceof Integer ) )
         {
-            String msg = "No type information for unknown event: '" + name + "', ignoring!";
-            logMessage( "noTypeInfo", msg );
+            LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
 
             return;
         }
@@ -2270,8 +2261,7 @@ public class Xhtml5BaseSink
 
         if ( tag == null )
         {
-            String msg = "No HTML tag found for unknown event: '" + name + "', ignoring!";
-            logMessage( "noHtmlTag", msg );
+            LOGGER.warn( "No HTML tag found for unknown event '{}', ignoring!", name );
         }
         else
         {
@@ -2289,8 +2279,7 @@ public class Xhtml5BaseSink
             }
             else
             {
-                String msg = "No type information for unknown event: '" + name + "', ignoring!";
-                logMessage( "noTypeInfo", msg );
+                LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
             }
         }
     }
@@ -2324,19 +2313,6 @@ public class Xhtml5BaseSink
     {
         writer.close();
 
-        if ( getLog().isWarnEnabled() && this.warnMessages != null )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-
         init();
     }
 
@@ -2453,36 +2429,4 @@ public class Xhtml5BaseSink
             this.tableCaptionXMLWriterStack.getLast().endElement();
         }
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #close()
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String mesg = "[XHTML5 Sink] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( mesg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( mesg );
-        warnMessages.put( key, set );
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
index 10d08ec..490b9cd 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
@@ -28,9 +28,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Stack;
-import java.util.TreeSet;
 
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.html.HTML.Attribute;
@@ -45,6 +43,8 @@ import org.apache.maven.doxia.util.HtmlTools;
 
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Abstract base xhtml sink implementation.
@@ -57,6 +57,8 @@ public class XhtmlBaseSink
     extends AbstractXmlSink
     implements HtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XhtmlBaseSink.class );
+
     // ----------------------------------------------------------------------
     // Instance fields
     // ----------------------------------------------------------------------
@@ -131,10 +133,6 @@ public class XhtmlBaseSink
     /** Keep track of the closing tags for inline events. */
     protected Stack<List<Tag>> inlineStack = new Stack<>();
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     // ----------------------------------------------------------------------
     // Constructor
     // ----------------------------------------------------------------------
@@ -291,7 +289,6 @@ public class XhtmlBaseSink
         this.legacyFigureCaption = false;
         this.inFigure = false;
         this.tableRows = false;
-        this.warnMessages = null;
     }
 
     /**
@@ -1332,10 +1329,7 @@ public class XhtmlBaseSink
 
         if ( this.tableContentWriterStack.isEmpty() )
         {
-            if ( getLog().isWarnEnabled() )
-            {
-                getLog().warn( "No table content." );
-            }
+            LOGGER.warn( "No table content" );
             return;
         }
 
@@ -1686,8 +1680,7 @@ public class XhtmlBaseSink
         {
             id = DoxiaUtils.encodeId( name, true );
 
-            String msg = "Modified invalid anchor name: '" + name + "' to '" + id + "'";
-            logMessage( "modifiedLink", msg );
+            LOGGER.debug( "Modified invalid anchor name '{}' to '{}'", name, id );
         }
 
         MutableAttributeSet att = new SinkEventAttributeSet();
@@ -2035,7 +2028,7 @@ public class XhtmlBaseSink
 
             if ( !originalComment.equals( comment ) )
             {
-                getLog().warn( "[Xhtml Sink] Modified invalid comment '" + originalComment + "' to '" + comment + "'" );
+                LOGGER.warn( "Modified invalid comment '{}' to '{}'", originalComment, comment );
             }
 
             final StringBuilder buffer = new StringBuilder( comment.length() + 7 );
@@ -2094,8 +2087,7 @@ public class XhtmlBaseSink
     {
         if ( requiredParams == null || !( requiredParams[0] instanceof Integer ) )
         {
-            String msg = "No type information for unknown event: '" + name + "', ignoring!";
-            logMessage( "noTypeInfo", msg );
+            LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
 
             return;
         }
@@ -2120,8 +2112,7 @@ public class XhtmlBaseSink
 
         if ( tag == null )
         {
-            String msg = "No HTML tag found for unknown event: '" + name + "', ignoring!";
-            logMessage( "noHtmlTag", msg );
+            LOGGER.warn( "No HTML tag found for unknown event '{}', ignoring!", name );
         }
         else
         {
@@ -2139,8 +2130,7 @@ public class XhtmlBaseSink
             }
             else
             {
-                String msg = "No type information for unknown event: '" + name + "', ignoring!";
-                logMessage( "noTypeInfo", msg );
+                LOGGER.warn( "No type information for unknown event '{}', ignoring!", name );
             }
         }
     }
@@ -2174,19 +2164,6 @@ public class XhtmlBaseSink
     {
         writer.close();
 
-        if ( getLog().isWarnEnabled() && this.warnMessages != null )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-
         init();
     }
 
@@ -2303,36 +2280,4 @@ public class XhtmlBaseSink
             this.tableCaptionXMLWriterStack.getLast().endElement();
         }
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #close()
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        final String mesg = "[XHTML Sink] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( mesg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( mesg );
-        warnMessages.put( key, set );
-    }
 }
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
index b2c3986..f57264f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/XmlValidator.java
@@ -27,11 +27,11 @@ import java.util.regex.Pattern;
 
 import javax.xml.XMLConstants;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.markup.XmlMarkup;
 import org.apache.maven.doxia.parser.AbstractXmlParser.CachedFileEntityResolver;
 import org.apache.maven.doxia.parser.ParseException;
-
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
@@ -46,6 +46,8 @@ import org.xml.sax.helpers.XMLReaderFactory;
  */
 public class XmlValidator
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XmlValidator.class );
+
     /**
      * Doctype pattern i.e. ".*<!DOCTYPE([^>]*)>.*"
      * see <a href="http://www.w3.org/TR/REC-xml/#NT-doctypedecl">http://www.w3.org/TR/REC-xml/#NT-doctypedecl</a>.
@@ -58,18 +60,6 @@ public class XmlValidator
     /** lazy xmlReader to validate xml content*/
     private XMLReader xmlReader;
 
-    private Log logger;
-
-    /**
-     * Constructor.
-     *
-     * @param log a logger, not null.
-     */
-    public XmlValidator( Log log )
-    {
-        this.logger = log;
-    }
-
     /**
      * Validate an XML content with SAX.
      *
@@ -103,7 +93,6 @@ public class XmlValidator
             }
 
             // 3 validate content
-            getLog().debug( "Validating the content..." );
             getXmlReader( hasXsd && hasDoctype ).parse( new InputSource( new StringReader( content ) ) );
         }
         catch ( IOException | SAXException e )
@@ -122,7 +111,7 @@ public class XmlValidator
     {
         if ( xmlReader == null )
         {
-            MessagesErrorHandler errorHandler = new MessagesErrorHandler( getLog() );
+            MessagesErrorHandler errorHandler = new MessagesErrorHandler( );
 
             xmlReader = XMLReaderFactory.createXMLReader();
             xmlReader.setFeature( "http://xml.org/sax/features/validation", true );
@@ -136,11 +125,6 @@ public class XmlValidator
         return xmlReader;
     }
 
-    private Log getLog()
-    {
-        return logger;
-    }
-
     /**
      * Convenience class to beautify <code>SAXParseException</code> messages.
      */
@@ -161,13 +145,10 @@ public class XmlValidator
         private static final Pattern ELEMENT_TYPE_PATTERN =
             Pattern.compile( "Element type \".*\" must be declared.", Pattern.DOTALL );
 
-        private final Log log;
-
         private boolean hasDtdAndXsd;
 
-        private MessagesErrorHandler( Log log )
+        private MessagesErrorHandler( )
         {
-            this.log = log;
         }
 
         /**
@@ -252,7 +233,7 @@ public class XmlValidator
             switch ( type )
             {
                 case TYPE_WARNING:
-                    log.warn( logMessage );
+                    LOGGER.warn( logMessage );
                     break;
 
                 case TYPE_UNKNOWN:
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
index 12b2594..2082704 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
@@ -68,16 +68,4 @@ public class EchoMacroTest
         assertEquals( "verbatim_", event.getName() );
         assertFalse( it.hasNext() );
     }
-
-    /**
-     * Test log.
-     */
-    @Test
-    public void testLog()
-    {
-        EchoMacro macro = new EchoMacro();
-        macro.enableLogging( null );
-        assertNotNull( macro.getLog() );
-        assertNotNull( macro.getLog() );
-    }
 }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
index 9b4d868..a3713d6 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
@@ -26,7 +26,6 @@ import java.io.Writer;
 
 import org.apache.maven.doxia.AbstractModuleTest;
 
-import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 
@@ -105,7 +104,6 @@ public abstract class AbstractIdentityTest
         writer = new StringWriter();
         sink = new TextSink( writer );
         Parser parser = createParser();
-        parser.enableLogging( new PlexusLoggerWrapper( ( ( DefaultPlexusContainer )getContainer() ).getLogger() ) );
         parser.parse( reader, sink );
         String actual = writer.toString();
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
index 3d58d7a..950c627 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
@@ -21,7 +21,6 @@ package org.apache.maven.doxia.parser;
 
 import java.util.Iterator;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
@@ -42,7 +41,6 @@ public class Xhtml5BaseParserTest
     protected Parser createParser()
     {
         parser = new Xhtml5BaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         return parser;
     }
 
@@ -58,7 +56,6 @@ public class Xhtml5BaseParserTest
         super.setUp();
 
         parser = new Xhtml5BaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         sink.reset();
     }
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
index 58342db..1175974 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
@@ -21,7 +21,6 @@ package org.apache.maven.doxia.parser;
 
 import java.util.Iterator;
 
-import org.apache.maven.doxia.logging.Log;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
@@ -45,7 +44,6 @@ public class XhtmlBaseParserTest
     protected Parser createParser()
     {
         parser = new XhtmlBaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         return parser;
     }
 
@@ -61,7 +59,6 @@ public class XhtmlBaseParserTest
         super.setUp();
 
         parser = new XhtmlBaseParser();
-        parser.getLog().setLogLevel( Log.LEVEL_ERROR );
         sink.reset();
     }
 
@@ -736,7 +733,7 @@ public class XhtmlBaseParserTest
         // ampersand should be un-escaped
         assertEquals( "http://ex.com/ex.jpg?v=l&l=e", attribs.getAttribute( "src" ) );
     }
-    
+
     public void testUnbalancedDefinitionListItem() throws Exception
     {
         String text = "<body><dl><dt>key</dt><dd>value</dd></dl>" +
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
index 4247059..ff6d4dc 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
@@ -24,10 +24,8 @@ import java.io.IOException;
 import java.io.Writer;
 
 import org.apache.maven.doxia.AbstractModuleTest;
-import org.apache.maven.doxia.logging.PlexusLoggerWrapper;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
-import org.codehaus.plexus.DefaultPlexusContainer;
 import org.codehaus.plexus.util.IOUtil;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -57,7 +55,6 @@ public abstract class AbstractSinkTest
 
         testWriter.reset();
         sink = createSink( testWriter );
-        sink.enableLogging( new PlexusLoggerWrapper( ( ( DefaultPlexusContainer )getContainer() ).getLogger() ) );
     }
 
     /**
@@ -1085,7 +1082,6 @@ public abstract class AbstractSinkTest
 
         testWriter.reset();
         sink = createSink( testWriter );
-        sink.enableLogging( new PlexusLoggerWrapper( ( ( DefaultPlexusContainer )getContainer() ).getLogger() ) );
 
         comment = "-";
         sink.comment( comment );
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
index 7ec5b61..620bdca 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
@@ -25,6 +25,8 @@ import java.io.Writer;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.AbstractSink;
 import org.apache.maven.doxia.sink.impl.SinkUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A simple text-based implementation of the <code>Sink</code> interface.
@@ -33,6 +35,7 @@ import org.apache.maven.doxia.sink.impl.SinkUtils;
 public class TextSink
     extends AbstractSink
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( TextSink.class );
 
     /** For writing the result. */
     private final Writer out;
@@ -757,7 +760,7 @@ public class TextSink
         }
         catch ( IOException e )
         {
-            getLog().warn( "Could not flush sink: " + e.getMessage(), e );
+            LOGGER.warn( "Could not flush sink", e );
         }
     }
 
@@ -770,7 +773,7 @@ public class TextSink
         }
         catch ( IOException e )
         {
-            getLog().warn( "Could not close sink: " + e.getMessage(), e );
+            LOGGER.warn( "Could not close sink", e );
         }
     }
 
@@ -1071,7 +1074,7 @@ public class TextSink
         }
         catch ( IOException e )
         {
-            getLog().warn( "Could not write to sink: " + e.getMessage(), e );
+            LOGGER.warn( "Could not write to sink", e );
         }
     }
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
index 40a93d6..4c1f700 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.util;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.Log;
-import org.apache.maven.doxia.logging.SystemStreamLog;
 import org.codehaus.plexus.PlexusTestCase;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.XmlStreamReader;
@@ -38,8 +36,7 @@ extends PlexusTestCase
     {
         String xml = IOUtil.toString( new XmlStreamReader( this.getClass().getResourceAsStream( "/test.xhtml" ) ) );
 
-        Log log = new SystemStreamLog();
-        XmlValidator validator = new XmlValidator( log );
+        XmlValidator validator = new XmlValidator( );
 
         validator.validate( xml );
     }
diff --git a/doxia-logging-api/pom.xml b/doxia-logging-api/pom.xml
deleted file mode 100644
index f680672..0000000
--- a/doxia-logging-api/pom.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <artifactId>doxia</artifactId>
-    <groupId>org.apache.maven.doxia</groupId>
-    <version>2.0.0-M1-SNAPSHOT</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>doxia-logging-api</artifactId>
-  <name>Doxia :: Logging API</name>
-  <description>Doxia Logging API.</description>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-container-default</artifactId>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/Log.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/Log.java
deleted file mode 100644
index 8b5ad28..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/Log.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package org.apache.maven.doxia.logging;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * This interface supplies the API for providing feedback to the user from
- * a Parser or Sink, using standard <code>Doxia</code> channels.
- * <br>
- * There should be no big surprises here, although you may notice that the methods accept
- * <code>java.lang.CharSequence</code> rather than <code>java.lang.String</code>. This is provided mainly as a
- * convenience, to enable developers to pass things like <code>java.lang.StringBuilder</code> directly into the logger,
- * rather than formatting first by calling <code>toString()</code>.
- * <br>
- * Based on <code>org.apache.maven.plugin.logging.Log</code>.
- *
- * @author jdcasey
- * @author ltheussl
- * @since 1.1
- */
-@Deprecated
-public interface Log
-{
-    /** Typecode for debugging messages. */
-    int LEVEL_DEBUG = 0;
-
-    /** Typecode for informational messages. */
-    int LEVEL_INFO = 1;
-
-    /** Typecode for warning messages. */
-    int LEVEL_WARN = 2;
-
-    /** Typecode for error messages. */
-    int LEVEL_ERROR = 3;
-
-    /** Typecode for fatal error messages. */
-    int LEVEL_FATAL = 4;
-
-    /** Typecode for disabled log levels. */
-    int LEVEL_DISABLED = 5;
-
-    /**
-     * Set the current log level.
-     *
-     * @param level the log level to set.
-     */
-    void setLogLevel( int level );
-
-    /**
-     * <p>isDebugEnabled.</p>
-     *
-     * @return true if the <b>debug</b> error level is enabled.
-     */
-    boolean isDebugEnabled();
-
-    /**
-     * Send a message to the user in the <b>debug</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void debug( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>debug</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void debug( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>debug</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void debug( Throwable error );
-
-    /**
-     * <p>isInfoEnabled.</p>
-     *
-     * @return true if the <b>info</b> error level is enabled.
-     */
-    boolean isInfoEnabled();
-
-    /**
-     * Send a message to the user in the <b>info</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void info( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>info</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void info( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>info</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void info( Throwable error );
-
-    /**
-     * <p>isWarnEnabled.</p>
-     *
-     * @return true if the <b>warn</b> error level is enabled.
-     */
-    boolean isWarnEnabled();
-
-    /**
-     * Send a message to the user in the <b>warn</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void warn( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>warn</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void warn( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>warn</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void warn( Throwable error );
-
-    /**
-     * <p>isErrorEnabled.</p>
-     *
-     * @return true if the <b>error</b> error level is enabled.
-     */
-    boolean isErrorEnabled();
-
-    /**
-     * Send a message to the user in the <b>error</b> error level.
-     *
-     * @param content the message to log.
-     */
-    void error( CharSequence content );
-
-    /**
-     * Send a message (and accompanying exception) to the user in the <b>error</b> error level.
-     * <br>
-     * The error's stacktrace will be output when this error level is enabled.
-     *
-     * @param content the message to log.
-     * @param error the error to log.
-     */
-    void error( CharSequence content, Throwable error );
-
-    /**
-     * Send an exception to the user in the <b>error</b> error level.
-     * <br>
-     * The stack trace for this exception will be output when this error level is enabled.
-     *
-     * @param error the error to log.
-     */
-    void error( Throwable error );
-}
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/LogEnabled.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/LogEnabled.java
deleted file mode 100644
index 6bc9922..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/LogEnabled.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.apache.maven.doxia.logging;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-
-/**
- * An interface for <code>Doxia</code> components (mainly Sink, Parser and Macro) that need the ability to log.
- * <br>
- * Based on <code>org.codehaus.plexus.logging.LogEnabled</code>.
- *
- * @author ltheussl
- * @since 1.1
- */
-@Deprecated
-public interface LogEnabled
-{
-    /**
-     * Enable a <code>Doxia</code> logger for this <code>Doxia</code> component.
-     *
-     * @param log a Log.
-     */
-    void enableLogging( Log log );
-}
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/PlexusLoggerWrapper.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/PlexusLoggerWrapper.java
deleted file mode 100644
index 3c7fe45..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/PlexusLoggerWrapper.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package org.apache.maven.doxia.logging;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.codehaus.plexus.logging.Logger;
-
-/**
- * Wrap a Plexus logger into a Doxia logger.
- * Based on org.apache.maven.plugin.logging.Log.
- *
- * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
- * @since 1.1
- */
-@Deprecated
-public class PlexusLoggerWrapper
-    implements Log
-{
-    private final Logger logger;
-
-    /**
-     * <p>Constructor for PlexusLoggerWrapper.</p>
-     *
-     * @param logger the Plexus logger to wrap.
-     */
-    public PlexusLoggerWrapper( Logger logger )
-    {
-        this.logger = logger;
-    }
-
-    /** {@inheritDoc} */
-    public void setLogLevel( int level )
-    {
-        if ( level <= LEVEL_DEBUG )
-        {
-            logger.setThreshold( Logger.LEVEL_DEBUG );
-        }
-        else if ( level <= LEVEL_INFO )
-        {
-            logger.setThreshold( Logger.LEVEL_INFO );
-        }
-        else if ( level <= LEVEL_WARN )
-        {
-            logger.setThreshold( Logger.LEVEL_WARN );
-        }
-        else if ( level <= LEVEL_ERROR )
-        {
-            logger.setThreshold( Logger.LEVEL_ERROR );
-        }
-        else
-        {
-            logger.setThreshold( Logger.LEVEL_DISABLED );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void debug( CharSequence content )
-    {
-        logger.debug( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( CharSequence content, Throwable error )
-    {
-        logger.debug( toString( content ), error );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( Throwable error )
-    {
-        logger.debug( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content )
-    {
-        logger.info( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content, Throwable error )
-    {
-        logger.info( toString( content ), error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void info( Throwable error )
-    {
-        logger.info( "", error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void warn( CharSequence content )
-    {
-        logger.warn( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( CharSequence content, Throwable error )
-    {
-        logger.warn( toString( content ), error );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( Throwable error )
-    {
-        logger.warn( "", error );
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content )
-    {
-        logger.error( toString( content ) );
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content, Throwable error )
-    {
-        logger.error( toString( content ), error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void error( Throwable error )
-    {
-        logger.error( "", error );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isDebugEnabled()
-    {
-        return logger.isDebugEnabled();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isInfoEnabled()
-    {
-        return logger.isInfoEnabled();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isWarnEnabled()
-    {
-        return logger.isWarnEnabled();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isErrorEnabled()
-    {
-        return logger.isErrorEnabled();
-    }
-
-    // ----------------------------------------------------------------------
-    // Private methods
-    // ----------------------------------------------------------------------
-
-    private String toString( CharSequence content )
-    {
-        if ( content == null )
-        {
-            return "";
-        }
-
-        return content.toString();
-    }
-}
diff --git a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/SystemStreamLog.java b/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/SystemStreamLog.java
deleted file mode 100644
index 8ec510a..0000000
--- a/doxia-logging-api/src/main/java/org/apache/maven/doxia/logging/SystemStreamLog.java
+++ /dev/null
@@ -1,271 +0,0 @@
-package org.apache.maven.doxia.logging;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-/**
- * Logger with "standard" output and error output stream. The log prefix is voluntarily in lower case.
- * <br>
- * Based on <code>org.apache.maven.plugin.logging.SystemStreamLog</code>.
- *
- * @author jdcasey
- * @author ltheussl
- * @since 1.1
- */
-@Deprecated
-public class SystemStreamLog
-    implements Log
-{
-    private static final String EOL = System.getProperty( "line.separator" );
-
-    private int currentLevel = LEVEL_INFO;
-
-    /** {@inheritDoc} */
-    public void setLogLevel( int level )
-    {
-        if ( level <= LEVEL_DEBUG )
-        {
-            currentLevel = LEVEL_DEBUG;
-        }
-        else if ( level <= LEVEL_INFO )
-        {
-            currentLevel = LEVEL_INFO;
-        }
-        else if ( level <= LEVEL_WARN )
-        {
-            currentLevel = LEVEL_WARN;
-        }
-        else if ( level <= LEVEL_ERROR )
-        {
-            currentLevel = LEVEL_ERROR;
-        }
-        else
-        {
-            currentLevel = LEVEL_DISABLED;
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void debug( CharSequence content )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "debug", content );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void debug( CharSequence content, Throwable error )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "debug", content, error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void debug( Throwable error )
-    {
-        if ( isDebugEnabled() )
-        {
-            print( "debug", error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "info", content );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content, Throwable error )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "info", content, error );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void info( Throwable error )
-    {
-        if ( isInfoEnabled() )
-        {
-            print( "info", error );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param content a {@link java.lang.CharSequence} object.
-     */
-    public void warn( CharSequence content )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "warn", content );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void warn( CharSequence content, Throwable error )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "warn", content, error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void warn( Throwable error )
-    {
-        if ( isWarnEnabled() )
-        {
-            print( "warn", error );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content )
-    {
-        if ( isErrorEnabled() )
-        {
-            System.err.println( "[error] " + content.toString() );
-        }
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content, Throwable error )
-    {
-        if ( isErrorEnabled() )
-        {
-            StringWriter sWriter = new StringWriter();
-            PrintWriter pWriter = new PrintWriter( sWriter );
-
-            error.printStackTrace( pWriter );
-
-            System.err.println( "[error] " + content.toString()
-                + EOL + EOL + sWriter.toString() );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @param error a {@link java.lang.Throwable} object.
-     */
-    public void error( Throwable error )
-    {
-        if ( isErrorEnabled() )
-        {
-            StringWriter sWriter = new StringWriter();
-            PrintWriter pWriter = new PrintWriter( sWriter );
-
-            error.printStackTrace( pWriter );
-
-            System.err.println( "[error] " + sWriter.toString() );
-        }
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isDebugEnabled()
-    {
-        return ( currentLevel <= LEVEL_DEBUG );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isInfoEnabled()
-    {
-        return ( currentLevel <= LEVEL_INFO );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isWarnEnabled()
-    {
-        return ( currentLevel <= LEVEL_WARN );
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * @return a boolean.
-     */
-    public boolean isErrorEnabled()
-    {
-        return ( currentLevel <= LEVEL_ERROR );
-    }
-
-      //
-     // private
-    //
-
-    private void print( String prefix, CharSequence content )
-    {
-        System.out.println( "[" + prefix + "] " + content.toString() );
-    }
-
-    private void print( String prefix, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        System.out.println( "[" + prefix + "] " + sWriter.toString() );
-    }
-
-    private void print( String prefix, CharSequence content, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        System.out.println( "[" + prefix + "] " + content.toString()
-            + EOL + EOL + sWriter.toString() );
-    }
-}
diff --git a/doxia-logging-api/src/site/apt/index.apt b/doxia-logging-api/src/site/apt/index.apt
deleted file mode 100644
index fd75b48..0000000
--- a/doxia-logging-api/src/site/apt/index.apt
+++ /dev/null
@@ -1,27 +0,0 @@
- --------------
- Maven Doxia Logging API
- --------------
-
- ~~ Licensed to the Apache Software Foundation (ASF) under one
- ~~ or more contributor license agreements.  See the NOTICE file
- ~~ distributed with this work for additional information
- ~~ regarding copyright ownership.  The ASF licenses this file
- ~~ to you under the Apache License, Version 2.0 (the
- ~~ "License"); you may not use this file except in compliance
- ~~ with the License.  You may obtain a copy of the License at
- ~~
- ~~   http://www.apache.org/licenses/LICENSE-2.0
- ~~
- ~~ Unless required by applicable law or agreed to in writing,
- ~~ software distributed under the License is distributed on an
- ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- ~~ KIND, either express or implied.  See the License for the
- ~~ specific language governing permissions and limitations
- ~~ under the License.
-
- ~~ NOTE: For help with the syntax of this file, see:
- ~~ http://maven.apache.org/doxia/references/apt-format.html
-
-Deprecation Notice
-
-  This Doxia module is deprecated and will be removed in version 2.0.0.
diff --git a/doxia-logging-api/src/site/site.xml b/doxia-logging-api/src/site/site.xml
deleted file mode 100644
index ac3868c..0000000
--- a/doxia-logging-api/src/site/site.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- -->
-
-<project xmlns="http://maven.apache.org/DECORATION/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.1.0 https://maven.apache.org/xsd/decoration-1.1.0.xsd">
-
-  <body>
-
-    <menu ref="parent"/>
-
-    <menu name="Overview">
-      <item name="Introduction" href="index.html"/>
-      <item name="JavaDocs" href="apidocs/index.html"/>
-      <item name="Source Xref" href="xref/index.html"/>
-      <!--item name="FAQ" href="faq.html"/-->
-    </menu>
-
-    <menu ref="reports"/>
-
-  </body>
-
-</project>
\ No newline at end of file
diff --git a/doxia-modules/doxia-module-apt/pom.xml b/doxia-modules/doxia-module-apt/pom.xml
index 67b767c..15e2463 100644
--- a/doxia-modules/doxia-module-apt/pom.xml
+++ b/doxia-modules/doxia-module-apt/pom.xml
@@ -43,6 +43,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -56,5 +60,10 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
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 bccaddf..f36b8cd 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
@@ -34,6 +34,8 @@ import org.apache.maven.doxia.util.DoxiaUtils;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.io.Reader;
@@ -41,9 +43,7 @@ import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Set;
 import java.util.StringTokenizer;
-import java.util.TreeSet;
 
 /**
  * The APT parser.
@@ -57,6 +57,8 @@ public class AptParser
     extends AbstractTextParser
     implements AptMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AptParser.class );
+
     /** Title event id */
     private static final int TITLE = 0;
 
@@ -163,10 +165,6 @@ public class AptParser
     /** a line of AptSource. */
     protected String line;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    protected Map<String, Set<String>> warnMessages;
-
     private static final int NUMBER_OF_SPACES = 85;
 
     static
@@ -190,7 +188,7 @@ public class AptParser
     {
         parse( source, sink, "" );
     }
-    
+
     /** {@inheritDoc} */
     @Override
     public void parse( Reader source, Sink sink, String reference )
@@ -214,7 +212,6 @@ public class AptParser
             this.source = new AptReaderSource( new StringReader( sourceContent ), reference );
 
             this.sink = sink;
-            sink.enableLogging( getLog() );
 
             blockFileName = null;
 
@@ -244,8 +241,6 @@ public class AptParser
         }
         finally
         {
-            logWarnings();
-
             setSecondParsing( false );
             init();
         }
@@ -361,10 +356,7 @@ public class AptParser
                                     }
                                     catch ( NumberFormatException e )
                                     {
-                                        if ( getLog().isDebugEnabled() )
-                                        {
-                                            getLog().debug( "Not a number: " + text.substring( i + 2, i + 4 ) );
-                                        }
+                                        LOGGER.debug( "Not a number: {}", text.substring( i + 2, i + 4 ) );
                                     }
 
                                     i += 3;
@@ -387,10 +379,7 @@ public class AptParser
                                     }
                                     catch ( NumberFormatException e )
                                     {
-                                        if ( getLog().isDebugEnabled() )
-                                        {
-                                            getLog().debug( "Not a number: " + text.substring( i + 2, i + 6 ) );
-                                        }
+                                        LOGGER.debug( "Not a number: {}", text.substring( i + 2, i + 6 ) );
                                     }
 
                                     i += 5;
@@ -420,12 +409,7 @@ public class AptParser
                                     }
                                     catch ( NumberFormatException e )
                                     {
-                                        if ( getLog().isDebugEnabled() )
-                                        {
-                                            getLog().debug(
-                                                            "Not a number: "
-                                                                + text.substring( i + 1, i + 1 + octalChars ) );
-                                        }
+                                        LOGGER.debug( "Not a number: {}", text.substring( i + 1, i + 1 + octalChars ) );
                                     }
 
                                     i += octalChars;
@@ -480,9 +464,8 @@ public class AptParser
 
                                 if ( hash.endsWith( ".html" ) && !hash.startsWith( "./" ) )
                                 {
-                                    String msg = "Ambiguous link: '" + hash
-                                            + "'. If this is a local link, prepend \"./\"!";
-                                    logMessage( "ambiguousLink", msg );
+                                    LOGGER.debug( "Ambiguous link '{}'. If this is a local link, prepend \"./\"!",
+                                            hash );
                                 }
 
                                 // link##anchor means literal
@@ -496,8 +479,7 @@ public class AptParser
                                         linkAnchor.substring( 0, hashIndex ) + "#"
                                             + DoxiaUtils.encodeId( hash, true );
 
-                                    String msg = "Modified invalid link: '" + hash + "' to '" + linkAnchor + "'";
-                                    logMessage( "modifiedLink", msg );
+                                    LOGGER.debug( "Modified invalid link '{}' to '{}'", hash, linkAnchor );
                                 }
                             }
 
@@ -729,7 +711,6 @@ public class AptParser
         this.blockFileName = null;
         this.blockLineNumber = 0;
         this.line = null;
-        this.warnMessages = null;
     }
 
     // ----------------------------------------------------------------------
@@ -1605,56 +1586,7 @@ public class AptParser
         return buffer.toString().trim();
     }
 
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        msg = "[APT Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( msg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( msg );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.2
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
 
-            this.warnMessages = null;
-        }
-    }
 
     // -----------------------------------------------------------------------
 
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
index a00754e..c44281e 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
@@ -29,6 +29,8 @@ import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.AbstractTextSink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * APT generator implementation.
@@ -42,6 +44,8 @@ public class AptSink
     extends AbstractTextSink
     implements AptMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( AptSink.class );
+
     // ----------------------------------------------------------------------
     // Instance fields
     // ----------------------------------------------------------------------
@@ -1100,7 +1104,7 @@ public class AptSink
      */
     public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes )
     {
-        getLog().warn( "[Apt Sink] Unknown Sink event: '" + name + "', ignoring!" );
+        LOGGER.warn( "Unknown Sink event '{}', ignoring!", name );
     }
 
     /**
diff --git a/doxia-modules/doxia-module-fml/pom.xml b/doxia-modules/doxia-module-fml/pom.xml
index 4a3042a..3cca1c1 100644
--- a/doxia-modules/doxia-module-fml/pom.xml
+++ b/doxia-modules/doxia-module-fml/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -49,6 +53,11 @@ under the License.
       <artifactId>doxia-test-docs</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java
index 2cf0451..2912298 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlContentParser.java
@@ -25,6 +25,8 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse Fml questions and answers, these may contain arbitrary xdoc elements.
@@ -36,6 +38,8 @@ public class FmlContentParser
     extends Xhtml5BaseParser
     implements FmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( FmlContentParser.class );
+
     /** Empty elements don't write a closing tag. */
     private boolean isEmptyElement;
 
@@ -69,14 +73,8 @@ public class FmlContentParser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized fml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized fml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
index da334a1..3068d96 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
@@ -26,8 +26,6 @@ import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
 
 import javax.swing.text.html.HTML.Attribute;
 
@@ -50,6 +48,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse a fml model and emit events into the specified doxia Sink.
@@ -63,6 +63,8 @@ public class FmlParser
     extends AbstractXmlParser
     implements FmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( FmlParser.class );
+
     /** Collect a faqs model. */
     private Faqs faqs;
 
@@ -75,10 +77,6 @@ public class FmlParser
     /** Used to collect text events. */
     private StringBuilder buffer;
 
-    /** Map of warn messages with a String as key to describe the error type and a Set as value.
-     * Using to reduce warn messages. */
-    private Map<String, Set<String>> warnMessages;
-
     /** The source content of the input reader. Used to pass into macros. */
     private String sourceContent;
 
@@ -124,8 +122,6 @@ public class FmlParser
         }
         finally
         {
-            logWarnings();
-
             this.faqs = null;
             this.sourceContent = null;
             setSecondParsing( false );
@@ -175,8 +171,7 @@ public class FmlParser
             {
                 String linkAnchor = DoxiaUtils.encodeId( currentPart.getId(), true );
 
-                String msg = "Modified invalid link: '" + currentPart.getId() + "' to '" + linkAnchor + "'";
-                logMessage( "modifiedLink", msg );
+                LOGGER.debug( "Modified invalid link '{}' to '{}'", currentPart.getId(), linkAnchor );
 
                 currentPart.setId( linkAnchor );
             }
@@ -201,8 +196,7 @@ public class FmlParser
             {
                 String linkAnchor = DoxiaUtils.encodeId( currentFaq.getId(), true );
 
-                String msg = "Modified invalid link: '" + currentFaq.getId() + "' to '" + linkAnchor + "'";
-                logMessage( "modifiedLink", msg );
+                LOGGER.debug( "Modified invalid link '{}' to '{}'", currentFaq.getId(), linkAnchor );
 
                 currentFaq.setId( linkAnchor );
             }
@@ -434,7 +428,6 @@ public class FmlParser
         this.currentFaq = null;
         this.currentPart = null;
         this.buffer = null;
-        this.warnMessages = null;
         this.macroName = null;
         this.macroParameters = null;
     }
@@ -546,7 +539,6 @@ public class FmlParser
         throws ParseException
     {
         FmlContentParser xdocParser = new FmlContentParser();
-        xdocParser.enableLogging( getLog() );
 
         sink.head();
         sink.title();
@@ -688,55 +680,4 @@ public class FmlParser
         sink.link_();
         sink.paragraph_();
     }
-
-    /**
-     * If debug mode is enabled, log the <code>msg</code> as is, otherwise add unique msg in <code>warnMessages</code>.
-     *
-     * @param key not null
-     * @param msg not null
-     * @see #parse(Reader, Sink)
-     * @since 1.1.1
-     */
-    private void logMessage( String key, String msg )
-    {
-        msg = "[FML Parser] " + msg;
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( msg );
-
-            return;
-        }
-
-        if ( warnMessages == null )
-        {
-            warnMessages = new HashMap<>();
-        }
-
-        Set<String> set = warnMessages.get( key );
-        if ( set == null )
-        {
-            set = new TreeSet<>();
-        }
-        set.add( msg );
-        warnMessages.put( key, set );
-    }
-
-    /**
-     * @since 1.1.1
-     */
-    private void logWarnings()
-    {
-        if ( getLog().isWarnEnabled() && this.warnMessages != null && !isSecondParsing() )
-        {
-            for ( Map.Entry<String, Set<String>> entry : this.warnMessages.entrySet() )
-            {
-                for ( String msg : entry.getValue() )
-                {
-                    getLog().warn( msg );
-                }
-            }
-
-            this.warnMessages = null;
-        }
-    }
 }
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
index 4a21323..24b2f20 100644
--- a/doxia-modules/doxia-module-markdown/pom.xml
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -76,6 +76,11 @@ under the License.
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
 
@@ -135,6 +140,7 @@ under the License.
             <goal>site</goal>
           </goals>
         </configuration>
+        <!-- Disabling IT for now since we need a Doxia 2.0.0 compatible Site Plugin
         <executions>
           <execution>
             <id>integration-test</id>
@@ -144,6 +150,7 @@ under the License.
             </goals>
           </execution>
         </executions>
+         -->
       </plugin>
 
     </plugins>
diff --git a/doxia-modules/doxia-module-xdoc/pom.xml b/doxia-modules/doxia-module-xdoc/pom.xml
index 34b5a28..5f922d6 100644
--- a/doxia-modules/doxia-module-xdoc/pom.xml
+++ b/doxia-modules/doxia-module-xdoc/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -59,6 +63,11 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
index e1b8184..7eb2918 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
@@ -42,6 +42,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse an xdoc model and emit events into the specified doxia Sink.
@@ -54,6 +56,8 @@ public class XdocParser
     extends XhtmlBaseParser
     implements XdocMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XdocParser.class );
+
     /**
      * The source content of the input reader. Used to pass into macros.
      */
@@ -144,7 +148,7 @@ public class XdocParser
         {
             if ( hasTitle )
             {
-                getLog().warn( "<title> was already defined in <properties>, ignored <title> in <head>." );
+                LOGGER.warn( "<title> was already defined in <properties>, ignored <title> in <head>." );
 
                 try
                 {
@@ -231,13 +235,8 @@ public class XdocParser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":" + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized xdoc tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xdoc tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
index 5243c31..674ee30 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
@@ -71,10 +71,6 @@ public class XmlWriterXdocSink
         super.close();
 
         String xdocContent = xdocWriter.toString();
-        if ( getLog().isDebugEnabled() )
-        {
-            getLog().debug( "Xdoc content: " + xdocContent );
-        }
         StringWriter formattedContent = new StringWriter();
         try
         {
@@ -82,10 +78,6 @@ public class XmlWriterXdocSink
         }
         catch ( IOException e )
         {
-            if ( getLog().isDebugEnabled() )
-            {
-                getLog().error( "IOException: " + e.getMessage(), e );
-            }
             formattedContent = new StringWriter();
             formattedContent.write( xdocContent );
         }
diff --git a/doxia-modules/doxia-module-xhtml/pom.xml b/doxia-modules/doxia-module-xhtml/pom.xml
index 1eaf5b8..d60be28 100644
--- a/doxia-modules/doxia-module-xhtml/pom.xml
+++ b/doxia-modules/doxia-module-xhtml/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -52,5 +56,10 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
-</project>
\ No newline at end of file
+</project>
diff --git a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
index fbeeb9a..d337a26 100644
--- a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
+++ b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
@@ -40,6 +40,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse an xhtml model and emit events into a Doxia Sink.
@@ -52,6 +54,8 @@ public class XhtmlParser
     extends XhtmlBaseParser
     implements XhtmlMarkup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( XhtmlParser.class );
+
     /** For boxed verbatim. */
     protected boolean boxed;
 
@@ -166,14 +170,8 @@ public class XhtmlParser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized xhtml tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xhtml tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-modules/doxia-module-xhtml5/pom.xml b/doxia-modules/doxia-module-xhtml5/pom.xml
index b6080f8..49704f3 100644
--- a/doxia-modules/doxia-module-xhtml5/pom.xml
+++ b/doxia-modules/doxia-module-xhtml5/pom.xml
@@ -39,6 +39,10 @@ under the License.
 
   <dependencies>
     <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -52,5 +56,10 @@ under the License.
       <artifactId>xmlunit-matchers</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
index cf79171..be887a7 100644
--- a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
+++ b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
@@ -40,6 +40,8 @@ import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Parse an xhtml model and emit events into a Doxia Sink.
@@ -49,6 +51,8 @@ public class Xhtml5Parser
     extends Xhtml5BaseParser
     implements Xhtml5Markup
 {
+    private static final Logger LOGGER = LoggerFactory.getLogger( Xhtml5Parser.class );
+
     /**
      * The role hint for the {@link Xhtml5Parser} Plexus component.
      */
@@ -168,14 +172,8 @@ public class Xhtml5Parser
                 handleUnknown( parser, sink, TAG_TYPE_START );
             }
 
-            if ( getLog().isDebugEnabled() )
-            {
-                String position = "[" + parser.getLineNumber() + ":"
-                    + parser.getColumnNumber() + "]";
-                String tag = "<" + parser.getName() + ">";
-
-                getLog().debug( "Unrecognized xhtml5 tag: " + tag + " at " + position );
-            }
+            LOGGER.warn( "Unrecognized xhtml5 tag <{}> at [{}:{}]", parser.getName(),
+                    parser.getLineNumber(), parser.getColumnNumber() );
         }
     }
 
diff --git a/doxia-sink-api/pom.xml b/doxia-sink-api/pom.xml
index f662d12..38c0c9c 100644
--- a/doxia-sink-api/pom.xml
+++ b/doxia-sink-api/pom.xml
@@ -33,10 +33,4 @@ under the License.
   <name>Doxia :: Sink API</name>
   <description>Doxia Sink API.</description>
 
-  <dependencies>
-      <dependency>
-        <groupId>org.apache.maven.doxia</groupId>
-        <artifactId>doxia-logging-api</artifactId>
-      </dependency>
-  </dependencies>
 </project>
diff --git a/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java b/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
index 2eaf255..b5c4e5e 100644
--- a/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
+++ b/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.sink;
  * under the License.
  */
 
-import org.apache.maven.doxia.logging.LogEnabled;
-
 /**
  * A <i>Sink</i> consumes Doxia events to produce a resultant output format
  * (eg Docbook, PDF, XHTML...).
@@ -56,7 +54,6 @@ import org.apache.maven.doxia.logging.LogEnabled;
  * @author ltheussl
  */
 public interface Sink
-    extends LogEnabled
 {
     /** The Plexus Sink Role. */
     String ROLE = Sink.class.getName();
diff --git a/pom.xml b/pom.xml
index 125f059..88c131e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,7 +55,6 @@ under the License.
   </contributors>
 
   <modules>
-    <module>doxia-logging-api</module>
     <module>doxia-sink-api</module>
     <module>doxia-test-docs</module>
     <module>doxia-core</module>
@@ -88,6 +87,7 @@ under the License.
     <maven.site.path>doxia-archives/doxia-LATEST</maven.site.path>
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,MethodName,InnerAssignment,MagicNumber</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2021-11-28T20:51:17Z</project.build.outputTimestamp>
+    <slf4jVersion>1.7.32</slf4jVersion>
   </properties>
 
   <dependencyManagement>
@@ -100,11 +100,6 @@ under the License.
       </dependency>
       <dependency>
         <groupId>org.apache.maven.doxia</groupId>
-        <artifactId>doxia-logging-api</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.maven.doxia</groupId>
         <artifactId>doxia-test-docs</artifactId>
         <version>${project.version}</version>
       </dependency>
@@ -190,6 +185,18 @@ under the License.
         <version>2.6</version>
       </dependency>
 
+      <!--  SLF4J -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>${slf4jVersion}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-simple</artifactId>
+        <version>${slf4jVersion}</version>
+      </dependency>
+
     </dependencies>
   </dependencyManagement>
 
diff --git a/src/site/resources/images/doxia-deps.png b/src/site/resources/images/doxia-deps.png
index 403b355..ecce966 100644
Binary files a/src/site/resources/images/doxia-deps.png and b/src/site/resources/images/doxia-deps.png differ
diff --git a/src/site/xdoc/doxia-deps.odg b/src/site/xdoc/doxia-deps.odg
index e5b9992..3e9875f 100644
Binary files a/src/site/xdoc/doxia-deps.odg and b/src/site/xdoc/doxia-deps.odg differ
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index cc84617..0f2a25d 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -35,7 +35,7 @@
 
       <p>The actual component is the base component from the whole Doxia suite, with the core parser and sink APIs and
       their implementation in supported markup languages.</p>
-      
+
       <p>It is used by the <a href="../doxia-sitetools">Doxia Sitetools</a> extension,
       that adds site and documents support.</p>
 
@@ -43,7 +43,6 @@
         <img src="images/doxia-deps.png" border="0" usemap="#Doxia_dependencies" />
         <map name="Doxia_dependencies">
           <area shape="rect" coords="0,280,122,308"  href="./doxia-test-docs/" />
-          <area shape="rect" coords="324,363,481,403" href="./doxia-logging-api/" />
           <area shape="rect" coords="135,231,286,261" href="./doxia-sink-api/" />
           <area shape="rect" coords="165,180,286,209" href="./doxia-core/" />
           <area shape="rect" coords="41,25,118,88"    href="./doxia-modules/doxia-module-apt/" />
@@ -51,10 +50,10 @@
           <area shape="rect" coords="230,25,313,88"   href="./doxia-modules/doxia-module-xhtml/" />
           <area shape="rect" coords="325,25,407,88"   href="./doxia-modules/doxia-module-xhtml5/" />
           <area shape="rect" coords="135,25,213,88"   href="./doxia-modules/doxia-module-fml/" />
-          <area shape="rect" coords="304,75,336,107"  href="./doxia-modules/doxia-module-markdown/" />
+          <area shape="rect" coords="304,75,421,107"  href="./doxia-modules/doxia-module-markdown/" />
           <area shape="rect" coords="21,1,432,151"     href="./doxia-modules/" />
           <area shape="rect" coords="308,178,439,208"  href="https://github.com/vsch/flexmark-java" />
-          <area shape="rect" coords="521,364,676,403" href="https://codehaus-plexus.github.io/" />
+          <area shape="rect" coords="164,280,286,310" href="https://codehaus-plexus.github.io/" />
         </map>
       </p>
 

[maven-doxia] 02/02: [DOXIA-632] Remove remaining deprecated code

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch DOXIA-632
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 256c506f358693e9e18e9a10c986ffc30ae831ac
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Fri Dec 31 01:22:37 2021 +0100

    [DOXIA-632] Remove remaining deprecated code
    
    This closes #81
---
 .../org/apache/maven/doxia/macro/MacroRequest.java |   13 -
 .../apache/maven/doxia/parser/ParseException.java  |   30 -
 .../doxia/parser/module/AbstractParserModule.java  |   17 -
 .../doxia/sink/impl/AbstractBinarySinkFactory.java |   79 -
 .../maven/doxia/sink/impl/RandomAccessSink.java    | 2669 ++++++++++----------
 .../apache/maven/doxia/sink/impl/SinkAdapter.java  |   38 +-
 .../maven/doxia/sink/impl/Xhtml5BaseSink.java      |   50 -
 .../maven/doxia/sink/impl/XhtmlBaseSink.java       |   50 -
 .../org/apache/maven/doxia/util/DoxiaUtils.java    |   16 -
 .../apache/maven/doxia/macro/EchoMacroTest.java    |    7 +-
 .../doxia/macro/snippet/SnippetMacroTest.java      |    7 +-
 .../apache/maven/doxia/macro/toc/TocMacroTest.java |   14 +-
 .../maven/doxia/sink/impl/SinkAdapterTest.java     |   14 -
 .../doxia/sink/impl/SinkEventTestingSink.java      |   18 -
 .../org/apache/maven/doxia/sink/impl/TextSink.java |   20 +-
 .../sink/impl/WellformednessCheckingSink.java      |   20 +-
 .../maven/doxia/sink/impl/Xhtml5BaseSinkTest.java  |    2 +-
 .../maven/doxia/sink/impl/XhtmlBaseSinkTest.java   |    2 +-
 .../org/apache/maven/doxia/module/apt/AptSink.java |   24 +-
 .../apache/maven/doxia/module/apt/AptUtils.java    |   53 -
 .../maven/doxia/module/apt/AptUtilsTest.java       |   21 -
 .../apache/maven/doxia/module/xdoc/XdocSink.java   |   10 -
 .../maven/doxia/module/xdoc/XmlWriterXdocSink.java |   86 -
 .../doxia/module/xdoc/XmlWriterXdocSinkTest.java   |  115 -
 .../java/org/apache/maven/doxia/sink/Sink.java     |   24 -
 .../main/java/org/codehaus/doxia/sink/Sink.java    |   31 -
 26 files changed, 1356 insertions(+), 2074 deletions(-)

diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java
index d83ca19..4544f69 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroRequest.java
@@ -44,19 +44,6 @@ public class MacroRequest
     private Map<String, Object> parameters;
 
     /**
-     * Constructor.
-     *
-     * @param param A map of parameters.
-     * @param base The current base directory.
-     * @deprecated prefer other constructor
-     */
-    public MacroRequest( Map<String, Object> param, File base )
-    {
-        this.parameters = param;
-        this.basedir = base;
-    }
-
-    /**
      * <p>Constructor for MacroRequest.</p>
      *
      * @param sourceContent a {@link java.lang.String} object.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/ParseException.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/ParseException.java
index 96d1ea9..1db3051 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/ParseException.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/ParseException.java
@@ -105,19 +105,6 @@ public class ParseException
     }
 
     /**
-     * Constructs a new exception with the specified cause. The error message is
-     *  (cause == null ? null : cause.toString() ).
-     *
-     * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
-     * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
-     * @deprecated Using {@link #ParseException(Exception, int, int)} to specify the line and column number.
-     */
-    public ParseException( Exception e )
-    {
-        this( e, null, null, -1, -1 );
-    }
-
-    /**
      * Constructs a new exception with the specified cause, line number and column number. The error message is
      *  (cause == null ? null : cause.toString() ).
      *
@@ -136,23 +123,6 @@ public class ParseException
 
     /**
      * Construct a new <code>ParseException</code> with the specified cause,
-     * filename and linenumber.
-     *
-     * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
-     * (A null value is permitted, and indicates that the cause is nonexistent or unknown.)
-     * @param file Name of a file that couldn't be parsed.
-     * This can later be retrieved by the getFileName() method.
-     * @param line The line number where the parsing failed.
-     * This can later be retrieved by the getLineNumber() method.
-     * @deprecated Using {@link #ParseException(Exception, String, int, int)} to specify the column number.
-     */
-    public ParseException( Exception e, String file, int line )
-    {
-        this( e, null, file, line, -1 );
-    }
-
-    /**
-     * Construct a new <code>ParseException</code> with the specified cause,
      * filename, line number and column number.
      *
      * @param e the cause. This can be retrieved later by the <code>Throwable.getCause()</code> method.
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/AbstractParserModule.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/AbstractParserModule.java
index 1cb37ad..e231206 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/AbstractParserModule.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/AbstractParserModule.java
@@ -69,23 +69,6 @@ public abstract class AbstractParserModule
      * <p>Constructor for AbstractParserModule.</p>
      *
      * @param sourceDirectory not null
-     * @param extension not null
-     * @param parserId not null
-     * @since 1.1.1
-     * @deprecated can cause confusion with constructor with multiple extensions
-     */
-    protected AbstractParserModule( String sourceDirectory, String extension, String parserId )
-    {
-        super();
-        this.sourceDirectory = sourceDirectory;
-        this.extensions = new String[] { extension };
-        this.parserId = parserId;
-    }
-
-    /**
-     * <p>Constructor for AbstractParserModule.</p>
-     *
-     * @param sourceDirectory not null
      * @param parserId not null (usually equals sourceDirectory)
      * @param extensions not null
      * @since 1.7
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractBinarySinkFactory.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractBinarySinkFactory.java
deleted file mode 100644
index 2485c86..0000000
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractBinarySinkFactory.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.apache.maven.doxia.sink.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkFactory;
-import org.codehaus.plexus.util.WriterFactory;
-
-/**
- * An abstract <code>SinkFactory</code> for binary output.
- *
- * @author <a href="mailto:hboutemy@apache.org">Hervé Boutemy</a>
- * @since 1.1
- */
-public abstract class AbstractBinarySinkFactory
-    implements SinkFactory
-{
-    /** {@inheritDoc} */
-    public Sink createSink( File outputDir, String outputName )
-        throws IOException
-    {
-        return createSink( outputDir, outputName, WriterFactory.UTF_8 );
-    }
-
-    /** {@inheritDoc} */
-    public Sink createSink( File outputDir, String outputName, String encoding )
-        throws IOException
-    {
-        if ( outputDir == null )
-        {
-            throw new IllegalArgumentException( "outputDir cannot be null." );
-        }
-
-        if ( !outputDir.exists() )
-        {
-            outputDir.mkdirs();
-        }
-        else
-        {
-            if ( !outputDir.isDirectory() )
-            {
-                throw new IllegalArgumentException( "The dir '" + outputDir + "' is not a directory." );
-            }
-        }
-
-        OutputStream out = new FileOutputStream( new File( outputDir, outputName ) );
-
-        return createSink( out, encoding );
-    }
-
-    /** {@inheritDoc} */
-    public Sink createSink( OutputStream out )
-        throws IOException
-    {
-        return createSink( out, WriterFactory.UTF_8 );
-    }
-}
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
index 85665b2..3cbd943 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/RandomAccessSink.java
@@ -1,1345 +1,1324 @@
-package org.apache.maven.doxia.sink.impl;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkEventAttributes;
-import org.apache.maven.doxia.sink.SinkFactory;
-
-/**
- * The RandomAccessSink provides the ability to create a {@link Sink} with hooks.
- * A page can be prepared by first creating its structure and specifying the positions of these hooks.
- * After specifying the structure, the page can be filled with content from one or more models.
- * These hooks can prevent you to have to loop over the model multiple times to build the page as desired.
- *
- * @author Robert Scholte
- * @since 1.3
- */
-public class RandomAccessSink
-    implements Sink
-{
-    private SinkFactory sinkFactory;
-
-    private String encoding;
-
-    private OutputStream coreOutputStream;
-
-    private Sink coreSink;
-
-    private List<Sink> sinks = new ArrayList<>();
-
-    private List<ByteArrayOutputStream> outputStreams = new ArrayList<>();
-
-    private Sink currentSink;
-
-    /**
-     * <p>Constructor for RandomAccessSink.</p>
-     *
-     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
-     * @param stream a {@link java.io.OutputStream} object.
-     * @throws java.io.IOException if any.
-     */
-    public RandomAccessSink( SinkFactory sinkFactory, OutputStream stream )
-        throws IOException
-    {
-        this.sinkFactory = sinkFactory;
-        this.coreOutputStream = stream;
-        this.currentSink = sinkFactory.createSink( stream );
-        this.coreSink = this.currentSink;
-    }
-
-    /**
-     * <p>Constructor for RandomAccessSink.</p>
-     *
-     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
-     * @param stream a {@link java.io.OutputStream} object.
-     * @param encoding a {@link java.lang.String} object.
-     * @throws java.io.IOException if any.
-     */
-    public RandomAccessSink( SinkFactory sinkFactory, OutputStream stream, String encoding )
-        throws IOException
-    {
-        this.sinkFactory = sinkFactory;
-        this.coreOutputStream = stream;
-        this.encoding = encoding;
-        this.currentSink = sinkFactory.createSink( stream, encoding );
-        this.coreSink = this.currentSink;
-    }
-
-    /**
-     * <p>Constructor for RandomAccessSink.</p>
-     *
-     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
-     * @param outputDirectory a {@link java.io.File} object.
-     * @param outputName a {@link java.lang.String} object.
-     * @throws java.io.IOException if any.
-     */
-    public RandomAccessSink( SinkFactory sinkFactory, File outputDirectory, String outputName )
-        throws IOException
-    {
-        this.sinkFactory = sinkFactory;
-        this.coreOutputStream = new FileOutputStream( new File( outputDirectory, outputName ) );
-        this.currentSink = sinkFactory.createSink( coreOutputStream );
-        this.coreSink = this.currentSink;
-    }
-
-    /**
-     * <p>Constructor for RandomAccessSink.</p>
-     *
-     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
-     * @param outputDirectory a {@link java.io.File} object.
-     * @param outputName a {@link java.lang.String} object.
-     * @param encoding a {@link java.lang.String} object.
-     * @throws java.io.IOException if any.
-     */
-    public RandomAccessSink( SinkFactory sinkFactory, File outputDirectory, String outputName, String encoding )
-        throws IOException
-    {
-        this.sinkFactory = sinkFactory;
-        this.coreOutputStream = new FileOutputStream( new File( outputDirectory, outputName ) );
-        this.encoding = encoding;
-        this.currentSink = sinkFactory.createSink( coreOutputStream, encoding );
-        this.coreSink = this.currentSink;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void address()
-    {
-        currentSink.address();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void address( SinkEventAttributes attributes )
-    {
-        currentSink.address( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void address_()
-    {
-        currentSink.address_();
-    }
-
-    /**
-     * By calling this method a sink reference is added at the current position. You can write to both the new sink
-     * reference and the original sink. After flushing all sinks will be flushed in the right order.
-     *
-     * @return a subsink reference you can write to
-     */
-    public Sink addSinkHook()
-    {
-        Sink subSink = null;
-        try
-        {
-            ByteArrayOutputStream subOut = new ByteArrayOutputStream();
-            ByteArrayOutputStream newOut = new ByteArrayOutputStream();
-
-            outputStreams.add( subOut );
-            outputStreams.add( newOut );
-
-            if ( encoding != null )
-            {
-                subSink = sinkFactory.createSink( subOut, encoding );
-                currentSink = sinkFactory.createSink( newOut, encoding );
-            }
-            else
-            {
-                subSink = sinkFactory.createSink( subOut );
-                currentSink = sinkFactory.createSink( newOut );
-            }
-            sinks.add( subSink );
-            sinks.add( currentSink );
-        }
-        catch ( IOException e )
-        {
-            // IOException can only be caused by our own ByteArrayOutputStream
-        }
-        return subSink;
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void anchor( String name )
-    {
-        currentSink.anchor( name );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void anchor( String name, SinkEventAttributes attributes )
-    {
-        currentSink.anchor( name, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void anchor_()
-    {
-        currentSink.anchor_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void article()
-    {
-        currentSink.article();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void article( SinkEventAttributes attributes )
-    {
-        currentSink.article( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void article_()
-    {
-        currentSink.article_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void author()
-    {
-        currentSink.author();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void author( SinkEventAttributes attributes )
-    {
-        currentSink.author( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void author_()
-    {
-        currentSink.author_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void blockquote()
-    {
-        currentSink.blockquote();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void blockquote( SinkEventAttributes attributes )
-    {
-        currentSink.blockquote( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void blockquote_()
-    {
-        currentSink.blockquote_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void body()
-    {
-        currentSink.body();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void body( SinkEventAttributes attributes )
-    {
-        currentSink.body( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void body_()
-    {
-        currentSink.body_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void bold()
-    {
-        currentSink.bold();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void bold_()
-    {
-        currentSink.bold_();
-    }
-
-    /**
-     * Close all sinks
-     */
-    public void close()
-    {
-        for ( Sink sink  : sinks )
-        {
-            // sink is responsible for closing it's stream
-            sink.close();
-        }
-        coreSink.close();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void comment( String comment )
-    {
-        currentSink.comment( comment );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void content()
-    {
-        currentSink.content();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void content( SinkEventAttributes attributes )
-    {
-        currentSink.content( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void content_()
-    {
-        currentSink.content_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void data( String value )
-    {
-        currentSink.data( value );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void data( String value, SinkEventAttributes attributes )
-    {
-        currentSink.data( value, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void data_()
-    {
-        currentSink.data_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void date()
-    {
-        currentSink.date();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void date( SinkEventAttributes attributes )
-    {
-        currentSink.date( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void date_()
-    {
-        currentSink.date_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definedTerm()
-    {
-        currentSink.definedTerm();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definedTerm( SinkEventAttributes attributes )
-    {
-        currentSink.definedTerm( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definedTerm_()
-    {
-        currentSink.definedTerm_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definition()
-    {
-        currentSink.definition();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definition( SinkEventAttributes attributes )
-    {
-        currentSink.definition( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definitionList()
-    {
-        currentSink.definitionList();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definitionList( SinkEventAttributes attributes )
-    {
-        currentSink.definitionList( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definitionListItem()
-    {
-        currentSink.definitionListItem();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definitionListItem( SinkEventAttributes attributes )
-    {
-        currentSink.definitionListItem( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definitionListItem_()
-    {
-        currentSink.definitionListItem_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definitionList_()
-    {
-        currentSink.definitionList_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void definition_()
-    {
-        currentSink.definition_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void division()
-    {
-        currentSink.division();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void division( SinkEventAttributes attributes )
-    {
-        currentSink.division( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void division_()
-    {
-        currentSink.division_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figure()
-    {
-        currentSink.figure();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figure( SinkEventAttributes attributes )
-    {
-        currentSink.figure( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figureCaption()
-    {
-        currentSink.figureCaption();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figureCaption( SinkEventAttributes attributes )
-    {
-        currentSink.figureCaption( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figureCaption_()
-    {
-        currentSink.figureCaption_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figureGraphics( String name )
-    {
-        currentSink.figureGraphics( name );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figureGraphics( String src, SinkEventAttributes attributes )
-    {
-        currentSink.figureGraphics( src, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void figure_()
-    {
-        currentSink.figure_();
-    }
-
-    /**
-     * Flush all sinks
-     */
-    public void flush()
-    {
-        for ( int i = 0; i < sinks.size(); i++ )
-        {
-            // first flush to get complete buffer
-            // sink is responsible for flushing it's stream
-            Sink sink = sinks.get( i );
-            sink.flush();
-
-            ByteArrayOutputStream stream = outputStreams.get( i );
-            try
-            {
-                coreOutputStream.write( stream.toByteArray() );
-            }
-            catch ( IOException e )
-            {
-                // @todo
-            }
-        }
-        coreSink.flush();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void footer()
-    {
-        currentSink.footer();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void footer( SinkEventAttributes attributes )
-    {
-        currentSink.footer( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void footer_()
-    {
-        currentSink.footer_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void head()
-    {
-        currentSink.head();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void head( SinkEventAttributes attributes )
-    {
-        currentSink.head( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void head_()
-    {
-        currentSink.head_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void header()
-    {
-        currentSink.header();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void header( SinkEventAttributes attributes )
-    {
-        currentSink.header( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void header_()
-    {
-        currentSink.header_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void horizontalRule()
-    {
-        currentSink.horizontalRule();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void horizontalRule( SinkEventAttributes attributes )
-    {
-        currentSink.horizontalRule( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void inline()
-    {
-        currentSink.inline();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void inline( SinkEventAttributes attributes )
-    {
-        currentSink.inline( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void inline_()
-    {
-        currentSink.inline_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void italic()
-    {
-        currentSink.italic();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void italic_()
-    {
-        currentSink.italic_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void lineBreak()
-    {
-        currentSink.lineBreak();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void lineBreak( SinkEventAttributes attributes )
-    {
-        currentSink.lineBreak( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void lineBreakOpportunity()
-    {
-        currentSink.lineBreakOpportunity();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void lineBreakOpportunity( SinkEventAttributes attributes )
-    {
-        currentSink.lineBreakOpportunity( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void link( String name )
-    {
-        currentSink.link( name );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void link( String name, SinkEventAttributes attributes )
-    {
-        currentSink.link( name, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void link_()
-    {
-        currentSink.link_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void list()
-    {
-        currentSink.list();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void list( SinkEventAttributes attributes )
-    {
-        currentSink.list( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void listItem()
-    {
-        currentSink.listItem();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void listItem( SinkEventAttributes attributes )
-    {
-        currentSink.listItem( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void listItem_()
-    {
-        currentSink.listItem_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void list_()
-    {
-        currentSink.list_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void monospaced()
-    {
-        currentSink.monospaced();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void monospaced_()
-    {
-        currentSink.monospaced_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void navigation()
-    {
-        currentSink.navigation();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void navigation( SinkEventAttributes attributes )
-    {
-        currentSink.navigation( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void navigation_()
-    {
-        currentSink.navigation_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void nonBreakingSpace()
-    {
-        currentSink.nonBreakingSpace();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void numberedList( int numbering )
-    {
-        currentSink.numberedList( numbering );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void numberedList( int numbering, SinkEventAttributes attributes )
-    {
-        currentSink.numberedList( numbering, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void numberedListItem()
-    {
-        currentSink.numberedListItem();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void numberedListItem( SinkEventAttributes attributes )
-    {
-        currentSink.numberedListItem( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void numberedListItem_()
-    {
-        currentSink.numberedListItem_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void numberedList_()
-    {
-        currentSink.numberedList_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void pageBreak()
-    {
-        currentSink.pageBreak();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void paragraph()
-    {
-        currentSink.paragraph();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void paragraph( SinkEventAttributes attributes )
-    {
-        currentSink.paragraph( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void paragraph_()
-    {
-        currentSink.paragraph_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void rawText( String text )
-    {
-        currentSink.rawText( text );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section( int level, SinkEventAttributes attributes )
-    {
-        currentSink.section( level, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section1()
-    {
-        currentSink.section1();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section1_()
-    {
-        currentSink.section1_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section2()
-    {
-        currentSink.section2();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section2_()
-    {
-        currentSink.section2_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section3()
-    {
-        currentSink.section3();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section3_()
-    {
-        currentSink.section3_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section4()
-    {
-        currentSink.section4();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section4_()
-    {
-        currentSink.section4_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section5()
-    {
-        currentSink.section5();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section5_()
-    {
-        currentSink.section5_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section6()
-    {
-        currentSink.section5();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section6_()
-    {
-        currentSink.section5_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle()
-    {
-        currentSink.sectionTitle();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle( int level, SinkEventAttributes attributes )
-    {
-        currentSink.sectionTitle( level, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle1()
-    {
-        currentSink.sectionTitle1();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle1_()
-    {
-        currentSink.sectionTitle1_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle2()
-    {
-        currentSink.sectionTitle2();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle2_()
-    {
-        currentSink.sectionTitle2_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle3()
-    {
-        currentSink.sectionTitle3();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle3_()
-    {
-        currentSink.sectionTitle3_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle4()
-    {
-        currentSink.sectionTitle4();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle4_()
-    {
-        currentSink.sectionTitle4_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle5()
-    {
-        currentSink.sectionTitle5();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle5_()
-    {
-        currentSink.sectionTitle5_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle6()
-    {
-        currentSink.sectionTitle5();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle6_()
-    {
-        currentSink.sectionTitle5_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle_()
-    {
-        currentSink.sectionTitle_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sectionTitle_( int level )
-    {
-        currentSink.sectionTitle_( level );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void section_( int level )
-    {
-        currentSink.section_( level );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sidebar()
-    {
-        currentSink.sidebar();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sidebar( SinkEventAttributes attributes )
-    {
-        currentSink.sidebar( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void sidebar_()
-    {
-        currentSink.sidebar_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void table()
-    {
-        currentSink.table();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void table( SinkEventAttributes attributes )
-    {
-        currentSink.table( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCaption()
-    {
-        currentSink.tableCaption();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCaption( SinkEventAttributes attributes )
-    {
-        currentSink.tableCaption( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCaption_()
-    {
-        currentSink.tableCaption_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCell()
-    {
-        currentSink.tableCell();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCell( String width )
-    {
-        currentSink.tableCell( width );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCell( SinkEventAttributes attributes )
-    {
-        currentSink.tableCell( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableCell_()
-    {
-        currentSink.tableCell_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableHeaderCell()
-    {
-        currentSink.tableHeaderCell();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableHeaderCell( String width )
-    {
-        currentSink.tableHeaderCell( width );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableHeaderCell( SinkEventAttributes attributes )
-    {
-        currentSink.tableHeaderCell( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableHeaderCell_()
-    {
-        currentSink.tableHeaderCell_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableRow()
-    {
-        currentSink.tableRow();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableRow( SinkEventAttributes attributes )
-    {
-        currentSink.tableRow( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableRow_()
-    {
-        currentSink.tableRow_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableRows( int[] justification, boolean grid )
-    {
-        currentSink.tableRows( justification, grid );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableRows_()
-    {
-        currentSink.tableRows_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void table_()
-    {
-        currentSink.table_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void text( String text )
-    {
-        currentSink.text( text );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void text( String text, SinkEventAttributes attributes )
-    {
-        currentSink.text( text, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void time( String datetime )
-    {
-        currentSink.time( datetime );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void time( String datetime, SinkEventAttributes attributes )
-    {
-        currentSink.time( datetime, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void time_()
-    {
-        currentSink.time_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void title()
-    {
-        currentSink.title();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void title( SinkEventAttributes attributes )
-    {
-        currentSink.title( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void title_()
-    {
-        currentSink.title_();
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes )
-    {
-        currentSink.unknown( name, requiredParams, attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void verbatim( boolean boxed )
-    {
-        currentSink.verbatim( boxed );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void verbatim( SinkEventAttributes attributes )
-    {
-        currentSink.verbatim( attributes );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void verbatim_()
-    {
-        currentSink.verbatim_();
-    }
-}
+package org.apache.maven.doxia.sink.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.doxia.sink.Sink;
+import org.apache.maven.doxia.sink.SinkEventAttributes;
+import org.apache.maven.doxia.sink.SinkFactory;
+
+/**
+ * The RandomAccessSink provides the ability to create a {@link Sink} with hooks.
+ * A page can be prepared by first creating its structure and specifying the positions of these hooks.
+ * After specifying the structure, the page can be filled with content from one or more models.
+ * These hooks can prevent you to have to loop over the model multiple times to build the page as desired.
+ *
+ * @author Robert Scholte
+ * @since 1.3
+ */
+public class RandomAccessSink
+    implements Sink
+{
+    private SinkFactory sinkFactory;
+
+    private String encoding;
+
+    private OutputStream coreOutputStream;
+
+    private Sink coreSink;
+
+    private List<Sink> sinks = new ArrayList<>();
+
+    private List<ByteArrayOutputStream> outputStreams = new ArrayList<>();
+
+    private Sink currentSink;
+
+    /**
+     * <p>Constructor for RandomAccessSink.</p>
+     *
+     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
+     * @param stream a {@link java.io.OutputStream} object.
+     * @throws java.io.IOException if any.
+     */
+    public RandomAccessSink( SinkFactory sinkFactory, OutputStream stream )
+        throws IOException
+    {
+        this.sinkFactory = sinkFactory;
+        this.coreOutputStream = stream;
+        this.currentSink = sinkFactory.createSink( stream );
+        this.coreSink = this.currentSink;
+    }
+
+    /**
+     * <p>Constructor for RandomAccessSink.</p>
+     *
+     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
+     * @param stream a {@link java.io.OutputStream} object.
+     * @param encoding a {@link java.lang.String} object.
+     * @throws java.io.IOException if any.
+     */
+    public RandomAccessSink( SinkFactory sinkFactory, OutputStream stream, String encoding )
+        throws IOException
+    {
+        this.sinkFactory = sinkFactory;
+        this.coreOutputStream = stream;
+        this.encoding = encoding;
+        this.currentSink = sinkFactory.createSink( stream, encoding );
+        this.coreSink = this.currentSink;
+    }
+
+    /**
+     * <p>Constructor for RandomAccessSink.</p>
+     *
+     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
+     * @param outputDirectory a {@link java.io.File} object.
+     * @param outputName a {@link java.lang.String} object.
+     * @throws java.io.IOException if any.
+     */
+    public RandomAccessSink( SinkFactory sinkFactory, File outputDirectory, String outputName )
+        throws IOException
+    {
+        this.sinkFactory = sinkFactory;
+        this.coreOutputStream = new FileOutputStream( new File( outputDirectory, outputName ) );
+        this.currentSink = sinkFactory.createSink( coreOutputStream );
+        this.coreSink = this.currentSink;
+    }
+
+    /**
+     * <p>Constructor for RandomAccessSink.</p>
+     *
+     * @param sinkFactory a {@link org.apache.maven.doxia.sink.SinkFactory} object.
+     * @param outputDirectory a {@link java.io.File} object.
+     * @param outputName a {@link java.lang.String} object.
+     * @param encoding a {@link java.lang.String} object.
+     * @throws java.io.IOException if any.
+     */
+    public RandomAccessSink( SinkFactory sinkFactory, File outputDirectory, String outputName, String encoding )
+        throws IOException
+    {
+        this.sinkFactory = sinkFactory;
+        this.coreOutputStream = new FileOutputStream( new File( outputDirectory, outputName ) );
+        this.encoding = encoding;
+        this.currentSink = sinkFactory.createSink( coreOutputStream, encoding );
+        this.coreSink = this.currentSink;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void address()
+    {
+        currentSink.address();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void address( SinkEventAttributes attributes )
+    {
+        currentSink.address( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void address_()
+    {
+        currentSink.address_();
+    }
+
+    /**
+     * By calling this method a sink reference is added at the current position. You can write to both the new sink
+     * reference and the original sink. After flushing all sinks will be flushed in the right order.
+     *
+     * @return a subsink reference you can write to
+     */
+    public Sink addSinkHook()
+    {
+        Sink subSink = null;
+        try
+        {
+            ByteArrayOutputStream subOut = new ByteArrayOutputStream();
+            ByteArrayOutputStream newOut = new ByteArrayOutputStream();
+
+            outputStreams.add( subOut );
+            outputStreams.add( newOut );
+
+            if ( encoding != null )
+            {
+                subSink = sinkFactory.createSink( subOut, encoding );
+                currentSink = sinkFactory.createSink( newOut, encoding );
+            }
+            else
+            {
+                subSink = sinkFactory.createSink( subOut );
+                currentSink = sinkFactory.createSink( newOut );
+            }
+            sinks.add( subSink );
+            sinks.add( currentSink );
+        }
+        catch ( IOException e )
+        {
+            // IOException can only be caused by our own ByteArrayOutputStream
+        }
+        return subSink;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void anchor( String name )
+    {
+        currentSink.anchor( name );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void anchor( String name, SinkEventAttributes attributes )
+    {
+        currentSink.anchor( name, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void anchor_()
+    {
+        currentSink.anchor_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void article()
+    {
+        currentSink.article();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void article( SinkEventAttributes attributes )
+    {
+        currentSink.article( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void article_()
+    {
+        currentSink.article_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void author()
+    {
+        currentSink.author();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void author( SinkEventAttributes attributes )
+    {
+        currentSink.author( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void author_()
+    {
+        currentSink.author_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void blockquote()
+    {
+        currentSink.blockquote();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void blockquote( SinkEventAttributes attributes )
+    {
+        currentSink.blockquote( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void blockquote_()
+    {
+        currentSink.blockquote_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void body()
+    {
+        currentSink.body();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void body( SinkEventAttributes attributes )
+    {
+        currentSink.body( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void body_()
+    {
+        currentSink.body_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void bold()
+    {
+        currentSink.bold();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void bold_()
+    {
+        currentSink.bold_();
+    }
+
+    /**
+     * Close all sinks
+     */
+    public void close()
+    {
+        for ( Sink sink  : sinks )
+        {
+            // sink is responsible for closing it's stream
+            sink.close();
+        }
+        coreSink.close();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void comment( String comment )
+    {
+        currentSink.comment( comment );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void content()
+    {
+        currentSink.content();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void content( SinkEventAttributes attributes )
+    {
+        currentSink.content( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void content_()
+    {
+        currentSink.content_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void data( String value )
+    {
+        currentSink.data( value );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void data( String value, SinkEventAttributes attributes )
+    {
+        currentSink.data( value, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void data_()
+    {
+        currentSink.data_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void date()
+    {
+        currentSink.date();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void date( SinkEventAttributes attributes )
+    {
+        currentSink.date( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void date_()
+    {
+        currentSink.date_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definedTerm()
+    {
+        currentSink.definedTerm();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definedTerm( SinkEventAttributes attributes )
+    {
+        currentSink.definedTerm( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definedTerm_()
+    {
+        currentSink.definedTerm_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definition()
+    {
+        currentSink.definition();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definition( SinkEventAttributes attributes )
+    {
+        currentSink.definition( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definitionList()
+    {
+        currentSink.definitionList();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definitionList( SinkEventAttributes attributes )
+    {
+        currentSink.definitionList( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definitionListItem()
+    {
+        currentSink.definitionListItem();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definitionListItem( SinkEventAttributes attributes )
+    {
+        currentSink.definitionListItem( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definitionListItem_()
+    {
+        currentSink.definitionListItem_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definitionList_()
+    {
+        currentSink.definitionList_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void definition_()
+    {
+        currentSink.definition_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void division()
+    {
+        currentSink.division();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void division( SinkEventAttributes attributes )
+    {
+        currentSink.division( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void division_()
+    {
+        currentSink.division_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figure()
+    {
+        currentSink.figure();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figure( SinkEventAttributes attributes )
+    {
+        currentSink.figure( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figureCaption()
+    {
+        currentSink.figureCaption();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figureCaption( SinkEventAttributes attributes )
+    {
+        currentSink.figureCaption( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figureCaption_()
+    {
+        currentSink.figureCaption_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figureGraphics( String name )
+    {
+        currentSink.figureGraphics( name );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figureGraphics( String src, SinkEventAttributes attributes )
+    {
+        currentSink.figureGraphics( src, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void figure_()
+    {
+        currentSink.figure_();
+    }
+
+    /**
+     * Flush all sinks
+     */
+    public void flush()
+    {
+        for ( int i = 0; i < sinks.size(); i++ )
+        {
+            // first flush to get complete buffer
+            // sink is responsible for flushing it's stream
+            Sink sink = sinks.get( i );
+            sink.flush();
+
+            ByteArrayOutputStream stream = outputStreams.get( i );
+            try
+            {
+                coreOutputStream.write( stream.toByteArray() );
+            }
+            catch ( IOException e )
+            {
+                // @todo
+            }
+        }
+        coreSink.flush();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void footer()
+    {
+        currentSink.footer();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void footer( SinkEventAttributes attributes )
+    {
+        currentSink.footer( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void footer_()
+    {
+        currentSink.footer_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void head()
+    {
+        currentSink.head();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void head( SinkEventAttributes attributes )
+    {
+        currentSink.head( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void head_()
+    {
+        currentSink.head_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void header()
+    {
+        currentSink.header();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void header( SinkEventAttributes attributes )
+    {
+        currentSink.header( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void header_()
+    {
+        currentSink.header_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void horizontalRule()
+    {
+        currentSink.horizontalRule();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void horizontalRule( SinkEventAttributes attributes )
+    {
+        currentSink.horizontalRule( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void inline()
+    {
+        currentSink.inline();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void inline( SinkEventAttributes attributes )
+    {
+        currentSink.inline( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void inline_()
+    {
+        currentSink.inline_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void italic()
+    {
+        currentSink.italic();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void italic_()
+    {
+        currentSink.italic_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void lineBreak()
+    {
+        currentSink.lineBreak();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void lineBreak( SinkEventAttributes attributes )
+    {
+        currentSink.lineBreak( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void lineBreakOpportunity()
+    {
+        currentSink.lineBreakOpportunity();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void lineBreakOpportunity( SinkEventAttributes attributes )
+    {
+        currentSink.lineBreakOpportunity( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void link( String name )
+    {
+        currentSink.link( name );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void link( String name, SinkEventAttributes attributes )
+    {
+        currentSink.link( name, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void link_()
+    {
+        currentSink.link_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void list()
+    {
+        currentSink.list();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void list( SinkEventAttributes attributes )
+    {
+        currentSink.list( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void listItem()
+    {
+        currentSink.listItem();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void listItem( SinkEventAttributes attributes )
+    {
+        currentSink.listItem( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void listItem_()
+    {
+        currentSink.listItem_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void list_()
+    {
+        currentSink.list_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void monospaced()
+    {
+        currentSink.monospaced();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void monospaced_()
+    {
+        currentSink.monospaced_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void navigation()
+    {
+        currentSink.navigation();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void navigation( SinkEventAttributes attributes )
+    {
+        currentSink.navigation( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void navigation_()
+    {
+        currentSink.navigation_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void nonBreakingSpace()
+    {
+        currentSink.nonBreakingSpace();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void numberedList( int numbering )
+    {
+        currentSink.numberedList( numbering );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void numberedList( int numbering, SinkEventAttributes attributes )
+    {
+        currentSink.numberedList( numbering, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void numberedListItem()
+    {
+        currentSink.numberedListItem();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void numberedListItem( SinkEventAttributes attributes )
+    {
+        currentSink.numberedListItem( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void numberedListItem_()
+    {
+        currentSink.numberedListItem_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void numberedList_()
+    {
+        currentSink.numberedList_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void pageBreak()
+    {
+        currentSink.pageBreak();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void paragraph()
+    {
+        currentSink.paragraph();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void paragraph( SinkEventAttributes attributes )
+    {
+        currentSink.paragraph( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void paragraph_()
+    {
+        currentSink.paragraph_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void rawText( String text )
+    {
+        currentSink.rawText( text );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section( int level, SinkEventAttributes attributes )
+    {
+        currentSink.section( level, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section1()
+    {
+        currentSink.section1();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section1_()
+    {
+        currentSink.section1_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section2()
+    {
+        currentSink.section2();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section2_()
+    {
+        currentSink.section2_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section3()
+    {
+        currentSink.section3();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section3_()
+    {
+        currentSink.section3_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section4()
+    {
+        currentSink.section4();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section4_()
+    {
+        currentSink.section4_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section5()
+    {
+        currentSink.section5();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section5_()
+    {
+        currentSink.section5_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section6()
+    {
+        currentSink.section5();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section6_()
+    {
+        currentSink.section5_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle()
+    {
+        currentSink.sectionTitle();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle( int level, SinkEventAttributes attributes )
+    {
+        currentSink.sectionTitle( level, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle1()
+    {
+        currentSink.sectionTitle1();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle1_()
+    {
+        currentSink.sectionTitle1_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle2()
+    {
+        currentSink.sectionTitle2();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle2_()
+    {
+        currentSink.sectionTitle2_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle3()
+    {
+        currentSink.sectionTitle3();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle3_()
+    {
+        currentSink.sectionTitle3_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle4()
+    {
+        currentSink.sectionTitle4();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle4_()
+    {
+        currentSink.sectionTitle4_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle5()
+    {
+        currentSink.sectionTitle5();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle5_()
+    {
+        currentSink.sectionTitle5_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle6()
+    {
+        currentSink.sectionTitle5();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle6_()
+    {
+        currentSink.sectionTitle5_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle_()
+    {
+        currentSink.sectionTitle_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sectionTitle_( int level )
+    {
+        currentSink.sectionTitle_( level );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void section_( int level )
+    {
+        currentSink.section_( level );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sidebar()
+    {
+        currentSink.sidebar();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sidebar( SinkEventAttributes attributes )
+    {
+        currentSink.sidebar( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void sidebar_()
+    {
+        currentSink.sidebar_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void table()
+    {
+        currentSink.table();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void table( SinkEventAttributes attributes )
+    {
+        currentSink.table( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableCaption()
+    {
+        currentSink.tableCaption();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableCaption( SinkEventAttributes attributes )
+    {
+        currentSink.tableCaption( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableCaption_()
+    {
+        currentSink.tableCaption_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableCell()
+    {
+        currentSink.tableCell();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableCell( SinkEventAttributes attributes )
+    {
+        currentSink.tableCell( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableCell_()
+    {
+        currentSink.tableCell_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableHeaderCell()
+    {
+        currentSink.tableHeaderCell();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableHeaderCell( SinkEventAttributes attributes )
+    {
+        currentSink.tableHeaderCell( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableHeaderCell_()
+    {
+        currentSink.tableHeaderCell_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableRow()
+    {
+        currentSink.tableRow();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableRow( SinkEventAttributes attributes )
+    {
+        currentSink.tableRow( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableRow_()
+    {
+        currentSink.tableRow_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableRows( int[] justification, boolean grid )
+    {
+        currentSink.tableRows( justification, grid );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void tableRows_()
+    {
+        currentSink.tableRows_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void table_()
+    {
+        currentSink.table_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void text( String text )
+    {
+        currentSink.text( text );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void text( String text, SinkEventAttributes attributes )
+    {
+        currentSink.text( text, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void time( String datetime )
+    {
+        currentSink.time( datetime );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void time( String datetime, SinkEventAttributes attributes )
+    {
+        currentSink.time( datetime, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void time_()
+    {
+        currentSink.time_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void title()
+    {
+        currentSink.title();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void title( SinkEventAttributes attributes )
+    {
+        currentSink.title( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void title_()
+    {
+        currentSink.title_();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void unknown( String name, Object[] requiredParams, SinkEventAttributes attributes )
+    {
+        currentSink.unknown( name, requiredParams, attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void verbatim( SinkEventAttributes attributes )
+    {
+        currentSink.verbatim( attributes );
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void verbatim_()
+    {
+        currentSink.verbatim_();
+    }
+}
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkAdapter.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkAdapter.java
index b2c04c9..692970f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkAdapter.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/SinkAdapter.java
@@ -19,8 +19,6 @@ package org.apache.maven.doxia.sink.impl;
  * under the License.
  */
 
-import javax.swing.text.MutableAttributeSet;
-
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 
 /**
@@ -172,14 +170,14 @@ public class SinkAdapter
     {
         // nop
     }
-    
+
     /** {@inheritDoc} */
     @Override
     public void section6()
     {
         // nop
     }
-    
+
     /** {@inheritDoc} */
     @Override
     public void section6_()
@@ -609,13 +607,6 @@ public class SinkAdapter
 
     /** {@inheritDoc} */
     @Override
-    public void verbatim( boolean boxed )
-    {
-        // nop
-    }
-
-    /** {@inheritDoc} */
-    @Override
     public void verbatim_()
     {
         // nop
@@ -658,13 +649,6 @@ public class SinkAdapter
 
     /** {@inheritDoc} */
     @Override
-    public void tableCell( String width )
-    {
-        // nop
-    }
-
-    /** {@inheritDoc} */
-    @Override
     public void tableCell_()
     {
         // nop
@@ -679,13 +663,6 @@ public class SinkAdapter
 
     /** {@inheritDoc} */
     @Override
-    public void tableHeaderCell( String width )
-    {
-        // nop
-    }
-
-    /** {@inheritDoc} */
-    @Override
     public void tableHeaderCell_()
     {
         // nop
@@ -1204,16 +1181,7 @@ public class SinkAdapter
     @Override
     public void verbatim( SinkEventAttributes attributes )
     {
-        MutableAttributeSet atts = SinkUtils.filterAttributes( attributes, SinkUtils.SINK_VERBATIM_ATTRIBUTES );
-
-        boolean boxed = false;
-
-        if ( atts != null && atts.isDefined( SinkEventAttributes.DECORATION ) )
-        {
-            boxed = "boxed".equals( atts.getAttribute( SinkEventAttributes.DECORATION ).toString() );
-        }
-
-        verbatim( boxed );
+        // nop
     }
 
     /** {@inheritDoc} */
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
index dbf2884..36f944e 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSink.java
@@ -240,16 +240,6 @@ public class Xhtml5BaseSink
         return Integer.parseInt( this.cellCountStack.getLast().toString() );
     }
 
-    /**
-     * Reset all variables.
-     *
-     * @deprecated since 1.1.2, use {@link #init()} instead of.
-     */
-    protected void resetState()
-    {
-        init();
-    }
-
     /** {@inheritDoc} */
     @Override
     protected void init()
@@ -1300,26 +1290,6 @@ public class Xhtml5BaseSink
      * @see javax.swing.text.html.HTML.Tag#PRE
      */
     @Override
-    public void verbatim( boolean boxed )
-    {
-        if ( boxed )
-        {
-            verbatim( SinkEventAttributeSet.BOXED );
-        }
-        else
-        {
-            verbatim( null );
-        }
-    }
-
-    /**
-     * The default class style for boxed is <code>source</code>.
-     *
-     * {@inheritDoc}
-     * @see javax.swing.text.html.HTML.Tag#DIV
-     * @see javax.swing.text.html.HTML.Tag#PRE
-     */
-    @Override
     public void verbatim( SinkEventAttributes attributes )
     {
         if ( paragraphFlag )
@@ -1612,26 +1582,6 @@ public class Xhtml5BaseSink
 
     /** {@inheritDoc} */
     @Override
-    public void tableCell( String width )
-    {
-        MutableAttributeSet att = new SinkEventAttributeSet();
-        att.addAttribute( Attribute.WIDTH, width );
-
-        tableCell( false, att );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableHeaderCell( String width )
-    {
-        MutableAttributeSet att = new SinkEventAttributeSet();
-        att.addAttribute( Attribute.WIDTH, width );
-
-        tableCell( true, att );
-    }
-
-    /** {@inheritDoc} */
-    @Override
     public void tableCell( SinkEventAttributes attributes )
     {
         tableCell( false, attributes );
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
index 490b9cd..f3d595b 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSink.java
@@ -252,16 +252,6 @@ public class XhtmlBaseSink
         return Integer.parseInt( this.cellCountStack.getLast().toString() );
     }
 
-    /**
-     * Reset all variables.
-     *
-     * @deprecated since 1.1.2, use {@link #init()} instead of.
-     */
-    protected void resetState()
-    {
-        init();
-    }
-
     /** {@inheritDoc} */
     @Override
     protected void init()
@@ -1177,26 +1167,6 @@ public class XhtmlBaseSink
      * @see javax.swing.text.html.HTML.Tag#PRE
      */
     @Override
-    public void verbatim( boolean boxed )
-    {
-        if ( boxed )
-        {
-            verbatim( SinkEventAttributeSet.BOXED );
-        }
-        else
-        {
-            verbatim( null );
-        }
-    }
-
-    /**
-     * The default class style for boxed is <code>source</code>.
-     *
-     * {@inheritDoc}
-     * @see javax.swing.text.html.HTML.Tag#DIV
-     * @see javax.swing.text.html.HTML.Tag#PRE
-     */
-    @Override
     public void verbatim( SinkEventAttributes attributes )
     {
         if ( paragraphFlag )
@@ -1489,26 +1459,6 @@ public class XhtmlBaseSink
 
     /** {@inheritDoc} */
     @Override
-    public void tableCell( String width )
-    {
-        MutableAttributeSet att = new SinkEventAttributeSet();
-        att.addAttribute( Attribute.WIDTH, width );
-
-        tableCell( false, att );
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void tableHeaderCell( String width )
-    {
-        MutableAttributeSet att = new SinkEventAttributeSet();
-        att.addAttribute( Attribute.WIDTH, width );
-
-        tableCell( true, att );
-    }
-
-    /** {@inheritDoc} */
-    @Override
     public void tableCell( SinkEventAttributes attributes )
     {
         tableCell( false, attributes );
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/DoxiaUtils.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/DoxiaUtils.java
index ede7ee3..2c51b06 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/DoxiaUtils.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/DoxiaUtils.java
@@ -49,8 +49,6 @@ import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
  */
 public class DoxiaUtils
 {
-    private static final int MINUS_ONE = 0xFF;
-
     /**
      * Checks if the given string corresponds to an internal link,
      * ie it is a link to an anchor within the same document.
@@ -252,20 +250,6 @@ public class DoxiaUtils
     }
 
     /**
-     * Convert a byte to it's hexadecimal equivalent.
-     *
-     * @param b the byte value.
-     * @return the result of Integer.toHexString( b &amp; 0xFF ).
-     * @since 1.1.1
-     * @deprecated Use {@code String.format( "%02X", bytes[j] )}
-     */
-    @Deprecated
-    public static String byteToHex( final byte b )
-    {
-        return Integer.toHexString( b & MINUS_ONE );
-    }
-
-    /**
      * Determines if the specified text is a valid id according to the rules
      * laid out in {@link #encodeId(String)}.
      *
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
index 2082704..5098069 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 
@@ -47,11 +48,11 @@ public class EchoMacroTest
     {
         final Map<String,Object> macroParameters = new HashMap<>();
         macroParameters.put( "paramName", "paramValue" );
-        macroParameters.put( "parser", "parserValue" );
-        macroParameters.put( "sourceContent", "sourceContentValue" );
+
+        XhtmlBaseParser parser = new XhtmlBaseParser();
 
         SinkEventTestingSink sink = new SinkEventTestingSink();
-        MacroRequest request = new MacroRequest( macroParameters, new File( "." ) );
+        MacroRequest request = new MacroRequest( null, parser, macroParameters, new File( "." ) );
 
         new EchoMacro().execute( sink, request );
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java
index a6b6c37..d1f8926 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java
@@ -26,6 +26,7 @@ import java.util.Map;
 
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
+import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 import org.codehaus.plexus.PlexusTestCase;
@@ -121,7 +122,7 @@ public class SnippetMacroTest
 
         // no need to verify the absence of the first and second snippets if tests above were successful
         assertThat( snippet, CoreMatchers.containsString( "Этот сниппет в формате Unicode (UTF-8)" ) );
-        
+
         // again
         // Shouldn't work because no snippet called "first" exists, only "firstId"
         macroParameters.put( "id", "first" );
@@ -161,9 +162,11 @@ public class SnippetMacroTest
     {
         File basedir = new File( getBasedir() );
 
+        XhtmlBaseParser parser = new XhtmlBaseParser();
+
         SinkEventTestingSink sink = new SinkEventTestingSink();
 
-        MacroRequest request = new MacroRequest( macroParameters, basedir );
+        MacroRequest request = new MacroRequest( null, parser, macroParameters, basedir );
         SnippetMacro macro = new SnippetMacro();
         macro.execute( sink, request );
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
index d124f2f..2cb1d9a 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
@@ -56,17 +56,14 @@ public class TocMacroTest
         String sourceContent = "<div><h2>h21</h2><h2>h22</h2><h3>h3</h3><h4>h4</h4><h2>h23</h2></div>";
 
         XhtmlBaseParser parser = new XhtmlBaseParser();
-        parser.setSecondParsing( true );
 
         Map<String, Object> macroParameters = new HashMap<>();
-        macroParameters.put( "parser", parser );
-        macroParameters.put( "sourceContent", sourceContent );
         macroParameters.put( "section", "sec1" );
 
         File basedir = new File( "" );
 
         SinkEventTestingSink sink = new SinkEventTestingSink();
-        MacroRequest request = new MacroRequest( macroParameters, basedir );
+        MacroRequest request = new MacroRequest( sourceContent, parser, macroParameters, basedir );
         TocMacro macro = new TocMacro();
         macro.execute( sink, request );
 
@@ -107,8 +104,6 @@ public class TocMacroTest
         // test parameters
 
         parser = new XhtmlBaseParser();
-        parser.setSecondParsing( true );
-        macroParameters.put( "parser", parser );
         macroParameters.put( "section", "2" );
         macroParameters.put( "fromDepth", "1" );
         macroParameters.put( "toDepth", "2" );
@@ -116,7 +111,7 @@ public class TocMacroTest
         macroParameters.put( "id", "myId" );
 
         sink.reset();
-        request = new MacroRequest( macroParameters, basedir );
+        request = new MacroRequest( sourceContent, parser, macroParameters, basedir );
         macro.execute( sink, request );
 
         it = sink.getEventList().iterator();
@@ -158,18 +153,15 @@ public class TocMacroTest
             "<div><h2>h<b>21</b></h2><h2>h<i>22</i></h2><h3>h<tt>3</tt></h3><h4>h4</h4><h2>h23</h2></div>";
 
         XhtmlBaseParser parser = new XhtmlBaseParser();
-        parser.setSecondParsing( true );
 
         Map<String, Object> macroParameters = new HashMap<>();
-        macroParameters.put( "parser", parser );
-        macroParameters.put( "sourceContent", sourceContent );
         macroParameters.put( "section", "sec1" );
 
         File basedir = new File( "" );
 
         StringWriter out = new StringWriter();
         XhtmlBaseSink sink = new XhtmlBaseSink( out );
-        MacroRequest request = new MacroRequest( macroParameters, basedir );
+        MacroRequest request = new MacroRequest( sourceContent, parser, macroParameters, basedir );
         TocMacro macro = new TocMacro();
         macro.execute( sink, request );
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java
index 24f4ca9..9f28fa7 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java
@@ -494,7 +494,6 @@ public class SinkAdapterTest
     public void testVerbatim()
     {
         instance.verbatim( null );
-        instance.verbatim( false );
         instance.verbatim_();
     }
 
@@ -528,23 +527,10 @@ public class SinkAdapterTest
     {
         instance.tableCell();
         instance.tableCell( (SinkEventAttributes) null );
-        instance.tableCell( (String) null );
         instance.tableCell_();
     }
 
     /**
-     * Test of tableHeaderCell method, of class SinkAdapter.
-     */
-    @Test
-    public void testTableHeaderCell()
-    {
-        instance.tableHeaderCell();
-        instance.tableHeaderCell( (SinkEventAttributes) null );
-        instance.tableHeaderCell( (String) null );
-        instance.tableHeaderCell_();
-    }
-
-    /**
      * Test of tableCaption method, of class SinkAdapter.
      */
     @Test
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventTestingSink.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventTestingSink.java
index ed25e5e..726e98d 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventTestingSink.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventTestingSink.java
@@ -551,12 +551,6 @@ public class SinkEventTestingSink
     }
 
     @Override
-    public void verbatim( boolean boxed )
-    {
-        addEvent( "verbatim", new Object[] { boxed } );
-    }
-
-    @Override
     public void verbatim_()
     {
         addEvent( "verbatim_" );
@@ -593,12 +587,6 @@ public class SinkEventTestingSink
     }
 
     @Override
-    public void tableCell( String width )
-    {
-        addEvent( "tableCell", new Object[] {width} );
-    }
-
-    @Override
     public void tableCell_()
     {
         addEvent( "tableCell_" );
@@ -611,12 +599,6 @@ public class SinkEventTestingSink
     }
 
     @Override
-    public void tableHeaderCell( String width )
-    {
-        addEvent( "tableHeaderCell", new Object[] {width} );
-    }
-
-    @Override
     public void tableHeaderCell_()
     {
         addEvent( "tableHeaderCell_" );
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
index 620bdca..97585a5 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TextSink.java
@@ -542,12 +542,6 @@ public class TextSink
     }
 
     @Override
-    public void verbatim( boolean boxed )
-    {
-        write( "begin:verbatim, boxed: " + boxed );
-    }
-
-    @Override
     public void verbatim_()
     {
         writeln( "end:verbatim" );
@@ -584,12 +578,6 @@ public class TextSink
     }
 
     @Override
-    public void tableCell( String width )
-    {
-        write( "begin:tableCell, width: " + width );
-    }
-
-    @Override
     public void tableCell_()
     {
         writeln( "end:tableCell" );
@@ -602,12 +590,6 @@ public class TextSink
     }
 
     @Override
-    public void tableHeaderCell( String width )
-    {
-        write( "begin:tableHeaderCell, width: " + width );
-    }
-
-    @Override
     public void tableHeaderCell_()
     {
         writeln( "end:tableHeaderCell" );
@@ -1010,7 +992,7 @@ public class TextSink
                 attributes.getAttribute( SinkEventAttributes.DECORATION ).toString() );
         }
 
-        verbatim( boxed );
+        write( "begin:verbatim, boxed: " + boxed );
     }
 
     @Override
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/WellformednessCheckingSink.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/WellformednessCheckingSink.java
index 4791778..1f2bba1 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/WellformednessCheckingSink.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/WellformednessCheckingSink.java
@@ -534,12 +534,6 @@ public class WellformednessCheckingSink
     }
 
     @Override
-    public void verbatim( boolean boxed )
-    {
-        startElement( "verbatim" );
-    }
-
-    @Override
     public void verbatim_()
     {
         checkWellformedness( "verbatim" );
@@ -576,12 +570,6 @@ public class WellformednessCheckingSink
     }
 
     @Override
-    public void tableCell( String width )
-    {
-        startElement( "tableCell" );
-    }
-
-    @Override
     public void tableCell_()
     {
         checkWellformedness( "tableCell" );
@@ -594,12 +582,6 @@ public class WellformednessCheckingSink
     }
 
     @Override
-    public void tableHeaderCell( String width )
-    {
-        startElement( "tableHeaderCell" );
-    }
-
-    @Override
     public void tableHeaderCell_()
     {
         checkWellformedness( "tableHeaderCell" );
@@ -1045,7 +1027,7 @@ public class WellformednessCheckingSink
     @Override
     public void verbatim( SinkEventAttributes attributes )
     {
-        verbatim( false );
+        startElement( "verbatim" );
     }
 
     @Override
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
index 6e1652e..3913825 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
@@ -964,7 +964,7 @@ public class Xhtml5BaseSinkTest
         {
             sink = new Xhtml5BaseSink( writer );
 
-            sink.verbatim( true );
+            sink.verbatim( SinkEventAttributeSet.BOXED );
             sink.verbatim_();
         }
         finally
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
index 9e498e2..838ea0d 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
@@ -582,7 +582,7 @@ public class XhtmlBaseSinkTest
         {
             sink = new XhtmlBaseSink( writer );
 
-            sink.verbatim( true );
+            sink.verbatim( SinkEventAttributeSet.BOXED );
             sink.verbatim_();
         }
         finally
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
index c44281e..c263fb9 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSink.java
@@ -25,9 +25,12 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Stack;
 
+import javax.swing.text.MutableAttributeSet;
+
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.AbstractTextSink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
+import org.apache.maven.doxia.sink.impl.SinkUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -152,16 +155,6 @@ public class AptSink
     }
 
     /**
-     * Reset all variables.
-     *
-     * @deprecated since 1.1.2, use {@link #init()} instead of.
-     */
-    protected void resetState()
-    {
-        init();
-    }
-
-    /**
      * {@inheritDoc}
      */
     protected void init()
@@ -634,8 +627,17 @@ public class AptSink
     }
 
     /** {@inheritDoc} */
-    public void verbatim( boolean boxed )
+    public void verbatim( SinkEventAttributes attributes )
     {
+        MutableAttributeSet atts = SinkUtils.filterAttributes( attributes, SinkUtils.SINK_VERBATIM_ATTRIBUTES );
+
+        boolean boxed = false;
+
+        if ( atts != null && atts.isDefined( SinkEventAttributes.DECORATION ) )
+        {
+            boxed = "boxed".equals( atts.getAttribute( SinkEventAttributes.DECORATION ).toString() );
+        }
+
         verbatimFlag = true;
         this.isBoxed = boxed;
         write( EOL );
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptUtils.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptUtils.java
index 80d7c29..901d145 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptUtils.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptUtils.java
@@ -31,31 +31,6 @@ public class AptUtils
 {
 
     /**
-     * Replace all characters in a text.
-     *
-     * <pre>
-     * AptTools.encodeFragment( null ) = null
-     * AptTools.encodeFragment( "" ) = ""
-     * AptTools.encodeFragment( "http://www.google.com" ) = "httpwwwgooglecom"
-     * </pre>
-     *
-     * @param text the String to check, may be null.
-     * @return the text with only letter and digit, null if null String input.
-     * @deprecated This method was used for the original apt format, which
-     * removed all non alphanumeric characters from anchors.
-     * Use {@link #encodeAnchor(String)} instead.
-     */
-    public static String encodeFragment( String text )
-    {
-        if ( text == null )
-        {
-            return null;
-        }
-
-        return linkToKey( text );
-    }
-
-    /**
      * Checks if the given string corresponds to an external URI,
      * ie is not a link within the same document nor a link to another
      * document within the same site. This forwards to
@@ -104,34 +79,6 @@ public class AptUtils
     }
 
     /**
-     * Transforms the given text such that it can be used as a link.
-     * All non-LetterOrDigit characters are removed and the remaining
-     * characters are transformed to lower-case.
-     *
-     * @param text The text to transform.
-     * @return The text with all non-LetterOrDigit characters removed.
-     * @deprecated This method was used for the original apt format, which
-     * removed all non alphanumeric characters from anchors.
-     * Use {@link #encodeAnchor(String)} instead.
-     */
-    public static String linkToKey( String text )
-    {
-        int length = text.length();
-        StringBuilder buffer = new StringBuilder( length );
-
-        for ( int i = 0; i < length; ++i )
-        {
-            char c = text.charAt( i );
-            if ( Character.isLetterOrDigit( c ) )
-            {
-                buffer.append( Character.toLowerCase( c ) );
-            }
-        }
-
-        return buffer.toString();
-    }
-
-    /**
      * Construct a valid anchor. This is a simplified version of
      * {@link org.apache.maven.doxia.util.DoxiaUtils#encodeId(String)}
      * to ensure the anchor is a valid Doxia id.
diff --git a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java
index 571e582..4f6e330 100644
--- a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java
+++ b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java
@@ -132,25 +132,4 @@ public class AptUtilsTest
         assertNull( AptUtils.encodeAnchor( null ) );
         assertEquals( "a123_:_.-aBc", AptUtils.encodeAnchor( " 12!3 :_.&-a)Bc " ) );
     }
-
-    /**
-     * Test of encodeFragment method, of class AptUtils.
-     */
-    @SuppressWarnings( "deprecation" )
-    @Test
-    public void testEncodeFragment()
-    {
-        assertNull( AptUtils.encodeFragment( null ) );
-        assertEquals( "abc0d", AptUtils.encodeFragment( "a B&c0)D" ) );
-    }
-
-    /**
-     * Test of linkToKey method, of class AptUtils.
-     */
-    @SuppressWarnings( "deprecation" )
-    @Test
-    public void testLinkToKey()
-    {
-        assertEquals( "abc56au", AptUtils.linkToKey( "aB$%C56 a&\\/'U" ) );
-    }
 }
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java
index 3c8f334..96d85a9 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSink.java
@@ -534,14 +534,4 @@ public class XdocSink
     //
     // ----------------------------------------------------------------------
 
-    /**
-     * Write text to output, preserving white space.
-     *
-     * @param text The text to write.
-     * @deprecated use write(String)
-     */
-    protected void markup( String text )
-    {
-        write( text );
-    }
 }
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
deleted file mode 100644
index 674ee30..0000000
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSink.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.apache.maven.doxia.module.xdoc;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-
-import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
-import org.codehaus.plexus.util.xml.XMLWriter;
-import org.codehaus.plexus.util.xml.XmlUtil;
-
-/**
- * A Doxia Sink which produces an xdoc document.
- *
- * @author juan <a href="mailto:james@jamestaylor.org">James Taylor</a>
- * @author Juan F. Codagnone  (replaced println with XmlWriterXdocSink)
- * @deprecated Since 1.1, this sink is not more supported. If you are looking for a <code>Sink</code> which produces
- * pretty formatted XML, you could use the {@link XdocSink#XdocSink(java.io.Writer)} as usual and reformat the
- * <code>Sink</code> content produced with {@link XmlUtil#prettyFormat(java.io.Reader, java.io.Writer)}.
- */
-public class XmlWriterXdocSink
-    extends XdocSink
-{
-    /** Writer used by Xdoc */
-    private StringWriter xdocWriter;
-
-    private XMLWriter xmlWriter;
-
-    private XmlWriterXdocSink( StringWriter out, String encoding )
-    {
-        super( out, encoding );
-        this.xdocWriter = out;
-        this.xmlWriter = new PrettyPrintXMLWriter( out );
-    }
-
-    /**
-     * <p>Constructor for XmlWriterXdocSink.</p>
-     *
-     * @param out the wanted XML Writer.
-     * @deprecated since 1.1
-     */
-    public XmlWriterXdocSink( XMLWriter out )
-    {
-        this( new StringWriter(), "UTF-8" );
-        this.xmlWriter = out;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public void close()
-    {
-        super.close();
-
-        String xdocContent = xdocWriter.toString();
-        StringWriter formattedContent = new StringWriter();
-        try
-        {
-            XmlUtil.prettyFormat( new StringReader( xdocContent ), formattedContent );
-        }
-        catch ( IOException e )
-        {
-            formattedContent = new StringWriter();
-            formattedContent.write( xdocContent );
-        }
-        xmlWriter.writeMarkup( formattedContent.toString() );
-    }
-}
diff --git a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSinkTest.java b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSinkTest.java
deleted file mode 100644
index 774642f..0000000
--- a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XmlWriterXdocSinkTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.apache.maven.doxia.module.xdoc;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.Writer;
-
-import org.apache.maven.doxia.sink.Sink;
-import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter;
-import org.codehaus.plexus.util.xml.XmlUtil;
-
-/**
- * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
- * @since 1.1
- */
-public class XmlWriterXdocSinkTest
-    extends XdocSinkTest
-{
-    private static final String DEFAULT_INDENT = StringUtils.repeat( " ", XmlUtil.DEFAULT_INDENTATION_SIZE );
-
-    /** {@inheritDoc} */
-    protected Sink createSink( Writer writer )
-    {
-        return new XmlWriterXdocSink( new PrettyPrintXMLWriter( writer ) );
-    }
-
-    /** {@inheritDoc} */
-    protected String getSection1Block( String title )
-    {
-        return "<section name=\"" + title + "\"/>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getSection2Block( String title )
-    {
-        return "<subsection name=\"" + title + "\"/>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getListBlock( String item )
-    {
-        return "<ul>" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT + "<li>" + item + "</li>"
-            + XmlUtil.DEFAULT_LINE_SEPARATOR + "</ul>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getNumberedListBlock( String item )
-    {
-        return "<ol style=\"list-style-type: lower-roman\">" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT
-            + "<li>" + item + "</li>" + XmlUtil.DEFAULT_LINE_SEPARATOR + "</ol>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getDefinitionListBlock( String definum, String definition )
-    {
-        return "<dl>" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT + "<dt>" + definum + "</dt>"
-            + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT + "<dd>" + definition + "</dd>"
-            + XmlUtil.DEFAULT_LINE_SEPARATOR + "</dl>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getFigureBlock( String source, String caption )
-    {
-        String figureBlock = "<img src=\"" + source + "\"";
-        if ( caption != null )
-        {
-            figureBlock += " alt=\"" + caption + "\"";
-        }
-        else //@todo fix DOXIA-361
-        {
-            figureBlock += " alt=\"\"";
-        }
-        figureBlock += "/>";
-        return figureBlock;
-    }
-
-    /** {@inheritDoc} */
-    protected String getTableBlock( String cell, String caption )
-    {
-        return "<table border=\"0\">" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT
-            + "<caption>" + caption + "</caption>" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT
-            + "<tr valign=\"top\">" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT + DEFAULT_INDENT
-            + "<td>" + cell + "</td>" + XmlUtil.DEFAULT_LINE_SEPARATOR + DEFAULT_INDENT + "</tr>"
-            + XmlUtil.DEFAULT_LINE_SEPARATOR + "</table>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getHorizontalRuleBlock()
-    {
-        return "<hr/>";
-    }
-
-    /** {@inheritDoc} */
-    protected String getLineBreakBlock()
-    {
-        return "<br/>";
-    }
-}
diff --git a/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java b/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
index b5c4e5e..b790bad 100644
--- a/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
+++ b/doxia-sink-api/src/main/java/org/apache/maven/doxia/sink/Sink.java
@@ -1124,14 +1124,6 @@ public interface Sink
     void tableCell();
 
     /**
-     * Starts a cell element which defines a cell that contains data.
-     *
-     * @param width the size of the cell.
-     * @deprecated Use #tableCell(SinkEventAttributes) instead.
-     */
-    void tableCell( String width );
-
-    /**
      * Starts a table cell.
      *
      * <p>
@@ -1164,14 +1156,6 @@ public interface Sink
     void tableHeaderCell();
 
     /**
-     * Starts a cell element which defines a cell that contains header information.
-     *
-     * @param width the size of the header cell.
-     * @deprecated Use #tableHeaderCell(SinkEventAttributes) instead.
-     */
-    void tableHeaderCell( String width );
-
-    /**
      * Starts a table header cell.
      *
      * <p>
@@ -1368,14 +1352,6 @@ public interface Sink
     void division_();
 
     /**
-     * Starts an element which indicates that whitespace in the enclosed text has semantic relevance.
-     *
-     * @param boxed true to add a box, false otherwise
-     * @deprecated Use #verbatim(SinkEventAttributes) instead.
-     */
-    void verbatim( boolean boxed );
-
-    /**
      * Starts a verbatim block, ie a block where whitespace has semantic relevance.
      *
      * <p>
diff --git a/doxia-sink-api/src/main/java/org/codehaus/doxia/sink/Sink.java b/doxia-sink-api/src/main/java/org/codehaus/doxia/sink/Sink.java
deleted file mode 100644
index 0fe64cf..0000000
--- a/doxia-sink-api/src/main/java/org/codehaus/doxia/sink/Sink.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.codehaus.doxia.sink;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/**
- * Generic document processing interface.
- *
- * @deprecated use {@link org.apache.maven.doxia.sink.Sink} instead (since 1.0-alpha-6).
- */
-public interface Sink
-    extends org.apache.maven.doxia.sink.Sink
-{
-    // nop
-}