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 <[email protected]> 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" );
