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 2021/04/18 08:25:36 UTC
[maven-jxr] 01/04: Remove FileManager from CodeTransformer
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch JXR-145
in repository https://gitbox.apache.org/repos/asf/maven-jxr.git
commit 577717974a87e499e0ebd0f5f79099f7255256d5
Author: rfscholte <rf...@apache.org>
AuthorDate: Sat Apr 17 17:51:07 2021 +0200
Remove FileManager from CodeTransformer
---
.../apache/maven/plugin/jxr/AbstractJxrReport.java | 2 +-
.../java/org/apache/maven/jxr/CodeTransformer.java | 4 +-
.../src/main/java/org/apache/maven/jxr/JXR.java | 10 +-
.../org/apache/maven/jxr/JavaCodeTransform.java | 179 +++++++--------------
.../org/apache/maven/jxr/IncludeExcludeTest.java | 2 +-
.../test/java/org/apache/maven/jxr/JXR141Test.java | 2 +-
.../apache/maven/jxr/JavaCodeTransformTest.java | 21 ++-
.../java/org/apache/maven/jxr/JxrBeanTest.java | 2 +-
8 files changed, 90 insertions(+), 132 deletions(-)
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 3d9a346..386d68c 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
@@ -272,7 +272,7 @@ public abstract class AbstractJxrReport
PackageManager packageManager = new PackageManager( fileManager );
CodeTransformer codeTransform = new JavaCodeTransform( packageManager, fileManager );
- JXR jxr = new JXR( packageManager, Collections.singletonMap( "java", codeTransform ) );
+ JXR jxr = new JXR( packageManager, fileManager, Collections.singletonMap( "java", codeTransform ) );
jxr.setDest( Paths.get( destinationDirectory ) );
if ( StringUtils.isEmpty( inputEncoding ) )
{
diff --git a/maven-jxr/src/main/java/org/apache/maven/jxr/CodeTransformer.java b/maven-jxr/src/main/java/org/apache/maven/jxr/CodeTransformer.java
index be79907..b54e5ad 100644
--- a/maven-jxr/src/main/java/org/apache/maven/jxr/CodeTransformer.java
+++ b/maven-jxr/src/main/java/org/apache/maven/jxr/CodeTransformer.java
@@ -24,6 +24,8 @@ import java.nio.file.Path;
import java.util.Locale;
import java.util.Set;
+import org.apache.maven.jxr.pacman.JavaFile;
+
/**
* The code transformer, responsible to turn code into JXR documentation
*
@@ -44,7 +46,7 @@ public interface CodeTransformer
* @param bottom TODO
* @throws IOException
*/
- void transform( Path sourcefile, Path destfile, Locale locale, String inputEncoding, String outputEncoding,
+ void transform( JavaFile sourcefile, Path destfile, Locale locale, String outputEncoding,
Path javadocLinkDir, String bottom )
throws IOException;
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 ba8db99..3b81bc9 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,6 +20,7 @@ package org.apache.maven.jxr;
*/
import org.apache.maven.jxr.ant.DirectoryScanner;
+import org.apache.maven.jxr.pacman.FileManager;
import org.apache.maven.jxr.pacman.PackageManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,6 +45,8 @@ public class JXR
private static final Logger LOGGER = LoggerFactory.getLogger( JXR.class );
private final PackageManager pkgmgr;
+
+ private final FileManager fileManager;
/**
* Handles taking .java files and changing them into html. "More than meets
@@ -77,9 +80,10 @@ public class JXR
*/
private String[] includes;
- public JXR( PackageManager pkgmgr, Map<String, CodeTransformer> transformers )
+ public JXR( PackageManager pkgmgr, FileManager fileManager, Map<String, CodeTransformer> transformers )
{
this.pkgmgr = pkgmgr;
+ this.fileManager = fileManager;
this.transformers = transformers;
}
@@ -249,10 +253,12 @@ public class JXR
throws IOException
{
LOGGER.debug( sourceFile + " -> " + destFile );
+
+ fileManager.getFile( sourceFile );
// get a relative link to the javadocs
Path javadoc = javadocLinkDir != null ? getRelativeLink( destFile.getParent(), javadocLinkDir ) : null;
- transformer.transform( sourceFile, destFile, locale, inputEncoding, outputEncoding, javadoc, bottom );
+ transformer.transform( fileManager.getFile( sourceFile ), destFile, locale, outputEncoding, javadoc, bottom );
}
/**
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 d7e41d8..67f5080 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
@@ -1,33 +1,5 @@
package org.apache.maven.jxr;
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.Serializable;
-import java.io.Writer;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collections;
-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;
-
/*
* CodeViewer.java
* CoolServlets.com
@@ -58,6 +30,34 @@ import javax.inject.Singleton;
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.Serializable;
+import java.io.Writer;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Collections;
+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 org.apache.commons.lang3.StringUtils;
import org.apache.maven.jxr.pacman.ClassType;
import org.apache.maven.jxr.pacman.FileManager;
@@ -95,8 +95,8 @@ import org.apache.maven.jxr.util.StringEntry;
* importFilter
* </pre>
*/
+// No Singleton as it holds state during transformation
@Named( "java" )
-@Singleton
public class JavaCodeTransform
implements Serializable, CodeTransformer
{
@@ -188,7 +188,7 @@ public class JavaCodeTransform
/**
* Set the filename that is currently being processed.
*/
- private Path currentFilename = null;
+ private JavaFile currentSourceFile;
/**
* The output encoding
@@ -210,11 +210,6 @@ public class JavaCodeTransform
*/
private final PackageManager packageManager;
- /**
- * current file manager
- */
- private final FileManager fileManager;
-
{
reservedWords.put( "abstract", "abstract" );
reservedWords.put( "do", "do" );
@@ -273,10 +268,10 @@ public class JavaCodeTransform
reservedWords.put( "implements", "implements" );
}
+ @Inject
public JavaCodeTransform( PackageManager packageManager, FileManager fileManager )
{
this.packageManager = packageManager;
- this.fileManager = fileManager;
}
@Override
@@ -335,28 +330,18 @@ public class JavaCodeTransform
// title ("classname xref")
out.print( "<title>" );
- try
+ JavaFile javaFile = this.currentSourceFile;
+ // Use the name of the file instead of the class to handle inner classes properly
+ if ( javaFile.getClassType() != null && javaFile.getClassType().getFilename() != null )
{
- JavaFile javaFile = fileManager.getFile( this.getCurrentFilename() );
- // Use the name of the file instead of the class to handle inner classes properly
- if ( javaFile.getClassType() != null && javaFile.getClassType().getFilename() != null )
- {
- out.print( javaFile.getClassType().getFilename() );
- }
- else
- {
- out.print( this.getCurrentFilename() );
- }
- out.print( ' ' );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
+ out.print( javaFile.getClassType().getFilename() );
}
- finally
+ else
{
- out.println( "xref</title>" );
+ out.print( javaFile.getPath().toString() );
}
+ out.print( ' ' );
+ out.println( "xref</title>" );
// stylesheet link
out.print( "<link type=\"text/css\" rel=\"stylesheet\" href=\"" );
@@ -449,16 +434,16 @@ public class JavaCodeTransform
* @throws IOException
*/
@Override
- public final void transform( Path sourcefile, Path destfile, Locale locale, String inputEncoding,
+ public final void transform( JavaFile sourcefile, Path destfile, Locale locale,
String outputEncoding, Path javadocLinkDir, String bottom )
throws IOException
{
- this.setCurrentFilename( sourcefile );
+ this.setCurrentSourceFile( sourcefile );
// make sure that the parent directories exist...
Files.createDirectories( destfile.getParent() );
- try ( Reader fr = getReader( sourcefile, inputEncoding ); Writer fw = getWriter( destfile, outputEncoding ) )
+ try ( Reader fr = getReader( sourcefile.getPath(), sourcefile.getEncoding() ); Writer fw = getWriter( destfile, outputEncoding ) )
{
transform( fr, fw, locale, outputEncoding, javadocLinkDir, bottom );
}
@@ -499,24 +484,15 @@ public class JavaCodeTransform
return fr;
}
- /**
- * Get the current filename
- *
- * @return String
- */
- private Path getCurrentFilename()
+
+ private JavaFile getCurrentSourceFile()
{
- return this.currentFilename;
+ return currentSourceFile;
}
-
- /**
- * Set the current filename
- *
- * @param filename String
- */
- private void setCurrentFilename( Path filename )
+
+ private void setCurrentSourceFile( JavaFile currentSourceFile )
{
- this.currentFilename = filename;
+ this.currentSourceFile = currentSourceFile;
}
/**
@@ -528,17 +504,7 @@ public class JavaCodeTransform
{
StringBuilder buff = new StringBuilder();
- JavaFile jf;
-
- try
- {
- jf = fileManager.getFile( this.getCurrentFilename() );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- return null;
- }
+ JavaFile jf = getCurrentSourceFile();
String current = jf.getPackageType().getName();
@@ -987,28 +953,21 @@ public class JavaCodeTransform
// get the URI to get Javadoc info.
Path javadocURI = javadocLinkDir;
- try
- {
- JavaFile jf = fileManager.getFile( this.getCurrentFilename() );
-
- javadocURI = javadocLinkDir.resolve( jf.getPackageType().getName().replace( '.', '/' ) )
- ;
- // Use the name of the file instead of the class to handle inner classes properly
- if ( jf.getClassType() != null && jf.getClassType().getFilename() != null )
- {
- javadocURI = javadocURI.resolve( jf.getClassType().getFilename() + ".html" );
- }
-
- String javadocHREF = "<a href=\"" + javadocURI.toString().replace( '\\', '/' ) + "\">View Javadoc</a>";
+ JavaFile jf = this.getCurrentSourceFile();
- // get the generation time...
- overview.append( javadocHREF );
- }
- catch ( IOException e )
+ javadocURI = javadocLinkDir.resolve( jf.getPackageType().getName().replace( '.', '/' ) )
+ ;
+ // Use the name of the file instead of the class to handle inner classes properly
+ if ( jf.getClassType() != null && jf.getClassType().getFilename() != null )
{
- e.printStackTrace();
+ javadocURI = javadocURI.resolve( jf.getClassType().getFilename() + ".html" );
}
+ String javadocHREF = "<a href=\"" + javadocURI.toString().replace( '\\', '/' ) + "\">View Javadoc</a>";
+
+ // get the generation time...
+ overview.append( javadocHREF );
+
overview.append( "</div>" );
}
@@ -1045,23 +1004,7 @@ public class JavaCodeTransform
*/
private String jxrFilter( String line )
{
- JavaFile jf;
-
- try
- {
- // if the current file isn't set then just return
- if ( this.getCurrentFilename() == null )
- {
- return line;
- }
-
- jf = fileManager.getFile( this.getCurrentFilename() );
- }
- catch ( IOException e )
- {
- e.printStackTrace();
- return line;
- }
+ JavaFile jf = getCurrentSourceFile();
Set<String> packages = new HashSet<>();
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 d333777..1c7d9ae 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
@@ -49,7 +49,7 @@ public class IncludeExcludeTest
PackageManager packageManager = new PackageManager( fileManager );
CodeTransformer codeTransform = new JavaCodeTransform( packageManager, fileManager );
- jxr = new JXR( packageManager, Collections.singletonMap( "java", codeTransform ) );
+ jxr = new JXR( packageManager, fileManager, Collections.singletonMap( "java", codeTransform ) );
jxr.setDest( Paths.get( "target" ) );
jxr.setInputEncoding( "ISO-8859-1" );
jxr.setOutputEncoding( "ISO-8859-1" );
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 9c9180f..1564b35 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
@@ -48,7 +48,7 @@ public class JXR141Test
PackageManager packageManager = new PackageManager( fileManager );
CodeTransformer codeTransform = new JavaCodeTransform( packageManager, fileManager );
- jxr = new JXR( packageManager, Collections.singletonMap( "java", codeTransform ) );
+ jxr = new JXR( packageManager, fileManager, Collections.singletonMap( "java", codeTransform ) );
}
@Test
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 a186b62..a804f72 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
@@ -28,6 +28,8 @@ import java.nio.file.Paths;
import java.util.Locale;
import org.apache.maven.jxr.pacman.FileManager;
+import org.apache.maven.jxr.pacman.JavaFile;
+import org.apache.maven.jxr.pacman.JavaFileImpl;
import org.apache.maven.jxr.pacman.PackageManager;
import org.junit.Before;
import org.junit.Test;
@@ -39,6 +41,8 @@ public class JavaCodeTransformTest
{
/** JavaCodeTransform object under test */
private CodeTransformer codeTransform;
+
+ private FileManager fileManager;
/**
* Set up this test.
@@ -46,7 +50,7 @@ public class JavaCodeTransformTest
@Before
public void setUp() throws Exception
{
- FileManager fileManager = new FileManager();
+ fileManager = new FileManager();
codeTransform = new JavaCodeTransform( new PackageManager( fileManager ), fileManager);
}
@@ -59,12 +63,13 @@ public class JavaCodeTransformTest
throws Exception // single line despite /*
{
Path sourceFile = Paths.get( "src/test/java/org/apache/maven/jxr/JavaCodeTransformTest.java" );
+ JavaFile javaFile = new JavaFileImpl( sourceFile, "ISO-8859-1" );
assertTrue( /* mid-line comment */ Files.exists( sourceFile ) ); /*
multiline comment text
- */ codeTransform.transform( sourceFile, Paths.get( "target/JavaCodeTransformTest.html" ) // additional comment
- , Locale.ENGLISH, "ISO-8859-1", "ISO-8859-1", Paths.get( "." ), "" );
+ */ codeTransform.transform( javaFile, Paths.get( "target/JavaCodeTransformTest.html" ) // additional comment
+ , Locale.ENGLISH, "ISO-8859-1", Paths.get( "." ), "" );
assertTrue( /**/ Files.exists( Paths.get( "target/JavaCodeTransformTest.html" ) ) );
}
@@ -76,10 +81,11 @@ public class JavaCodeTransformTest
throws Exception
{
Path sourceFile = Paths.get( "src/test/resources/EmptyClass.java" );
+ JavaFile javaFile = new JavaFileImpl( sourceFile, "ISO-8859-1" );
assertTrue( Files.exists( sourceFile ) );
- codeTransform.transform( sourceFile, Paths.get( "target/EmptyClass.html" )
- , Locale.ENGLISH, "ISO-8859-1", "ISO-8859-1", Paths.get( "." ), "" );
+ codeTransform.transform( javaFile, Paths.get( "target/EmptyClass.html" )
+ , Locale.ENGLISH, "ISO-8859-1", Paths.get( "." ), "" );
assertTrue( Files.exists( Paths.get( "target/EmptyClass.html" ) ) );
}
@@ -91,10 +97,11 @@ public class JavaCodeTransformTest
throws Exception
{
Path sourceFile = Paths.get( "src/test/resources/ClassWithLink.java" );
+ JavaFile javaFile = new JavaFileImpl( sourceFile, "ISO-8859-1" );
assertTrue( Files.exists( sourceFile ) );
- codeTransform.transform( sourceFile, Paths.get( "target/ClassWithLink.html" )
- , Locale.ENGLISH, "ISO-8859-1", "ISO-8859-1", Paths.get( "." ), "" );
+ codeTransform.transform( javaFile, Paths.get( "target/ClassWithLink.html" )
+ , Locale.ENGLISH, "ISO-8859-1", Paths.get( "." ), "" );
assertTrue( Files.exists( Paths.get( "target/ClassWithLink.html" ) ) );
byte[] bytes = Files.readAllBytes( Paths.get( "target/ClassWithLink.html" ) );
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 8ab6e21..6bc9efb 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
@@ -36,7 +36,7 @@ public class JxrBeanTest
{ FileManager fileManager = new FileManager();
PackageManager packageManager = new PackageManager( fileManager );
CodeTransformer codeTransform = new JavaCodeTransform( packageManager, fileManager );
- jxrBean = new JXR( packageManager, Collections.singletonMap( "java", codeTransform ) );
+ jxrBean = new JXR( packageManager, fileManager, Collections.singletonMap( "java", codeTransform ) );
jxrBean.setDest( Paths.get( "target" ) );
jxrBean.setInputEncoding( "ISO-8859-1" );
jxrBean.setOutputEncoding( "ISO-8859-1" );