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/02/06 13:38:10 UTC

[maven-doxia] branch DOXIA-645 created (now 63843f6)

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

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


      at 63843f6  [DOXIA-645] Clean up exceptions

This branch includes the following new commits:

     new 63843f6  [DOXIA-645] Clean up exceptions

The 1 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.


[maven-doxia] 01/01: [DOXIA-645] Clean up exceptions

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

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

commit 63843f67324e2db7753179d92a5f63608442f42c
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sun Feb 6 14:38:00 2022 +0100

    [DOXIA-645] Clean up exceptions
    
    This closes #94
---
 .../org/apache/maven/doxia/index/IndexEntry.java   |  2 +-
 .../apache/maven/doxia/macro/AbstractMacro.java    |  3 ++
 .../maven/doxia/macro/MacroExecutionException.java | 12 ++++++++
 .../maven/doxia/macro/snippet/SnippetMacro.java    |  4 +--
 .../org/apache/maven/doxia/macro/toc/TocMacro.java |  2 +-
 .../maven/doxia/parser/AbstractXmlParser.java      | 11 +++----
 .../apache/maven/doxia/parser/ParseException.java  | 35 +++++++++++++++-------
 .../doxia/sink/impl/AbstractTextSinkFactory.java   |  6 ++--
 .../maven/doxia/sink/impl/AbstractXmlSink.java     | 12 +++-----
 .../maven/doxia/sink/impl/Xhtml5BaseSink.java      | 11 ++-----
 .../maven/doxia/sink/impl/XhtmlBaseSink.java       | 11 ++-----
 .../maven/doxia/util/ByLineReaderSource.java       | 13 ++++----
 .../org/apache/maven/doxia/util/HtmlTools.java     |  2 +-
 .../org/apache/maven/doxia/util/LineBreaker.java   |  2 +-
 .../org/apache/maven/doxia/util/XmlValidator.java  |  2 +-
 .../maven/doxia/sink/impl/AbstractXmlSinkTest.java |  4 +--
 .../maven/doxia/sink/impl/SinkEventElement.java    |  6 ++--
 .../maven/doxia/xsd/AbstractXmlValidatorTest.java  |  2 +-
 .../maven/doxia/module/apt/AptParseException.java  | 13 +++++++-
 .../apache/maven/doxia/module/apt/AptParser.java   |  4 +--
 .../maven/doxia/module/apt/AptReaderSource.java    |  2 +-
 .../apache/maven/doxia/module/fml/FmlParser.java   |  2 +-
 .../apache/maven/doxia/module/xdoc/XdocParser.java |  2 +-
 .../maven/doxia/module/xhtml/XhtmlParser.java      |  2 +-
 .../maven/doxia/module/xhtml5/Xhtml5Parser.java    |  2 +-
 25 files changed, 94 insertions(+), 73 deletions(-)

diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/index/IndexEntry.java b/doxia-core/src/main/java/org/apache/maven/doxia/index/IndexEntry.java
index d0e4b9e..4353613 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/index/IndexEntry.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/index/IndexEntry.java
@@ -261,7 +261,7 @@ public class IndexEntry
         }
         else if ( entries.size() > 1 )
         {
-            throw new RuntimeException( "This index has more than one root entry" );
+            throw new IllegalStateException( "This index has more than one root entry" );
         }
         else
         {
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 4374846..fc59162 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,6 +21,7 @@ package org.apache.maven.doxia.macro;
 
 import java.util.Map;
 
+import org.apache.commons.lang3.Validate;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.codehaus.plexus.util.StringUtils;
@@ -41,7 +42,9 @@ public abstract class AbstractMacro
      * @param paramName The name of the parameter to check.
      * @param paramValue The parameter value.
      * @since 1.1
+     * @deprecated Not used, use {@link Validate}
      */
+    @Deprecated
     protected void required( String paramName, String paramValue )
     {
         if ( StringUtils.isEmpty( paramValue ) )
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java
index 1aec3e7..429ef71 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/MacroExecutionException.java
@@ -32,6 +32,18 @@ public class MacroExecutionException
     static final long serialVersionUID = -6314856898570018814L;
 
     /**
+     * Construct a new <code>MacroExecutionException</code> with the specified cause.
+     *
+     * @param cause 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.)
+     */
+    public MacroExecutionException( Throwable cause )
+    {
+        super( cause );
+    }
+
+    /**
      * Construct a new <code>MacroExecutionException</code> with the specified detail message.
      *
      * @param message The detailed message.
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 e69744f..d9c31dd 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
@@ -118,7 +118,7 @@ public class SnippetMacro
             }
             catch ( MalformedURLException e )
             {
-                throw new IllegalArgumentException( urlParam + " is a malformed URL" );
+                throw new IllegalArgumentException( urlParam + " is a malformed URL", e );
             }
         }
         else if ( !StringUtils.isEmpty( fileParam ) )
@@ -136,7 +136,7 @@ public class SnippetMacro
             }
             catch ( MalformedURLException e )
             {
-                throw new IllegalArgumentException( fileParam + " is a malformed URL" );
+                throw new IllegalArgumentException( fileParam + " is a malformed URL", e );
             }
         }
         else
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
index 2b94937..4c676cd 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
@@ -117,7 +117,7 @@ public class TocMacro
         }
         catch ( ParseException e )
         {
-            throw new MacroExecutionException( "ParseException: " + e.getMessage(), e );
+            throw new MacroExecutionException( e );
         }
 
         if ( index.getChildEntries().size() > 0 )
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 10fd1d5..61363bb 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
@@ -110,7 +110,7 @@ public abstract class AbstractXmlParser
             }
             catch ( IOException e )
             {
-                throw new ParseException( "Error reading the model: " + e.getMessage(), e );
+                throw new ParseException( "Error reading the model", e );
             }
 
             new XmlValidator( ).validate( content );
@@ -133,12 +133,12 @@ public abstract class AbstractXmlParser
         }
         catch ( XmlPullParserException ex )
         {
-            throw new ParseException( "Error parsing the model: " + ex.getMessage(), ex, ex.getLineNumber(),
+            throw new ParseException( "Error parsing the model", ex, ex.getLineNumber(),
                                       ex.getColumnNumber() );
         }
         catch ( MacroExecutionException ex )
         {
-            throw new ParseException( "Macro execution failed: " + ex.getMessage(), ex );
+            throw new ParseException( "Macro execution failed", ex );
         }
 
         setSecondParsing( false );
@@ -265,6 +265,7 @@ public abstract class AbstractXmlParser
             }
             catch ( IOException io )
             {
+                // Does not have a cause arg
                 throw new XmlPullParserException( "IOException: " + io.getMessage(), parser, io );
             }
         }
@@ -770,7 +771,7 @@ public abstract class AbstractXmlParser
             }
             catch ( IOException e )
             {
-                throw new SAXException( "IOException: " + e.getMessage(), e );
+                throw new SAXException( e );
             }
             finally
             {
@@ -802,7 +803,7 @@ public abstract class AbstractXmlParser
             }
             catch ( IOException e )
             {
-                throw new SAXException( "IOException: " + e.getMessage(), e );
+                throw new SAXException( e );
             }
             finally
             {
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 1db3051..ed294c6 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
@@ -41,6 +41,19 @@ public class ParseException
     private int columnNumber;
 
     /**
+     * Construct a new <code>ParseException</code> with the specified cause.
+     * <br>
+     * <b>Note</b>: no line or column number will be used.
+     *
+     * @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.)
+     */
+    public ParseException( Exception e )
+    {
+        this( null, e, null, -1, -1 );
+    }
+
+    /**
      * Construct a new <code>ParseException</code> with the specified detail message.
      * <br>
      * <b>Note</b>: no line or column number will be used.
@@ -50,7 +63,7 @@ public class ParseException
      */
     public ParseException( String message )
     {
-        this( null, message, null, -1, -1 );
+        this( message, null, null, -1, -1 );
     }
 
     /**
@@ -65,7 +78,7 @@ public class ParseException
      */
     public ParseException( String message, Exception e )
     {
-        this( e, message, null, -1, -1 );
+        this( message, e, null, -1, -1 );
     }
 
     /**
@@ -82,7 +95,7 @@ public class ParseException
      */
     public ParseException( String message, int line, int column )
     {
-        this( null, message, null, line, column );
+        this( message, null, null, line, column );
     }
 
     /**
@@ -101,7 +114,7 @@ public class ParseException
      */
     public ParseException( String message, Exception e, int line, int column )
     {
-        this( e, message, null, line, column );
+        this( message, e, null, line, column );
     }
 
     /**
@@ -118,7 +131,7 @@ public class ParseException
      */
     public ParseException( Exception e, int line, int column )
     {
-        this( e, null, null, line, column );
+        this( null, e, null, line, column );
     }
 
     /**
@@ -136,28 +149,28 @@ public class ParseException
      */
     public ParseException( Exception e, String file, int line, int column )
     {
-        this( e, null, file, line, column );
+        this( null, e, file, line, column );
     }
 
     /**
      * Construct a new <code>ParseException</code> with the specified cause, detail message,
      * filename, line number and column number.
-     *
-     * @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 message The detailed message.
      * This can later be retrieved by the <code>Throwable.getMessage()</code> method.
+     * @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.
      * @param column The column number where the parsing failed.
      * This can later be retrieved by the getColumnNumber() method.
+     *
      * @since 1.1
      */
-    public ParseException( Exception e, String message, String file, int line, int column )
+    public ParseException( String message, Exception e, String file, int line, int column )
     {
-        super( ( message == null ) ? ( ( e == null ) ? null : e.getMessage() ) : message, e );
+        super( message, e );
 
         this.fileName = file;
         this.lineNumber = line;
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractTextSinkFactory.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractTextSinkFactory.java
index e07979e..3f7acb3 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractTextSinkFactory.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractTextSinkFactory.java
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
+import java.util.Objects;
 
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkFactory;
@@ -60,10 +61,7 @@ public abstract class AbstractTextSinkFactory
     public Sink createSink( File outputDir, String outputName, String encoding )
         throws IOException
     {
-        if ( outputDir == null )
-        {
-            throw new IllegalArgumentException( "outputDir cannot be null." );
-        }
+        Objects.requireNonNull( outputDir, "outputDir cannot be null" );
 
         if ( !outputDir.exists() )
         {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractXmlSink.java b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractXmlSink.java
index c4292c1..5dbb559 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractXmlSink.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/sink/impl/AbstractXmlSink.java
@@ -19,6 +19,8 @@ package org.apache.maven.doxia.sink.impl;
  * under the License.
  */
 
+import java.util.Objects;
+
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.html.HTML.Tag;
 
@@ -114,10 +116,7 @@ public abstract class AbstractXmlSink
      */
     protected void writeStartTag( Tag t, MutableAttributeSet att, boolean isSimpleTag )
     {
-        if ( t == null )
-        {
-            throw new IllegalArgumentException( "A tag is required" );
-        }
+        Objects.requireNonNull( t, "t cannot be null" );
 
         StringBuilder sb = new StringBuilder();
 
@@ -165,10 +164,7 @@ public abstract class AbstractXmlSink
      */
     protected void writeEndTag( Tag t )
     {
-        if ( t == null )
-        {
-            throw new IllegalArgumentException( "A tag is required" );
-        }
+        Objects.requireNonNull( t, "t cannot be null" );
 
         StringBuilder sb = new StringBuilder();
         sb.append( LESS_THAN );
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 36f944e..b4bdee0 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,6 +29,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Stack;
 
 import javax.swing.text.MutableAttributeSet;
@@ -1734,10 +1735,7 @@ public class Xhtml5BaseSink
     @Override
     public void anchor( String name, SinkEventAttributes attributes )
     {
-        if ( name == null )
-        {
-            throw new NullPointerException( "Anchor name cannot be null!" );
-        }
+        Objects.requireNonNull( name, "name cannot be null" );
 
         if ( headFlag )
         {
@@ -1813,10 +1811,7 @@ public class Xhtml5BaseSink
      */
     private void link( String href, String target, MutableAttributeSet attributes )
     {
-        if ( href == null )
-        {
-            throw new NullPointerException( "Link name cannot be null!" );
-        }
+        Objects.requireNonNull( href, "href cannot be null" );
 
         if ( headFlag )
         {
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 f3d595b..e4318f7 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,6 +28,7 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Stack;
 
 import javax.swing.text.MutableAttributeSet;
@@ -1611,10 +1612,7 @@ public class XhtmlBaseSink
     @Override
     public void anchor( String name, SinkEventAttributes attributes )
     {
-        if ( name == null )
-        {
-            throw new NullPointerException( "Anchor name cannot be null!" );
-        }
+        Objects.requireNonNull( name, "name cannot be null" );
 
         if ( headFlag )
         {
@@ -1690,10 +1688,7 @@ public class XhtmlBaseSink
      */
     private void link( String href, String target, MutableAttributeSet attributes )
     {
-        if ( href == null )
-        {
-            throw new NullPointerException( "Link name cannot be null!" );
-        }
+        Objects.requireNonNull( href, "href cannot be null" );
 
         if ( headFlag )
         {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java
index 7d06f98..ec5ce1b 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/ByLineReaderSource.java
@@ -27,6 +27,7 @@ package org.apache.maven.doxia.util;
 import java.io.IOException;
 import java.io.LineNumberReader;
 import java.io.Reader;
+import java.util.Objects;
 
 import org.apache.maven.doxia.parser.ParseException;
 import org.codehaus.plexus.util.IOUtil;
@@ -56,7 +57,7 @@ public class ByLineReaderSource implements ByLineSource
      * called
      */
     private boolean ungetted = false;
-    
+
     private String name;
 
     /**
@@ -68,7 +69,7 @@ public class ByLineReaderSource implements ByLineSource
     {
         this( in, "" );
     }
-    
+
     /**
      * <p>Constructor for ByLineReaderSource.</p>
      *
@@ -78,7 +79,7 @@ public class ByLineReaderSource implements ByLineSource
     public ByLineReaderSource( final Reader in, final String name )
     {
         this.reader = new LineNumberReader( in );
-        
+
         this.name = name;
 
         this.lineNumber = -1;
@@ -172,10 +173,8 @@ public class ByLineReaderSource implements ByLineSource
     /** {@inheritDoc} */
     public final void unget( final String s )
     {
-        if ( s == null )
-        {
-            throw new IllegalArgumentException( "argument can't be null" );
-        }
+        Objects.requireNonNull( s, "s cannot be null" );
+
         if ( s.length() != 0 )
         {
             ungetLine();
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java
index deeaacd..4a10ace 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/HtmlTools.java
@@ -453,7 +453,7 @@ public class HtmlTools
     {
         if ( !isValidCodePoint( codePoint ) )
         {
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException( "Code point " + codePoint + " is not valid" );
         }
 
         if ( isSupplementaryCodePoint( codePoint ) )
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java b/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java
index d5c5dfb..6a0898e 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/util/LineBreaker.java
@@ -71,7 +71,7 @@ public class LineBreaker
     {
         if ( max <= 0 )
         {
-            throw new IllegalArgumentException( "maxLineLength <= 0" );
+            throw new IllegalArgumentException( "max must be a positive integer" );
         }
 
         destination = out;
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 f57264f..10cd906 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
@@ -97,7 +97,7 @@ public class XmlValidator
         }
         catch ( IOException | SAXException e )
         {
-            throw new ParseException( "Error validating the model: " + e.getMessage(), e );
+            throw new ParseException( "Error validating the model", e );
         }
     }
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java
index 7752110..a6d9613 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java
@@ -67,7 +67,7 @@ public class AbstractXmlSinkTest
             instance.writeStartTag( null );
             fail( "null tag should fail!" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( NullPointerException e )
         {
             assertNotNull( e );
         }
@@ -77,7 +77,7 @@ public class AbstractXmlSinkTest
             instance.writeEndTag( null );
             fail( "null tag should fail!" );
         }
-        catch ( IllegalArgumentException e )
+        catch ( NullPointerException e )
         {
             assertNotNull( e );
         }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventElement.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventElement.java
index 73cd4a9..5cf4a45 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventElement.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventElement.java
@@ -20,6 +20,7 @@ package org.apache.maven.doxia.sink.impl;
  */
 
 import java.util.Arrays;
+import java.util.Objects;
 
 /**
  * A single sink event, used for testing purposes in order to check
@@ -45,10 +46,7 @@ public class SinkEventElement
      */
     public SinkEventElement( String name, Object[] arguments )
     {
-        if ( name == null )
-        {
-            throw new NullPointerException( "Element name can't be null!" );
-        }
+        Objects.requireNonNull( name, "name cannot be null" );
 
         this.methodName = name;
         this.args = arguments;
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidatorTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidatorTest.java
index db1fe0f..f6c2fb8 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidatorTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidatorTest.java
@@ -141,7 +141,7 @@ public abstract class AbstractXmlValidatorTest
 
             if ( testJar == null )
             {
-                throw new RuntimeException(
+                throw new IllegalStateException(
                         "Could not find the Doxia test documents artefact i.e. doxia-test-docs-XXX.jar" );
             }
         }
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParseException.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParseException.java
index 0df36e1..858176e 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParseException.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParseException.java
@@ -33,6 +33,17 @@ public class AptParseException
     static final long serialVersionUID = 1694654412921168623L;
 
     /**
+     * Construct a new AptParseException with the cause.
+     *
+     * @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.)
+     */
+    public AptParseException( Exception e )
+    {
+        super( e );
+    }
+
+    /**
      * Construct a new AptParseException with the specified detail message.
      *
      * @param message The detailed message.
@@ -73,7 +84,7 @@ public class AptParseException
      */
     public AptParseException( String message, Exception e, String name, int line, int column )
     {
-        super( e, message, name, line, column );
+        super( message, e, name, line, column );
     }
 
     /**
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 fec38c0..003b4fa 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
@@ -204,7 +204,7 @@ public class AptParser
         }
         catch ( IOException e )
         {
-            throw new AptParseException( "IOException: " + e.getMessage(), e );
+            throw new AptParseException( e );
         }
 
         try
@@ -237,7 +237,7 @@ public class AptParser
         catch ( AptParseException ape )
         {
             // TODO handle column number
-            throw new AptParseException( ape.getMessage(), ape, getSourceName(), getSourceLineNumber(), -1 );
+            throw new AptParseException( null, ape, getSourceName(), getSourceLineNumber(), -1 );
         }
         finally
         {
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptReaderSource.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptReaderSource.java
index 8edf7b3..975cef4 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptReaderSource.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptReaderSource.java
@@ -97,7 +97,7 @@ public class AptReaderSource
         catch ( IOException e )
         {
             // TODO handle column number
-            throw new AptParseException( "IOException: " + e.getMessage(), e, lineNumber, -1 );
+            throw new AptParseException( null, e, lineNumber, -1 );
         }
 
         return line;
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 a7a6223..70874cd 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
@@ -101,7 +101,7 @@ public class FmlParser
         }
         catch ( IOException ex )
         {
-            throw new ParseException( "Error reading the input source: " + ex.getMessage(), ex );
+            throw new ParseException( "Error reading the input source", ex );
         }
         finally
         {
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 82edd20..196e700 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
@@ -101,7 +101,7 @@ public class XdocParser
         }
         catch ( IOException ex )
         {
-            throw new ParseException( "Error reading the input source: " + ex.getMessage(), ex );
+            throw new ParseException( "Error reading the input source", ex );
         }
         finally
         {
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 1d19043..bb3c328 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
@@ -344,7 +344,7 @@ public class XhtmlParser
         }
         catch ( IOException ex )
         {
-            throw new ParseException( "Error reading the input source: " + ex.getMessage(), ex );
+            throw new ParseException( "Error reading the input source", ex );
         }
         finally
         {
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 46887af..e38f1c2 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
@@ -345,7 +345,7 @@ public class Xhtml5Parser
         }
         catch ( IOException ex )
         {
-            throw new ParseException( "Error reading the input source: " + ex.getMessage(), ex );
+            throw new ParseException( "Error reading the input source", ex );
         }
         finally
         {