You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/07/04 21:20:02 UTC

[maven-jxr] branch JXR-142 updated (64c867c -> 4cd68c6)

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

rfscholte pushed a change to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git.


    from 64c867c  Remove unnecessary cast
     add 6f50a1c  Add non-forking jxr/test-jxr goals
     new eefce4c  Introduce ClassInfo
     new 3759ef8  Introduce PackageInfo
     new 0033d89  Introduce ProjectInfo
     new 79976c1  Remove unnecessary cast
     new 8b38211  [JXR-142] Switch to JSR330 Dependency Injection, [JXR-144] Require Maven 3.1.0
     new 4cd68c6  Fix merge conflicts

The 6 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:
 maven-jxr-plugin/pom.xml                           |   7 +-
 .../invoker.properties                             |   3 +-
 .../it/{simple-project => JXR-143_nofork}/pom.xml  |  32 ++++-
 .../src/main/java/org/apache/maven/jxr/it/App.java |   0
 .../main/java/org/apache/maven/jxr/it/App2.java    |   0
 .../test/java/org/apache/maven/jxr/it/AppTest.java |   0
 .../verify.groovy                                  |  76 +++++------
 .../apache/maven/plugin/jxr/AbstractJxrReport.java |   5 +-
 .../apache/maven/plugin/jxr/JxrNoForkReport.java   |  37 ++----
 .../maven/plugin/jxr/JxrTestNoForkReport.java      |  24 ++--
 .../apache/maven/plugin/jxr/PluginLogAdapter.java  |  68 ----------
 .../src/site/apt/examples/nofork.apt.vm            |  72 +++++++++++
 maven-jxr-plugin/src/site/apt/index.apt            |  11 +-
 maven-jxr-plugin/src/site/site.xml                 |   1 +
 .../apache/maven/plugin/jxr/JxrTestReportTest.java |   6 -
 maven-jxr/pom.xml                                  |  34 ++++-
 .../org/apache/maven/jxr/DirectoryIndexer.java     |  22 +---
 .../src/main/java/org/apache/maven/jxr/JXR.java    |  42 +++---
 .../org/apache/maven/jxr/JavaCodeTransform.java    | 141 ++++++++++-----------
 .../org/apache/maven/jxr/log/VelocityLogger.java   |  65 ----------
 .../org/apache/maven/jxr/pacman/FileManager.java   |  18 +--
 .../apache/maven/jxr/pacman/PackageManager.java    |  68 ++++------
 .../org/apache/maven/jxr/pacman/PackageType.java   |  12 +-
 .../org/apache/maven/jxr/DirectoryIndexerTest.java |  30 +++--
 .../org/apache/maven/jxr/IncludeExcludeTest.java   |  26 ++--
 .../test/java/org/apache/maven/jxr/JXR141Test.java |  20 +--
 .../apache/maven/jxr/JavaCodeTransformTest.java    |  30 ++---
 .../java/org/apache/maven/jxr/JxrBeanTest.java     |  22 ++--
 pom.xml                                            |   4 +-
 29 files changed, 404 insertions(+), 472 deletions(-)
 copy maven-jxr-plugin/src/it/{JXR-100_parameterlink => JXR-143_nofork}/invoker.properties (95%)
 copy maven-jxr-plugin/src/it/{simple-project => JXR-143_nofork}/pom.xml (73%)
 copy maven-jxr-plugin/src/it/{simple-project => JXR-143_nofork}/src/main/java/org/apache/maven/jxr/it/App.java (100%)
 copy maven-jxr-plugin/src/it/{simple-project => JXR-143_nofork}/src/main/java/org/apache/maven/jxr/it/App2.java (100%)
 copy maven-jxr-plugin/src/it/{simple-project => JXR-143_nofork}/src/test/java/org/apache/maven/jxr/it/AppTest.java (100%)
 copy maven-jxr-plugin/src/it/{simple-project => JXR-143_nofork}/verify.groovy (94%)
 rename maven-jxr/src/test/java/org/apache/maven/jxr/DummyLog.java => maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrNoForkReport.java (59%)
 rename maven-jxr/src/main/java/org/apache/maven/jxr/log/Log.java => maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/JxrTestNoForkReport.java (58%)
 delete mode 100644 maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/PluginLogAdapter.java
 create mode 100644 maven-jxr-plugin/src/site/apt/examples/nofork.apt.vm
 delete mode 100644 maven-jxr/src/main/java/org/apache/maven/jxr/log/VelocityLogger.java


[maven-jxr] 05/06: [JXR-142] Switch to JSR330 Dependency Injection, [JXR-144] Require Maven 3.1.0

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

rfscholte pushed a commit to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit 8b38211706911b9fd52ffbc8c44028e10e5c1e7f
Author: rfscholte <rf...@apache.org>
AuthorDate: Thu Jul 4 23:15:25 2019 +0200

    [JXR-142] Switch to JSR330 Dependency Injection,
    [JXR-144] Require Maven 3.1.0
---
 maven-jxr-plugin/pom.xml                           |   7 +-
 .../apache/maven/plugin/jxr/AbstractJxrReport.java |   5 +-
 .../apache/maven/plugin/jxr/PluginLogAdapter.java  |  68 ----------
 .../apache/maven/plugin/jxr/JxrTestReportTest.java |   6 -
 maven-jxr/pom.xml                                  |  34 ++++-
 .../org/apache/maven/jxr/DirectoryIndexer.java     |  22 +---
 .../src/main/java/org/apache/maven/jxr/JXR.java    |  42 +++---
 .../org/apache/maven/jxr/JavaCodeTransform.java    | 141 ++++++++++-----------
 .../main/java/org/apache/maven/jxr/log/Log.java    |  37 ------
 .../org/apache/maven/jxr/log/VelocityLogger.java   |  65 ----------
 .../org/apache/maven/jxr/pacman/FileManager.java   |  18 +--
 .../apache/maven/jxr/pacman/PackageManager.java    |  68 ++++------
 .../org/apache/maven/jxr/pacman/PackageType.java   |  12 +-
 .../org/apache/maven/jxr/DirectoryIndexerTest.java |  30 +++--
 .../test/java/org/apache/maven/jxr/DummyLog.java   |  52 --------
 .../org/apache/maven/jxr/IncludeExcludeTest.java   |  26 ++--
 .../test/java/org/apache/maven/jxr/JXR141Test.java |  20 +--
 .../apache/maven/jxr/JavaCodeTransformTest.java    |  30 ++---
 .../java/org/apache/maven/jxr/JxrBeanTest.java     |  22 ++--
 pom.xml                                            |   4 +-
 20 files changed, 231 insertions(+), 478 deletions(-)

diff --git a/maven-jxr-plugin/pom.xml b/maven-jxr-plugin/pom.xml
index 8e8917f..103b383 100644
--- a/maven-jxr-plugin/pom.xml
+++ b/maven-jxr-plugin/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.jxr</groupId>
     <artifactId>jxr</artifactId>
-    <version>3.0.1-SNAPSHOT</version>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.maven.plugins</groupId>
@@ -36,7 +36,7 @@ under the License.
   <inceptionYear>2005</inceptionYear>
 
   <properties>
-    <mavenVersion>3.0</mavenVersion>
+    <mavenVersion>3.1.0</mavenVersion> <!-- support javax.inject -->
     <doxia-sitetoolsVersion>1.8</doxia-sitetoolsVersion>
     <doxiaVersion>1.8</doxiaVersion>
   </properties>
@@ -166,7 +166,7 @@ under the License.
     <dependency>
       <groupId>org.apache.maven.plugin-testing</groupId>
       <artifactId>maven-plugin-testing-harness</artifactId>
-      <version>2.1</version>
+      <version>3.0.0</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -189,7 +189,6 @@ under the License.
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-invoker-plugin</artifactId>
             <configuration>
-              <streamLogs>true</streamLogs><!-- TEMPORARY -->
               <projectsDirectory>src/it</projectsDirectory>
               <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
               <pomIncludes>
diff --git a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java
index fa2085c..2f6586a 100644
--- a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java
+++ b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/AbstractJxrReport.java
@@ -163,6 +163,9 @@ public abstract class AbstractJxrReport
     @Parameter( property = "javadocVersion" )
     private String javadocVersion;
 
+    @Component
+    private JXR jxr;
+    
     /**
      * Version of the Javadoc templates to use.
      */
@@ -264,7 +267,6 @@ public abstract class AbstractJxrReport
     private void createXref( Locale locale, String destinationDirectory, List<String> sourceDirs )
         throws IOException, JxrException, MavenReportException
     {
-        JXR jxr = new JXR();
         jxr.setDest( Paths.get( destinationDirectory ) );
         if ( StringUtils.isEmpty( inputEncoding ) )
         {
@@ -274,7 +276,6 @@ public abstract class AbstractJxrReport
         }
         jxr.setInputEncoding( inputEncoding );
         jxr.setLocale( locale );
-        jxr.setLog( new PluginLogAdapter( getLog() ) );
         jxr.setOutputEncoding( getOutputEncoding() );
         jxr.setRevision( "HEAD" );
         jxr.setJavadocLinkDir( getJavadocLocation() );
diff --git a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/PluginLogAdapter.java b/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/PluginLogAdapter.java
deleted file mode 100644
index d0713a2..0000000
--- a/maven-jxr-plugin/src/main/java/org/apache/maven/plugin/jxr/PluginLogAdapter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.apache.maven.plugin.jxr;
-
-/*
- * 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.apache.maven.plugin.logging.Log;
-
-/**
- * Logging adapter.
- *
- * @author <a href="mailto:brett.NO-SPAM@apache.org">Brett Porter</a>
- * @version $Id$
- */
-public class PluginLogAdapter
-    implements org.apache.maven.jxr.log.Log
-{
-    private final Log log;
-
-    /**
-     * Class constructor
-     *
-     * @param log   the Log object to be used
-     */
-    public PluginLogAdapter( Log log )
-    {
-        this.log = log;
-    }
-
-    @Override
-    public void info( String string )
-    {
-        log.info( string );
-    }
-
-    @Override
-    public void debug( String string )
-    {
-        log.debug( string );
-    }
-
-    @Override
-    public void warn( String string )
-    {
-        log.warn( string );
-    }
-
-    @Override
-    public void error( String string )
-    {
-        log.error( string );
-    }
-}
diff --git a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrTestReportTest.java b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrTestReportTest.java
index a089758..63098ec 100644
--- a/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrTestReportTest.java
+++ b/maven-jxr-plugin/src/test/java/org/apache/maven/plugin/jxr/JxrTestReportTest.java
@@ -32,12 +32,6 @@ import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 public class JxrTestReportTest
     extends AbstractMojoTestCase
 {
-    protected void setUp()
-        throws Exception
-    {
-        super.setUp();
-    }
-
     /**
      * Method to test when the source dir is the test source dir
      *
diff --git a/maven-jxr/pom.xml b/maven-jxr/pom.xml
index b64407f..3f5e81d 100644
--- a/maven-jxr/pom.xml
+++ b/maven-jxr/pom.xml
@@ -25,7 +25,7 @@ under the License.
   <parent>
     <groupId>org.apache.maven.jxr</groupId>
     <artifactId>jxr</artifactId>
-    <version>3.0.1-SNAPSHOT</version>
+    <version>3.1.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.maven</groupId>
@@ -69,13 +69,29 @@ under the License.
         </plugin>
       </plugins>
     </pluginManagement>
+    <plugins>
+        <plugin>
+          <groupId>org.eclipse.sisu</groupId>
+          <artifactId>sisu-maven-plugin</artifactId>
+          <version>0.3.3</version>
+          <executions>
+            <execution>
+              <id>index-project</id>
+              <goals>
+                <goal>main-index</goal>
+                <goal>test-index</goal>
+              </goals>
+            </execution>
+          </executions>
+        </plugin>
+    </plugins>
   </build>
 
   <dependencies>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.plexus</artifactId>
+      <version>0.0.0.M2a</version> <!-- like Maven 3.1.0 -->
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -88,13 +104,19 @@ under the License.
 
     <dependency>
       <groupId>org.apache.velocity</groupId>
-      <artifactId>velocity</artifactId>
-      <version>1.5</version>
+      <artifactId>velocity-engine-core</artifactId>
+      <version>2.0</version>
     </dependency>
     <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
       <version>2.6</version>
     </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
index 832b57f..8e4aea9 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
@@ -25,12 +25,9 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Enumeration;
 import java.util.Map;
 import java.util.TreeMap;
 
-import org.apache.maven.jxr.log.Log;
-import org.apache.maven.jxr.log.VelocityLogger;
 import org.apache.maven.jxr.pacman.ClassType;
 import org.apache.maven.jxr.pacman.PackageManager;
 import org.apache.maven.jxr.pacman.PackageType;
@@ -210,13 +207,13 @@ public class DirectoryIndexer
      *
      * @throws JxrException If something went wrong
      */
-    public void process( Log log )
+    public void process()
         throws JxrException
     {
         ProjectInfo info = getProjectInfo();
 
         VelocityEngine engine = new VelocityEngine();
-        setProperties( engine, log );
+        setProperties( engine );
         try
         {
             engine.init();
@@ -252,7 +249,7 @@ public class DirectoryIndexer
     /*
      * Set Velocity properties to find templates
      */
-    private void setProperties( VelocityEngine engine, Log log )
+    private void setProperties( VelocityEngine engine )
     {
         Path templateDirFile = Paths.get( getTemplateDir() );
         if ( templateDirFile.isAbsolute() )
@@ -272,8 +269,8 @@ public class DirectoryIndexer
         }
         // avoid "unable to find resource 'VM_global_library.vm' in any resource loader."
         engine.setProperty( "velocimacro.library", "" );
-        engine.setProperty( Log.class.getName(), log );
-        engine.setProperty( "runtime.log.logsystem.class", VelocityLogger.class.getName() );
+//        engine.setProperty( Log.class.getName(), log );
+//        engine.setProperty( "runtime.log.logsystem.class", VelocityLogger.class.getName() );
     }
 
     /*
@@ -331,10 +328,8 @@ public class DirectoryIndexer
         Map<String, PackageInfo> allPackages = new TreeMap<>();
         Map<String, ClassInfo> allClasses = new TreeMap<>();
 
-        Enumeration<PackageType> packages = packageManager.getPackageTypes();
-        while ( packages.hasMoreElements() )
+        for ( PackageType pkg : packageManager.getPackageTypes() )
         {
-            PackageType pkg = packages.nextElement();
             String pkgName = pkg.getName();
             String pkgDir = pkgName.replace( '.', '/' );
             String rootRef = pkgName.replaceAll( "[^\\.]+(\\.|$)", "../" );
@@ -349,11 +344,8 @@ public class DirectoryIndexer
             }
 
             Map<String, ClassInfo> pkgClasses = new TreeMap<>();
-            Enumeration<ClassType> classes = pkg.getClassTypes();
-            while ( classes.hasMoreElements() )
+            for ( ClassType clazz : pkg.getClassTypes() )
             {
-                ClassType clazz = classes.nextElement();
-
                 String className = clazz.getName();
                 
                 ClassInfo classInfo = new ClassInfo( className, pkgDir );
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/JXR.java b/maven-jxr/src/main/java/org/apache/maven/jxr/JXR.java
index c87fcb9..a719ff0 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/JXR.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/JXR.java
@@ -20,9 +20,9 @@ package org.apache.maven.jxr;
  */
 
 import org.apache.maven.jxr.ant.DirectoryScanner;
-import org.apache.maven.jxr.log.Log;
 import org.apache.maven.jxr.pacman.FileManager;
 import org.apache.maven.jxr.pacman.PackageManager;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 
 import java.io.IOException;
 import java.nio.file.Path;
@@ -30,19 +30,30 @@ import java.nio.file.Paths;
 import java.util.List;
 import java.util.Locale;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 /**
  * Main entry point into Maven used to kick off the XReference code building.
  *
  * @author <a href="mailto:burton@apache.org">Kevin A. Burton</a>
  * @version $Id$
  */
-public class JXR
+@Named
+@Singleton
+public class JXR extends AbstractLogEnabled
 {
+    @Inject
+    private PackageManager pkgmgr;
+
     /**
-     * The Log.
+     * Handles taking .java files and changing them into html. "More than meets
+     * the eye!" :)
      */
-    private Log log;
-
+    @Inject
+    private JavaCodeTransform transformer;
+    
     /**
      * The default list of include patterns to use.
      */
@@ -64,11 +75,6 @@ public class JXR
      */
     private Path javadocLinkDir;
 
-    /**
-     * Handles taking .java files and changing them into html. "More than meets
-     * the eye!" :)
-     */
-    private JavaCodeTransform transformer;
 
     /**
      * The revision of the module currently being processed.
@@ -96,8 +102,6 @@ public class JXR
     public void processPath( PackageManager packageManager, Path sourceDir, String bottom )
         throws IOException
     {
-        this.transformer = new JavaCodeTransform( packageManager );
-
         DirectoryScanner ds = new DirectoryScanner();
         // I'm not sure why we don't use the directoryScanner in packageManager,
         // but since we don't we need to set includes/excludes here as well
@@ -205,14 +209,6 @@ public class JXR
     }
 
     /**
-     * @param log
-     */
-    public void setLog( Log log )
-    {
-        this.log = log;
-    }
-
-    /**
      * @param sourceDirs
      * @param templateDir
      * @param windowTitle
@@ -228,7 +224,7 @@ public class JXR
         FileManager fileManager = new FileManager();
         fileManager.setEncoding( inputEncoding );
 
-        PackageManager pkgmgr = new PackageManager( log, fileManager );
+        
         pkgmgr.setExcludes( excludes );
         pkgmgr.setIncludes( includes );
 
@@ -249,7 +245,7 @@ public class JXR
         indexer.setWindowTitle( windowTitle );
         indexer.setDocTitle( docTitle );
         indexer.setBottom( bottom );
-        indexer.process( log );
+        indexer.process();
     }
 
     // ----------------------------------------------------------------------
@@ -267,7 +263,7 @@ public class JXR
     private void transform( Path sourceFile, Path destFile, String bottom )
         throws IOException
     {
-        log.debug( sourceFile + " -> " + destFile );
+        getLogger().debug( sourceFile + " -> " + destFile );
 
         // get a relative link to the javadocs
         Path javadoc = javadocLinkDir != null ? getRelativeLink( destFile.getParent(), javadocLinkDir ) : null;
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java b/maven-jxr/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java
index 8102e6f..106280f 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/JavaCodeTransform.java
@@ -61,8 +61,13 @@ import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Set;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 /**
  * Syntax highlights java by turning it into html. A codeviewer object is created and then keeps state as lines are
  * passed in. Each line passed in as java test, is returned as syntax highlighted html text. Users of the class can set
@@ -90,6 +95,8 @@ import java.util.Set;
  *                                  importFilter
  * </pre>
  */
+@Named
+@Singleton
 public class JavaCodeTransform
     implements Serializable
 {
@@ -166,7 +173,7 @@ public class JavaCodeTransform
     /**
      * HashTable containing java reserved words
      */
-    private Hashtable<String, String> reservedWords = new Hashtable<>();
+    private Map<String, String> reservedWords = new Hashtable<>();
 
     /**
      * flag set to true when a multi-line comment is started
@@ -211,27 +218,71 @@ public class JavaCodeTransform
     /**
      * Package Manager for this project.
      */
+    @Inject
     private PackageManager packageManager;
 
     /**
      * current file manager
      */
+    @Inject
     private FileManager fileManager;
 
-    // ----------------------------------------------------------------------
-    // constructor
-    // ----------------------------------------------------------------------
-
-    /**
-     * Constructor for the JavaCodeTransform object
-     *
-     * @param packageManager PackageManager for this project
-     */
-    public JavaCodeTransform( PackageManager packageManager )
     {
-        this.packageManager = packageManager;
-        loadHash();
-        this.fileManager = packageManager.getFileManager();
+        reservedWords.put( "abstract", "abstract" );
+        reservedWords.put( "do", "do" );
+        reservedWords.put( "inner", "inner" );
+        reservedWords.put( "public", "public" );
+        reservedWords.put( "var", "var" );
+        reservedWords.put( "boolean", "boolean" );
+        reservedWords.put( "continue", "continue" );
+        reservedWords.put( "int", "int" );
+        reservedWords.put( "return", "return" );
+        reservedWords.put( "void", "void" );
+        reservedWords.put( "break", "break" );
+        reservedWords.put( "else", "else" );
+        reservedWords.put( "interface", "interface" );
+        reservedWords.put( "short", "short" );
+        reservedWords.put( "volatile", "volatile" );
+        reservedWords.put( "byvalue", "byvalue" );
+        reservedWords.put( "extends", "extends" );
+        reservedWords.put( "long", "long" );
+        reservedWords.put( "static", "static" );
+        reservedWords.put( "while", "while" );
+        reservedWords.put( "case", "case" );
+        reservedWords.put( "final", "final" );
+        reservedWords.put( "native", "native" );
+        reservedWords.put( "super", "super" );
+        reservedWords.put( "transient", "transient" );
+        reservedWords.put( "cast", "cast" );
+        reservedWords.put( "float", "float" );
+        reservedWords.put( "new", "new" );
+        reservedWords.put( "rest", "rest" );
+        reservedWords.put( "catch", "catch" );
+        reservedWords.put( "for", "for" );
+        reservedWords.put( "null", "null" );
+        reservedWords.put( "synchronized", "synchronized" );
+        reservedWords.put( "char", "char" );
+        reservedWords.put( "finally", "finally" );
+        reservedWords.put( "operator", "operator" );
+        reservedWords.put( "this", "this" );
+        reservedWords.put( "class", "class" );
+        reservedWords.put( "generic", "generic" );
+        reservedWords.put( "outer", "outer" );
+        reservedWords.put( "switch", "switch" );
+        reservedWords.put( "const", "const" );
+        reservedWords.put( "goto", "goto" );
+        reservedWords.put( "package", "package" );
+        reservedWords.put( "throw", "throw" );
+        reservedWords.put( "double", "double" );
+        reservedWords.put( "if", "if" );
+        reservedWords.put( "private", "private" );
+        reservedWords.put( "true", "true" );
+        reservedWords.put( "default", "default" );
+        reservedWords.put( "import", "import" );
+        reservedWords.put( "protected", "protected" );
+        reservedWords.put( "try", "try" );
+        reservedWords.put( "throws", "throws" );
+        reservedWords.put( "implements", "implements" );
     }
 
     // ----------------------------------------------------------------------
@@ -907,68 +958,6 @@ public class JavaCodeTransform
 
     /**
      * Description of the Method
-     */
-    private void loadHash()
-    {
-        reservedWords.put( "abstract", "abstract" );
-        reservedWords.put( "do", "do" );
-        reservedWords.put( "inner", "inner" );
-        reservedWords.put( "public", "public" );
-        reservedWords.put( "var", "var" );
-        reservedWords.put( "boolean", "boolean" );
-        reservedWords.put( "continue", "continue" );
-        reservedWords.put( "int", "int" );
-        reservedWords.put( "return", "return" );
-        reservedWords.put( "void", "void" );
-        reservedWords.put( "break", "break" );
-        reservedWords.put( "else", "else" );
-        reservedWords.put( "interface", "interface" );
-        reservedWords.put( "short", "short" );
-        reservedWords.put( "volatile", "volatile" );
-        reservedWords.put( "byvalue", "byvalue" );
-        reservedWords.put( "extends", "extends" );
-        reservedWords.put( "long", "long" );
-        reservedWords.put( "static", "static" );
-        reservedWords.put( "while", "while" );
-        reservedWords.put( "case", "case" );
-        reservedWords.put( "final", "final" );
-        reservedWords.put( "native", "native" );
-        reservedWords.put( "super", "super" );
-        reservedWords.put( "transient", "transient" );
-        reservedWords.put( "cast", "cast" );
-        reservedWords.put( "float", "float" );
-        reservedWords.put( "new", "new" );
-        reservedWords.put( "rest", "rest" );
-        reservedWords.put( "catch", "catch" );
-        reservedWords.put( "for", "for" );
-        reservedWords.put( "null", "null" );
-        reservedWords.put( "synchronized", "synchronized" );
-        reservedWords.put( "char", "char" );
-        reservedWords.put( "finally", "finally" );
-        reservedWords.put( "operator", "operator" );
-        reservedWords.put( "this", "this" );
-        reservedWords.put( "class", "class" );
-        reservedWords.put( "generic", "generic" );
-        reservedWords.put( "outer", "outer" );
-        reservedWords.put( "switch", "switch" );
-        reservedWords.put( "const", "const" );
-        reservedWords.put( "goto", "goto" );
-        reservedWords.put( "package", "package" );
-        reservedWords.put( "throw", "throw" );
-        reservedWords.put( "double", "double" );
-        reservedWords.put( "if", "if" );
-        reservedWords.put( "private", "private" );
-        reservedWords.put( "true", "true" );
-        reservedWords.put( "default", "default" );
-        reservedWords.put( "import", "import" );
-        reservedWords.put( "protected", "protected" );
-        reservedWords.put( "try", "try" );
-        reservedWords.put( "throws", "throws" );
-        reservedWords.put( "implements", "implements" );
-    }
-
-    /**
-     * Description of the Method
      *
      * @param oos ObjectOutputStream
      * @throws IOException
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/log/Log.java b/maven-jxr/src/main/java/org/apache/maven/jxr/log/Log.java
deleted file mode 100644
index 85d187f..0000000
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/log/Log.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.apache.maven.jxr.log;
-
-/*
- * 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.
- */
-
-/**
- * Logging interface.
- *
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @version $Id$
- */
-public interface Log
-{
-    void info( String message );
-
-    void debug( String message );
-
-    void warn( String message );
-
-    void error( String message );
-}
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/log/VelocityLogger.java b/maven-jxr/src/main/java/org/apache/maven/jxr/log/VelocityLogger.java
deleted file mode 100644
index 774caab..0000000
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/log/VelocityLogger.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.maven.jxr.log;
-
-/*
- * 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.apache.velocity.runtime.RuntimeServices;
-import org.apache.velocity.runtime.log.LogSystem;
-
-/**
- * Logging interface for Velocity.
- *
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @version $Id$
- */
-public class VelocityLogger
-    implements LogSystem
-{
-    private Log log;
-
-    @Override
-    public void init( RuntimeServices runtimeServices )
-    {
-        log = (Log) runtimeServices.getProperty( Log.class.getName() );
-    }
-
-    @Override
-    public void logVelocityMessage( int level, String msg )
-    {
-        switch ( level )
-        {
-            // velocity info messages are too verbose, just consider them as debug messages...
-            // case INFO_ID:
-            //    log.info( msg );
-            //    break;
-
-            case WARN_ID:
-                log.warn( msg );
-                break;
-
-            case ERROR_ID:
-                log.error( msg );
-                break;
-
-            default:
-                log.debug( msg );
-                break;
-        }
-    }
-}
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/FileManager.java b/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/FileManager.java
index 03e2f4a..9f140b4 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/FileManager.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/FileManager.java
@@ -24,6 +24,9 @@ import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 /**
  * <p>
  *
@@ -35,26 +38,15 @@ import java.util.Map;
  * Note. This assumes that the file will not be modified on disk while
  * Alexandria is running. </p>
  */
+@Named
+@Singleton
 public class FileManager
 {
-    /**
-     * The Singleton instance of this FileManager
-     */
-    private static FileManager instance = new FileManager();
-
     private Map<Path, JavaFile> files = new HashMap<>();
 
     private String encoding = null;
 
     /**
-     * Get an instance of the FileManager
-     */
-    public static FileManager getInstance()
-    {
-        return instance;
-    }
-
-    /**
      * Get a file from it's name. If the file does not exist within the
      * FileManager, create a new one and return it.
      */
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java b/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java
index 4330ede..3288dc2 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageManager.java
@@ -19,38 +19,44 @@ package org.apache.maven.jxr.pacman;
  * under the License.
  */
 
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.DirectoryScanner;
-import org.apache.maven.jxr.log.Log;
 
 import java.io.IOException;
 import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Enumeration;
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Hashtable;
+import java.util.Map;
 import java.util.Set;
 
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
 /**
  * Given a list of directories, parse them out and store them as rendered
  * packages, classes, imports, etc.
  */
-public class PackageManager
+@Named
+@Singleton
+public class PackageManager extends AbstractLogEnabled
 {
-    private final Log log;
+    @Inject
+    private FileManager fileManager;
 
     private Set<Path> directories = new HashSet<>();
 
     /**
      * All the packages that have been parsed
      */
-    private Hashtable<String, PackageType> packages = new Hashtable<>();
+    private Map<String, PackageType> packages = new HashMap<>();
 
     /**
      * The default Java package.
      */
     private PackageType defaultPackage = new PackageType();
 
-    private FileManager fileManager;
 
     /**
      * The list of exclude patterns to use.
@@ -62,12 +68,6 @@ public class PackageManager
      */
     private String[] includes = { "**/*.java" };
 
-    public PackageManager( Log log, FileManager fileManager )
-    {
-        this.log = log;
-        this.fileManager = fileManager;
-    }
-
     /**
      * Given the name of a package (Ex: org.apache.maven.util) obtain it from
      * the PackageManager
@@ -95,21 +95,20 @@ public class PackageManager
     /**
      * Get all of the packages in the PackageManager
      */
-    public Enumeration<PackageType> getPackageTypes()
+    public Collection<PackageType> getPackageTypes()
     {
-        return packages.elements();
+        return packages.values();
     }
 
     /**
      * Parse out all the directories on which this depends.
      */
-    private void parse( String directory )
+    private void parse( Path baseDir )
     {
         // Go through each directory and get the java source 
         // files for this dir.
-        log.debug( "Scanning " + directory );
+        getLogger().debug( "Scanning " + baseDir );
         DirectoryScanner directoryScanner = new DirectoryScanner();
-        Path baseDir = Paths.get( directory );
         directoryScanner.setBasedir( baseDir.toFile() );
         directoryScanner.setExcludes( excludes );
         directoryScanner.setIncludes( includes );
@@ -117,7 +116,7 @@ public class PackageManager
 
         for ( String file : directoryScanner.getIncludedFiles() )
         {
-            log.debug( "parsing... " + file );
+            getLogger().debug( "parsing... " + file );
 
             //now parse out this file to get the packages/classname/etc
             try
@@ -161,7 +160,7 @@ public class PackageManager
     {
         if ( this.directories.add( directory ) )
         {
-            this.parse( directory.toString() );
+            this.parse( directory );
         }
     }
 
@@ -171,37 +170,20 @@ public class PackageManager
     public void dump()
     {
 
-        log.debug( "Dumping out PackageManager structure" );
+        getLogger().debug( "Dumping out PackageManager structure" );
 
-        Enumeration<PackageType> pts = this.getPackageTypes();
-
-        while ( pts.hasMoreElements() )
+        for ( PackageType current  : getPackageTypes() )
         {
-
-            //get the current package and print it.
-            PackageType current = pts.nextElement();
-
-            log.debug( current.getName() );
+            getLogger().debug( current.getName() );
 
             //get the classes under the package and print those too.
-            Enumeration<ClassType> classes = current.getClassTypes();
-
-            while ( classes.hasMoreElements() )
+            for ( ClassType currentClass  : current.getClassTypes() )
             {
-
-                ClassType currentClass = classes.nextElement();
-
-                log.debug( "\t" + currentClass.getName() );
-
+                getLogger().debug( '\t' + currentClass.getName() );
             }
         }
     }
 
-    public FileManager getFileManager()
-    {
-        return fileManager;
-    }
-
     public void setExcludes( String[] excludes )
     {
         this.excludes = excludes;
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageType.java b/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageType.java
index 1dec357..9817a45 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageType.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/pacman/PackageType.java
@@ -19,8 +19,9 @@ package org.apache.maven.jxr.pacman;
  * under the License.
  */
 
-import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Represents a Java package and its subclasses.
@@ -29,7 +30,7 @@ public class PackageType
     extends BaseType
 {
 
-    private Hashtable<String, ClassType> classes = new Hashtable<String, ClassType>();
+    private Map<String, ClassType> classes = new HashMap<>();
 
     /**
      * Create a Java package
@@ -52,10 +53,9 @@ public class PackageType
     /**
      * Get all the known classes
      */
-    public Enumeration<ClassType> getClassTypes()
+    public Collection<ClassType> getClassTypes()
     {
-
-        return classes.elements();
+        return classes.values();
     }
 
     /**
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
index d3feff6..605655c 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
@@ -1,8 +1,5 @@
 package org.apache.maven.jxr;
 
-import org.apache.maven.jxr.DirectoryIndexer.ClassInfo;
-import org.apache.maven.jxr.DirectoryIndexer.PackageInfo;
-import org.apache.maven.jxr.DirectoryIndexer.ProjectInfo;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -23,27 +20,32 @@ import org.apache.maven.jxr.DirectoryIndexer.ProjectInfo;
  * under the License.
  */
 
-import org.apache.maven.jxr.pacman.FileManager;
-import org.apache.maven.jxr.pacman.PackageManager;
-import org.junit.Test;
-
 import java.nio.file.Paths;
 import java.util.Iterator;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.apache.maven.jxr.DirectoryIndexer.ClassInfo;
+import org.apache.maven.jxr.DirectoryIndexer.PackageInfo;
+import org.apache.maven.jxr.DirectoryIndexer.ProjectInfo;
+import org.apache.maven.jxr.pacman.PackageManager;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
 
-public class DirectoryIndexerTest {
+public class DirectoryIndexerTest extends PlexusTestCase 
+{
+    @Override
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration )
+    {
+        configuration.setClassPathScanning( "INDEX" );
+    }
+    
     /**
      * Parse the files in test/resources/jxr68 packages, ensure all are present in the allClasses Map,
      * in the correct order.
      */
-    @Test
-    public void testJXR_68()
+    public void testJXR_68() throws Exception
     {
-        FileManager fileManager = FileManager.getInstance();
-        PackageManager packageManager = new PackageManager( new DummyLog(), fileManager );
+        PackageManager packageManager = lookup( PackageManager.class );
         packageManager.process( Paths.get( "src/test/resources/jxr68" ) );
         DirectoryIndexer directoryIndexer = new DirectoryIndexer( packageManager, "" );
 
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/DummyLog.java b/maven-jxr/src/test/java/org/apache/maven/jxr/DummyLog.java
deleted file mode 100644
index 4e2340a..0000000
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/DummyLog.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.apache.maven.jxr;
-
-/*
- * 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.apache.maven.jxr.log.Log;
-
-/**
- * Dummy logger.
- *
- * @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @version $Id$
- */
-public class DummyLog
-    implements Log
-{
-    public void info( String message )
-    {
-        System.out.println( message );
-    }
-
-    public void debug( String message )
-    {
-        System.out.println( message );
-    }
-
-    public void warn( String message )
-    {
-        System.out.println( message );
-    }
-
-    public void error( String message )
-    {
-        System.out.println( message );
-    }
-}
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/IncludeExcludeTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/IncludeExcludeTest.java
index 5a80669..d203baa 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/IncludeExcludeTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/IncludeExcludeTest.java
@@ -19,16 +19,13 @@ package org.apache.maven.jxr;
  * under the License.
  */
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collections;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
 
 /**
  * Test include/exclude patterns.
@@ -36,22 +33,27 @@ import org.junit.Test;
  * @author <a href="mailto:dennisl@apache.org">Dennis Lundberg</a>
  * @version $Id$
  */
-public class IncludeExcludeTest
+public class IncludeExcludeTest extends PlexusTestCase  
 {
     private JXR jxr;
-
-    @Before
-    public void setUp()
+ 
+    @Override
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration )
+    {
+        configuration.setClassPathScanning( "INDEX" );
+    }
+    
+    @Override
+    public void setUp() throws Exception
     {
-        jxr = new JXR();
+        super.setUp();
+        jxr = lookup( JXR.class );
         jxr.setDest( Paths.get( "target" ) );
         jxr.setInputEncoding( "ISO-8859-1" );
         jxr.setOutputEncoding( "ISO-8859-1" );
         jxr.setJavadocLinkDir( Paths.get( "." ) );
-        jxr.setLog( new DummyLog() );
     }
 
-    @Test
     public void testIncludeExclude()
         throws Exception
     {
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/JXR141Test.java b/maven-jxr/src/test/java/org/apache/maven/jxr/JXR141Test.java
index a73ecea..5937a50 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/JXR141Test.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/JXR141Test.java
@@ -19,7 +19,6 @@ package org.apache.maven.jxr;
  * under the License.
  */
 
-import org.junit.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -27,20 +26,25 @@ import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
 
 /**
  * Simple unit-testtest that illustrates a line with more
  * than one "token" to replace
  */
-public class JXR141Test {
-
-    @Test
-    public void processPath() throws Exception
+public class JXR141Test extends PlexusTestCase 
+{
+    @Override
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration )
+    {
+        configuration.setClassPathScanning( "INDEX" );
+    }
+    
+    public void testProcessPath() throws Exception
     {
-        JXR jxr = new JXR();
+        JXR jxr = lookup( JXR.class );
         jxr.setDest( Paths.get("target/jxr-141" ) );
-        jxr.setLog( new DummyLog() );
         jxr.setOutputEncoding( "UTF-8" );
         jxr.xref( Collections.singletonList( "src/test/resources/jxr141" ),"templates/jdk4",
                 "title", "title", "copyright" );
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/JavaCodeTransformTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/JavaCodeTransformTest.java
index 5c93306..1b1f37c 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/JavaCodeTransformTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/JavaCodeTransformTest.java
@@ -19,44 +19,42 @@ package org.apache.maven.jxr;
  * under the License.
  */
 
-import static org.junit.Assert.assertTrue;
-
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Locale;
 
-import org.apache.maven.jxr.pacman.FileManager;
-import org.apache.maven.jxr.pacman.PackageManager;
-import org.junit.Before;
-import org.junit.Test;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
 
 /**
  * JUnit test for {@link JavaCodeTransform}.
  */
-public class JavaCodeTransformTest
+public class JavaCodeTransformTest extends PlexusTestCase
 {
     /** JavaCodeTransform object under test */
     private JavaCodeTransform codeTransform;
 
-    /***/
-    private PackageManager packageManager;
-
+    @Override
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration )
+    {
+        configuration.setClassPathScanning( "INDEX" );
+    }
+    
     /**
      * Set up this test.
      */
-    @Before
-    public void setUp()
+    @Override
+    public void setUp() throws Exception
     {
-        packageManager = new PackageManager( new DummyLog(), new FileManager() );
-        codeTransform = new JavaCodeTransform( packageManager );
+        super.setUp();
+        codeTransform = lookup( JavaCodeTransform.class );
     }
 
     /**
      * Test basic transformation of a java source file.
      */
-    @Test
     public void testTransform()
         //test transforms its own sourcefile, so add some comments
         throws Exception // single line despite /*
@@ -74,7 +72,6 @@ public class JavaCodeTransformTest
     /**
      * Test what happens with an empty sourcefile.
      */
-    @Test
     public void testTransformWithEmptyClassFile()
         throws Exception
     {
@@ -89,7 +86,6 @@ public class JavaCodeTransformTest
     /**
      * Test proper handling of link
      */
-    @Test
     public void testLinkHandling()
         throws Exception
     {
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/JxrBeanTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/JxrBeanTest.java
index fcac23b..7ecefdf 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/JxrBeanTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/JxrBeanTest.java
@@ -22,26 +22,30 @@ package org.apache.maven.jxr;
 import java.nio.file.Paths;
 import java.util.Collections;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.PlexusTestCase;
 
-public class JxrBeanTest
+public class JxrBeanTest extends PlexusTestCase
 {
-
     private JXR jxrBean;
 
-    @Before
-    public void setUp()
+    @Override
+    protected void customizeContainerConfiguration( ContainerConfiguration configuration )
+    {
+        configuration.setClassPathScanning( "INDEX" );
+    }
+    
+    @Override
+    public void setUp() throws Exception
     {
-        jxrBean = new JXR();
+        super.setUp();
+        jxrBean = lookup( JXR.class );
         jxrBean.setDest( Paths.get( "target" ) );
         jxrBean.setInputEncoding( "ISO-8859-1" );
         jxrBean.setOutputEncoding( "ISO-8859-1" );
         jxrBean.setJavadocLinkDir( Paths.get( "." ) );
-        jxrBean.setLog( new DummyLog() );
     }
 
-    @Test
     public void testXref()
         throws Exception
     {
diff --git a/pom.xml b/pom.xml
index e61a9f5..be2f7ec 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@ under the License.
 
   <groupId>org.apache.maven.jxr</groupId>
   <artifactId>jxr</artifactId>
-  <version>3.0.1-SNAPSHOT</version>
+  <version>3.1.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>Maven JXR Parent</name>
@@ -89,7 +89,7 @@ under the License.
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <scope>test</scope>
-        <version>4.11</version>
+        <version>4.12</version>
       </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>


[maven-jxr] 03/06: Introduce ProjectInfo

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

rfscholte pushed a commit to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit 0033d899c6e2aa7d4e56030184649637a75a5683
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Nov 11 13:32:24 2018 +0100

    Introduce ProjectInfo
---
 .../org/apache/maven/jxr/DirectoryIndexer.java     | 39 +++++++++++++++++-----
 .../org/apache/maven/jxr/DirectoryIndexerTest.java |  8 +++--
 2 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
index cccbb74..832b57f 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
@@ -26,7 +26,6 @@ import java.io.Writer;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Enumeration;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -214,7 +213,7 @@ public class DirectoryIndexer
     public void process( Log log )
         throws JxrException
     {
-        Map<String, Map<String, ?>> info = getPackageInfo();
+        ProjectInfo info = getProjectInfo();
 
         VelocityEngine engine = new VelocityEngine();
         setProperties( engine, log );
@@ -239,7 +238,7 @@ public class DirectoryIndexer
         doVelocity( "allclasses-frame", root, context, engine );
         doVelocity( "overview-summary", root, context, engine );
 
-        for ( PackageInfo pkgInfo : ( (Map<String, PackageInfo>) info.get( "allPackages" ) ).values() )
+        for ( PackageInfo pkgInfo : info.getAllPackages().values() )
         {
             VelocityContext subContext = new VelocityContext( context );
             subContext.put( "pkgInfo", pkgInfo );
@@ -327,7 +326,7 @@ public class DirectoryIndexer
      * allClasses collection of Maps with class info, format as above
      *
      */
-    Map<String, Map<String, ?>> getPackageInfo()
+    ProjectInfo getProjectInfo()
     {
         Map<String, PackageInfo> allPackages = new TreeMap<>();
         Map<String, ClassInfo> allClasses = new TreeMap<>();
@@ -375,11 +374,35 @@ public class DirectoryIndexer
             allPackages.put( pkgName, pkgInfo );
         }
 
-        Map<String, Map<String, ?>> info = new HashMap<>();
-        info.put( "allPackages", allPackages );
-        info.put( "allClasses", allClasses );
+        return new ProjectInfo( allPackages, allClasses );
+    }
+    
+    /**
+     * 
+     * @author Robert Scholte
+     * @since 3.2.0
+     */
+    public static class ProjectInfo
+    {
+        private final Map<String, PackageInfo> allPackages;
+        
+        private final Map<String, ClassInfo> allClasses;
 
-        return info;
+        public ProjectInfo( Map<String, PackageInfo> allPackages, Map<String, ClassInfo> allClasses )
+        {
+            this.allPackages = allPackages;
+            this.allClasses = allClasses;
+        }
+
+        public Map<String, PackageInfo> getAllPackages()
+        {
+            return allPackages;
+        }
+        
+        public Map<String, ClassInfo> getAllClasses()
+        {
+            return allClasses;
+        }
     }
     
     /**
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
index dcd85e7..fcf2b0c 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
@@ -1,6 +1,8 @@
 package org.apache.maven.jxr;
 
 import org.apache.maven.jxr.DirectoryIndexer.ClassInfo;
+import org.apache.maven.jxr.DirectoryIndexer.PackageInfo;
+import org.apache.maven.jxr.DirectoryIndexer.ProjectInfo;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -45,13 +47,13 @@ public class DirectoryIndexerTest {
         packageManager.process(Paths.get( "src/test/resources/jxr68" ));
         DirectoryIndexer directoryIndexer = new DirectoryIndexer( packageManager, "" );
 
-        final Map<String, Map<String, ?>> packageInfo = directoryIndexer.getPackageInfo();
-        final Map<String, ?> allPackages = packageInfo.get( "allPackages" );
+        ProjectInfo packageInfo = directoryIndexer.getProjectInfo();
+        final Map<String, PackageInfo> allPackages = packageInfo.getAllPackages();
         assertEquals(3, allPackages.size());
         assertTrue( allPackages.containsKey( "(default package)" ) );
         assertTrue( allPackages.containsKey( "pkga" ) );
         assertTrue( allPackages.containsKey( "pkgb" ) );
-        final Map<String, ClassInfo> allClasses = (Map<String, ClassInfo>) packageInfo.get( "allClasses" );
+        final Map<String, ClassInfo> allClasses = (Map<String, ClassInfo>) packageInfo.getAllClasses();
         assertEquals( 6, allClasses.size() );
         final Iterator<ClassInfo> iterator = allClasses.values().iterator();
         // #1: AClass


[maven-jxr] 06/06: Fix merge conflicts

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

rfscholte pushed a commit to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit 4cd68c6c84f8dfea59b81c03343b86d822f604e4
Merge: 8b38211 64c867c
Author: rfscholte <rf...@apache.org>
AuthorDate: Thu Jul 4 23:20:10 2019 +0200

    Fix merge conflicts



[maven-jxr] 02/06: Introduce PackageInfo

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

rfscholte pushed a commit to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit 3759ef8183088e146f0c3410289396a28948e2ba
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Nov 11 13:23:46 2018 +0100

    Introduce PackageInfo
---
 .../org/apache/maven/jxr/DirectoryIndexer.java     | 87 +++++++++++++++++-----
 1 file changed, 70 insertions(+), 17 deletions(-)

diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
index 84ee7bf..cccbb74 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
@@ -27,7 +27,6 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.TreeMap;
 
@@ -240,15 +239,12 @@ public class DirectoryIndexer
         doVelocity( "allclasses-frame", root, context, engine );
         doVelocity( "overview-summary", root, context, engine );
 
-        Iterator<Map<String, ?>> iter = ( (Map) info.get( "allPackages" ) ).values().iterator();
-        while ( iter.hasNext() )
+        for ( PackageInfo pkgInfo : ( (Map<String, PackageInfo>) info.get( "allPackages" ) ).values() )
         {
-            Map pkgInfo = iter.next();
-
             VelocityContext subContext = new VelocityContext( context );
             subContext.put( "pkgInfo", pkgInfo );
 
-            String outDir = root + '/' + pkgInfo.get( "dir" );
+            String outDir = root + '/' + pkgInfo.getDir();
             doVelocity( "package-summary", outDir, subContext, engine );
             doVelocity( "package-frame", outDir, subContext, engine );
         }
@@ -333,7 +329,7 @@ public class DirectoryIndexer
      */
     Map<String, Map<String, ?>> getPackageInfo()
     {
-        Map<String, Map<String, Object>> allPackages = new TreeMap<>();
+        Map<String, PackageInfo> allPackages = new TreeMap<>();
         Map<String, ClassInfo> allClasses = new TreeMap<>();
 
         Enumeration<PackageType> packages = packageManager.getPackageTypes();
@@ -361,7 +357,9 @@ public class DirectoryIndexer
 
                 String className = clazz.getName();
                 
-                ClassInfo classInfo = new ClassInfo( className, pkgDir, clazz.getFilename() );
+                ClassInfo classInfo = new ClassInfo( className, pkgDir );
+                
+                classInfo.setFilename( clazz.getFilename() );
 
                 pkgClasses.put( className, classInfo );
                 
@@ -370,11 +368,10 @@ public class DirectoryIndexer
                 allClasses.put( className + "#" + pkgName, classInfo );
             }
 
-            Map<String, Object> pkgInfo = new HashMap<>();
-            pkgInfo.put( "name", pkgName );
-            pkgInfo.put( "dir", pkgDir );
-            pkgInfo.put( "classes", pkgClasses );
-            pkgInfo.put( "rootRef", rootRef );
+            PackageInfo pkgInfo = new PackageInfo( pkgName, pkgDir );
+            pkgInfo.setClasses( pkgClasses );
+            pkgInfo.setRootRef( rootRef );
+
             allPackages.put( pkgName, pkgInfo );
         }
 
@@ -386,6 +383,58 @@ public class DirectoryIndexer
     }
     
     /**
+     * 
+     * @author Robert Scholte
+     * @since 3.2.0
+     */
+    public static class PackageInfo
+    {
+        private final String name;
+        
+        private final String dir;
+
+        Map<String, ClassInfo> classes;
+        
+        private String rootRef;
+        
+        public PackageInfo( String name, String dir )
+        {
+            this.name = name;
+            this.dir = dir;
+        }
+        
+        public String getName()
+        {
+            return name;
+        }
+        
+        public String getDir()
+        {
+            return dir;
+        }
+        
+        public void setClasses( Map<String, ClassInfo> classes )
+        {
+            this.classes = classes;
+        }
+        
+        public Map<String, ClassInfo> getClasses()
+        {
+            return classes;
+        }
+        
+        public void setRootRef( String rootRef )
+        {
+            this.rootRef = rootRef;
+        }
+        
+        public String getRootRef()
+        {
+            return rootRef;
+        }
+    }
+    
+    /**
      * Holds class information
      * 
      * @author Robert Scholte
@@ -393,18 +442,17 @@ public class DirectoryIndexer
      */
     public static class ClassInfo
     {
-        private String name;
+        private final String name;
         
-        private String dir;
+        private final String dir;
         
         private String filename;
 
-        public ClassInfo( String name, String dir, String filename )
+        public ClassInfo( String name, String dir )
         {
             super();
             this.name = name;
             this.dir = dir;
-            this.filename = filename;
         }
         
         public String getName()
@@ -417,6 +465,11 @@ public class DirectoryIndexer
             return dir;
         }
         
+        public void setFilename( String filename )
+        {
+            this.filename = filename;
+        }
+        
         public String getFilename()
         {
             return filename;


[maven-jxr] 04/06: Remove unnecessary cast

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

rfscholte pushed a commit to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit 79976c197a270713308fe01314625aa6440cb412
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Nov 11 13:36:36 2018 +0100

    Remove unnecessary cast
---
 .../src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
index fcf2b0c..d3feff6 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
@@ -44,7 +44,7 @@ public class DirectoryIndexerTest {
     {
         FileManager fileManager = FileManager.getInstance();
         PackageManager packageManager = new PackageManager( new DummyLog(), fileManager );
-        packageManager.process(Paths.get( "src/test/resources/jxr68" ));
+        packageManager.process( Paths.get( "src/test/resources/jxr68" ) );
         DirectoryIndexer directoryIndexer = new DirectoryIndexer( packageManager, "" );
 
         ProjectInfo packageInfo = directoryIndexer.getProjectInfo();
@@ -53,7 +53,7 @@ public class DirectoryIndexerTest {
         assertTrue( allPackages.containsKey( "(default package)" ) );
         assertTrue( allPackages.containsKey( "pkga" ) );
         assertTrue( allPackages.containsKey( "pkgb" ) );
-        final Map<String, ClassInfo> allClasses = (Map<String, ClassInfo>) packageInfo.getAllClasses();
+        final Map<String, ClassInfo> allClasses = packageInfo.getAllClasses();
         assertEquals( 6, allClasses.size() );
         final Iterator<ClassInfo> iterator = allClasses.values().iterator();
         // #1: AClass


[maven-jxr] 01/06: Introduce ClassInfo

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

rfscholte pushed a commit to branch JXR-142
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git

commit eefce4c6a637d6e3e34ff2fdb0f9d25aaa59ef82
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Nov 11 13:10:26 2018 +0100

    Introduce ClassInfo
---
 .../org/apache/maven/jxr/DirectoryIndexer.java     | 56 +++++++++++++++++-----
 .../org/apache/maven/jxr/DirectoryIndexerTest.java | 26 +++++-----
 2 files changed, 57 insertions(+), 25 deletions(-)

diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
index 2a3cb8f..84ee7bf 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/DirectoryIndexer.java
@@ -334,7 +334,7 @@ public class DirectoryIndexer
     Map<String, Map<String, ?>> getPackageInfo()
     {
         Map<String, Map<String, Object>> allPackages = new TreeMap<>();
-        Map<String, Map<String, String>> allClasses = new TreeMap<>();
+        Map<String, ClassInfo> allClasses = new TreeMap<>();
 
         Enumeration<PackageType> packages = packageManager.getPackageTypes();
         while ( packages.hasMoreElements() )
@@ -353,26 +353,18 @@ public class DirectoryIndexer
                 rootRef = "./";
             }
 
-            Map<String, Map<String, String>> pkgClasses = new TreeMap<>();
+            Map<String, ClassInfo> pkgClasses = new TreeMap<>();
             Enumeration<ClassType> classes = pkg.getClassTypes();
             while ( classes.hasMoreElements() )
             {
                 ClassType clazz = classes.nextElement();
 
                 String className = clazz.getName();
-                Map<String, String> classInfo = new HashMap<>();
-                if ( clazz.getFilename() != null )
-                {
-                    classInfo.put( "filename", clazz.getFilename() );
-                }
-                else
-                {
-                    classInfo.put( "filename", "" );
-                }
-                classInfo.put( "name", className );
-                classInfo.put( "dir", pkgDir );
+                
+                ClassInfo classInfo = new ClassInfo( className, pkgDir, clazz.getFilename() );
 
                 pkgClasses.put( className, classInfo );
+                
                 // Adding package name to key in order to ensure classes with identical names in different packages are
                 // all included.
                 allClasses.put( className + "#" + pkgName, classInfo );
@@ -392,4 +384,42 @@ public class DirectoryIndexer
 
         return info;
     }
+    
+    /**
+     * Holds class information
+     * 
+     * @author Robert Scholte
+     * @since 3.2.0
+     */
+    public static class ClassInfo
+    {
+        private String name;
+        
+        private String dir;
+        
+        private String filename;
+
+        public ClassInfo( String name, String dir, String filename )
+        {
+            super();
+            this.name = name;
+            this.dir = dir;
+            this.filename = filename;
+        }
+        
+        public String getName()
+        {
+            return name;
+        }
+        
+        public String getDir()
+        {
+            return dir;
+        }
+        
+        public String getFilename()
+        {
+            return filename;
+        }
+    }
 }
\ No newline at end of file
diff --git a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
index 7a16bfe..dcd85e7 100644
--- a/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
+++ b/maven-jxr/src/test/java/org/apache/maven/jxr/DirectoryIndexerTest.java
@@ -1,5 +1,7 @@
 package org.apache.maven.jxr;
 
+import org.apache.maven.jxr.DirectoryIndexer.ClassInfo;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -49,27 +51,27 @@ public class DirectoryIndexerTest {
         assertTrue( allPackages.containsKey( "(default package)" ) );
         assertTrue( allPackages.containsKey( "pkga" ) );
         assertTrue( allPackages.containsKey( "pkgb" ) );
-        final Map<String, Map<String, String>> allClasses = (Map<String, Map<String, String>>) packageInfo.get( "allClasses" );
+        final Map<String, ClassInfo> allClasses = (Map<String, ClassInfo>) packageInfo.get( "allClasses" );
         assertEquals( 6, allClasses.size() );
-        final Iterator<Map<String, String>> iterator = allClasses.values().iterator();
+        final Iterator<ClassInfo> iterator = allClasses.values().iterator();
         // #1: AClass
-        assertEquals( "AClass", iterator.next().get( "name" ) );
+        assertEquals( "AClass", iterator.next().getName() );
         // #2: BClass
-        assertEquals( "BClass", iterator.next().get( "name" ) );
+        assertEquals( "BClass", iterator.next().getName() );
         // #3: CClass
-        assertEquals( "CClass", iterator.next().get( "name" ) );
+        assertEquals( "CClass", iterator.next().getName() );
         // #4: SomeClass in default package
-        Map<String, String> classInfo = iterator.next();
-        assertEquals( "SomeClass", classInfo.get( "name" ) );
-        assertEquals( ".", classInfo.get( "dir" ) );
+        ClassInfo classInfo = iterator.next();
+        assertEquals( "SomeClass", classInfo.getName() );
+        assertEquals( ".", classInfo.getDir() );
         // #5: SomeClass in "pkga"
         classInfo = iterator.next();
-        assertEquals( "SomeClass", classInfo.get( "name" ) );
-        assertEquals( "pkga", classInfo.get( "dir" ) );
+        assertEquals( "SomeClass", classInfo.getName() );
+        assertEquals( "pkga", classInfo.getDir() );
         // #6: SomeClass in "pkgb"
         classInfo = iterator.next();
-        assertEquals( "SomeClass", classInfo.get( "name" ) );
-        assertEquals( "pkgb", classInfo.get( "dir" ) );
+        assertEquals( "SomeClass", classInfo.getName() );
+        assertEquals( "pkgb", classInfo.getDir() );
     }
 
 }
\ No newline at end of file