Replace dependency to junit-addons with direct reflection calls

diff --git a/pom.xml b/pom.xml
index 1318025..5cb55f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -317,12 +317,6 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>junit-addons</groupId>
-      <artifactId>junit-addons</artifactId>
-      <version>1.4</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>org.apache.maven.plugin-testing</groupId>
       <artifactId>maven-plugin-testing-harness</artifactId>
       <version>2.1</version>
diff --git a/src/test/java/org/apache/maven/plugins/javadoc/FixJavadocMojoTest.java b/src/test/java/org/apache/maven/plugins/javadoc/FixJavadocMojoTest.java
index a13d961..d4f4b90 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/FixJavadocMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/FixJavadocMojoTest.java
@@ -22,6 +22,7 @@
 import java.io.File;

 import java.io.IOException;

 import java.io.StringReader;

+import java.lang.reflect.Method;

 import java.util.ArrayList;

 import java.util.Collections;

 import java.util.List;

@@ -42,7 +43,7 @@
 import com.thoughtworks.qdox.model.JavaClass;

 import com.thoughtworks.qdox.model.JavaMethod;

 

-import junitx.util.PrivateAccessor;

+import static org.apache.commons.lang3.reflect.MethodUtils.invokeMethod;

 

 /**

  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>

@@ -129,134 +130,109 @@
     // ----------------------------------------------------------------------

 

     /**

-     * @throws Throwable if any

+     * @throws Exception if any

      */

     public void testAutodetectIndentation()

-        throws Throwable

+        throws Exception

     {

+        Method method = AbstractFixJavadocMojo.class.getDeclaredMethod( "autodetectIndentation", String.class );

+        method.setAccessible( true );

+

         String s = null;

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                  new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "", (String) method.invoke( null, s ) );

 

         s = "no indentation";

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                  new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "", (String) method.invoke( null, s ) );

 

         s = "no indentation with right spaces  ";

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                  new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "", (String) method.invoke( null, s ) );

 

         s = "    indentation";

-        assertEquals( "    ", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                      new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "    ", (String) method.invoke( null, s ) );

 

         s = "    indentation with right spaces  ";

-        assertEquals( "    ", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                      new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "    ", (String) method.invoke( null, s ) );

 

         s = "\ttab indentation";

-        assertEquals( "\t", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                    new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "\t", (String) method.invoke( null, s ) );

 

         s = "  \n  indentation with right spaces  ";

-        assertEquals( "  \n  ", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "autodetectIndentation",

-                                                        new Class[] { String.class }, new Object[] { s } ) );

+        assertEquals( "  \n  ", (String) method.invoke( null, s ) );

     }

 

     /**

-     * @throws Throwable if any

+     * @throws Exception if any

      */

     public void testTrimLeft()

-        throws Throwable

+        throws Exception

     {

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                  new Class[] { String.class }, new Object[] { null } ) );

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                  new Class[] { String.class }, new Object[] { "  " } ) );

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                  new Class[] { String.class }, new Object[] { "  \t  " } ) );

-        assertEquals( "a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                   new Class[] { String.class }, new Object[] { "a" } ) );

-        assertEquals( "a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                   new Class[] { String.class }, new Object[] { "  a" } ) );

-        assertEquals( "a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                   new Class[] { String.class }, new Object[] { "\ta" } ) );

-        assertEquals( "a  ", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                     new Class[] { String.class }, new Object[] { "  a  " } ) );

-        assertEquals( "a\t", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimLeft",

-                                                     new Class[] { String.class }, new Object[] { "\ta\t" } ) );

+        Method method = AbstractFixJavadocMojo.class.getDeclaredMethod( "trimLeft", String.class );

+        method.setAccessible( true );

+

+        assertEquals( "", (String) method.invoke( null, (String) null ) );

+        assertEquals( "", (String) method.invoke( null, "  " ) );

+        assertEquals( "", (String) method.invoke( null, "  \t  " ) );

+        assertEquals( "a", (String) method.invoke( null, "a" ) );

+        assertEquals( "a", (String) method.invoke( null, "  a" ) );

+        assertEquals( "a", (String) method.invoke( null, "\ta" ) );

+        assertEquals( "a  ", (String) method.invoke( null, "  a  " ) );

+        assertEquals( "a\t", (String) method.invoke( null, "\ta\t" ) );

     }

 

     /**

-     * @throws Throwable if any

+     * @throws Exception if any

      */

     public void testTrimRight()

-        throws Throwable

+        throws Exception

     {

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                  new Class[] { String.class }, new Object[] { null } ) );

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                  new Class[] { String.class }, new Object[] { "  " } ) );

-        assertEquals( "", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                  new Class[] { String.class }, new Object[] { "  \t  " } ) );

-        assertEquals( "a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                   new Class[] { String.class }, new Object[] { "a" } ) );

-        assertEquals( "a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                   new Class[] { String.class }, new Object[] { "a  " } ) );

-        assertEquals( "a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                   new Class[] { String.class }, new Object[] { "a\t" } ) );

-        assertEquals( "  a", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                     new Class[] { String.class }, new Object[] { "  a  " } ) );

-        assertEquals( "\ta", PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "trimRight",

-                                                     new Class[] { String.class }, new Object[] { "\ta\t" } ) );

+        Method method = AbstractFixJavadocMojo.class.getDeclaredMethod( "trimRight", String.class );

+        method.setAccessible( true );

+

+        assertEquals( "", (String) method.invoke( null, (String)null ) );

+        assertEquals( "", (String) method.invoke( null, "  " ) );

+        assertEquals( "", (String) method.invoke( null, "  \t  " ) );

+        assertEquals( "a", (String) method.invoke( null, "a" ) );

+        assertEquals( "a", (String) method.invoke( null, "a  " ) );

+        assertEquals( "a", (String) method.invoke( null, "a\t" ) );

+        assertEquals( "  a", (String) method.invoke( null, "  a  " ) );

+        assertEquals( "\ta", (String) method.invoke( null, "\ta\t" ) );

     }

 

     /**

-     * @throws Throwable if any

+     * @throws Exception if any

      */

     public void testHasInheritedTag()

-        throws Throwable

+        throws Exception

     {

+        Method method = AbstractFixJavadocMojo.class.getDeclaredMethod( "hasInheritedTag", String.class );

+        method.setAccessible( true );

+

         String content = "/** {@inheritDoc} */";

-        Boolean has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        Boolean has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.TRUE, has );

 

         content = "/**{@inheritDoc}*/";

-        has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.TRUE, has );

 

         content = "/**{@inheritDoc  }  */";

-        has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.TRUE, has );

 

         content = "/**  {@inheritDoc  }  */";

-        has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.TRUE, has );

 

         content = "/** */";

-        has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.FALSE, has );

 

         content = "/**{  @inheritDoc  }*/";

-        has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.FALSE, has );

 

         content = "/**{@ inheritDoc}*/";

-        has =

-            (Boolean) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "hasInheritedTag",

-                                              new Class[] { String.class }, new Object[] { content } );

+        has = (Boolean) method.invoke( null, content );

         assertEquals( Boolean.FALSE, has );

     }

 

@@ -348,9 +324,10 @@
                       "     * any" + EOL +

                       "     *", javadocContent );

 

-        String withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { javadocContent } );

+        Method method = AbstractFixJavadocMojo.class.getDeclaredMethod( "removeLastEmptyJavadocLines", String.class );

+        method.setAccessible( true );

+

+        String withoutEmptyJavadocLines = (String) method.invoke( null, javadocContent  );

         assertTrue( withoutEmptyJavadocLines.endsWith( "any" ) );

 

         String methodJavadoc = AbstractFixJavadocMojo.getJavadocComment( content, javaMethod );

@@ -359,9 +336,7 @@
                 "     *" + EOL +

                 "     *      Method." + EOL +

                 "     *", methodJavadoc );

-        withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { methodJavadoc } );

+        withoutEmptyJavadocLines = (String) method.invoke( null, methodJavadoc );

         assertTrue( withoutEmptyJavadocLines.endsWith( "Method." ) );

 

         assertEquals( 5, javaMethod.getTags().size() );

@@ -374,17 +349,13 @@
         assertEquals( "     * @param args not" + EOL +

                 "     *" + EOL +

                 "     * null", tagJavadoc );

-        withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { tagJavadoc } );

+        withoutEmptyJavadocLines = (String) method.invoke( null, tagJavadoc );

         assertTrue( withoutEmptyJavadocLines.endsWith( "null" ) );

 

         tag = javaMethod.getTags().get( 1 );

         tagJavadoc = mojoInstance.getJavadocComment( content, javaMethod, tag );

         assertEquals( "     * @param i non negative", tagJavadoc );

-        withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { tagJavadoc } );

+        withoutEmptyJavadocLines = (String) method.invoke( null, tagJavadoc );

         assertTrue( withoutEmptyJavadocLines.endsWith( "negative" ) );

 

         tag = javaMethod.getTags().get( 2 );

@@ -392,9 +363,7 @@
         assertEquals( "     * @param object could" + EOL +

                 "     * be" + EOL +

                 "     *      null", tagJavadoc );

-        withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { tagJavadoc } );

+        withoutEmptyJavadocLines = (String) method.invoke( null, tagJavadoc );

         assertTrue( withoutEmptyJavadocLines.endsWith( "null" ) );

 

         tag = javaMethod.getTags().get( 3 );

@@ -402,9 +371,7 @@
         assertEquals( "     * @return a" + EOL +

                 "     * String" + EOL +

                 "     *", tagJavadoc );

-        withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { tagJavadoc } );

+        withoutEmptyJavadocLines = (String) method.invoke( null, tagJavadoc );

         assertTrue( withoutEmptyJavadocLines.endsWith( "String" ) );

 

         tag = javaMethod.getTags().get( 4 );

@@ -412,9 +379,7 @@
         assertEquals( "     * @throws Exception if" + EOL +

                 "     * any" + EOL +

                 "     *", tagJavadoc );

-        withoutEmptyJavadocLines =

-            (String) PrivateAccessor.invoke( AbstractFixJavadocMojo.class, "removeLastEmptyJavadocLines",

-                                             new Class[] { String.class }, new Object[] { tagJavadoc } );

+        withoutEmptyJavadocLines = (String) method.invoke( null, tagJavadoc );

         assertTrue( withoutEmptyJavadocLines.endsWith( "any" ) );

     }

 

@@ -479,8 +444,8 @@
         setVariableValueToObject( mojoInstance, "fixTags", "author, version, since, param, return, throws, link" );

         setVariableValueToObject(mojoInstance, "defaultSince", "1.0");

         setVariableValueToObject(mojoInstance, "level", "protected");

-        

-        PrivateAccessor.invoke( mojoInstance, "init", new Class[] { }, new String[] { } );

+

+        invokeMethod( mojoInstance, true, "init" );

         

         String[] fixTags = (String[]) getVariableValueFromObject(mojoInstance, "fixTagsSplitted");

         

@@ -494,7 +459,7 @@
         assertEquals(7, fixTags.length);

         

         setVariableValueToObject( mojoInstance, "fixTags", "return, fake_value" );

-        PrivateAccessor.invoke( mojoInstance, "init", new Class[] { }, new String[] { } );

+        invokeMethod( mojoInstance, true, "init" );

         fixTags = (String[]) getVariableValueFromObject(mojoInstance, "fixTagsSplitted");

         

         assertEquals("return", fixTags[0]);