diff --git a/jxr/plugin.jelly b/jxr/plugin.jelly index b6bcf82b..93b34b48 100644 --- a/jxr/plugin.jelly +++ b/jxr/plugin.jelly @@ -79,6 +79,12 @@ + + + + @@ -90,6 +96,8 @@ \n") - .append("\n") + .append("\n") .append("\n") - .append(""); + .append(""); // title ("classname xref") try @@ -654,11 +672,14 @@ public class CodeTransform implements Serializable * This is the public method for doing all transforms of code. * @param sourcefile String * @param destfile String + * @param lang String + * @param inputEncoding String + * @param outputEncoding String * @param javadocLinkDir String * @param revision String * @throws IOException */ - public final void transform(String sourcefile, String destfile, String javadocLinkDir, String revision) + public final void transform(String sourcefile, String destfile, String lang, String inputEncoding, String outputEncoding, String javadocLinkDir, String revision) throws IOException { @@ -666,18 +687,33 @@ public class CodeTransform implements Serializable this.sourcefile = sourcefile; this.destfile = destfile; + this.lang = lang; + this.inputEncoding = inputEncoding; + this.outputEncoding = outputEncoding; this.javadocLinkDir = javadocLinkDir; this.revision = revision; //make sure that the parent directories exist... new File(new File(destfile).getParent()).mkdirs(); - FileReader fr = null; - FileWriter fw = null; + Reader fr = null; + Writer fw = null; try { - fr = new FileReader(sourcefile); - fw = new FileWriter(destfile); + if (inputEncoding != null) { + fr = new InputStreamReader(new FileInputStream(sourcefile), inputEncoding); + } + else + { + fr = new FileReader(sourcefile); + } + if (outputEncoding != null) { + fw = new OutputStreamWriter(new FileOutputStream(destfile), outputEncoding); + } + else + { + fw = new FileWriter(destfile); + } BufferedReader in = new BufferedReader(fr); PrintWriter out = new PrintWriter(fw); diff --git a/jxr/src/main/org/apache/maven/jxr/JXR.java b/jxr/src/main/org/apache/maven/jxr/JXR.java index 0c41bdac..edb880e4 100644 --- a/jxr/src/main/org/apache/maven/jxr/JXR.java +++ b/jxr/src/main/org/apache/maven/jxr/JXR.java @@ -29,7 +29,7 @@ import org.apache.tools.ant.DirectoryScanner; * Main entry point into Maven used to kick off the XReference code building. * * @author Kevin A. Burton - * @version $Id: JXR.java,v 1.8 2004/08/23 12:17:46 evenisse Exp $ + * @version $Id: JXR.java,v 1.9 2004/08/23 13:12:44 evenisse Exp $ */ public class JXR { @@ -53,6 +53,10 @@ public class JXR */ private String dest = ""; + private String lang; + private String inputEncoding; + private String outputEncoding; + /** * Relative path to javadocs, suitable for hyperlinking */ @@ -81,12 +85,18 @@ public class JXR public JXR(PackageManager packageManager, String source, String dest, + String lang, + String inputEncoding, + String outputEncoding, String javadocLinkDir, String revision) { this.transformer = new CodeTransform(packageManager); this.source = source; this.dest = dest; + this.lang = lang; + this.inputEncoding = inputEncoding; + this.outputEncoding = outputEncoding; this.javadocLinkDir = javadocLinkDir; this.revision = revision; @@ -223,7 +233,7 @@ public class JXR log.debug(source + " -> " + dest); - transformer.transform(source, dest, javadocLinkDir, this.revision); + transformer.transform(source, dest, lang, inputEncoding, outputEncoding, javadocLinkDir, this.revision); } diff --git a/jxr/src/main/org/apache/maven/jxr/JxrBean.java b/jxr/src/main/org/apache/maven/jxr/JxrBean.java index 55d693b8..43a2acdf 100644 --- a/jxr/src/main/org/apache/maven/jxr/JxrBean.java +++ b/jxr/src/main/org/apache/maven/jxr/JxrBean.java @@ -19,6 +19,7 @@ package org.apache.maven.jxr; import org.apache.maven.jxr.JXR; import org.apache.maven.jxr.DirectoryIndexer; +import org.apache.maven.jxr.pacman.FileManager; import org.apache.maven.jxr.pacman.PackageManager; import org.apache.maven.jxr.pacman.PackageType; import org.apache.maven.jxr.pacman.ClassType; @@ -41,7 +42,7 @@ import org.apache.commons.logging.LogFactory; * @author Josh Lucas * @author Jason van Zyl * @author Brian Leonard - * @version $Id: JxrBean.java,v 1.9 2004/03/02 15:08:12 evenisse Exp $ + * @version $Id: JxrBean.java,v 1.10 2004/08/23 13:12:44 evenisse Exp $ */ public class JxrBean { @@ -53,6 +54,9 @@ public class JxrBean */ private List sourceDirs; private String destDir; + private String lang; + private String inputEncoding; + private String outputEncoding; private String javadocDir; private String windowTitle; private String docTitle; @@ -83,6 +87,8 @@ public class JxrBean // first collect package and class info PackageManager pkgmgr = new PackageManager(); + + FileManager.getInstance().setEncoding(inputEncoding); // go through each source directory and xref the java files for (Iterator i = sourceDirs.iterator(); i.hasNext();) @@ -92,7 +98,7 @@ public class JxrBean pkgmgr.process(path); - new JXR(pkgmgr, path, destDir, javadocLinkDir, "HEAD"); + new JXR(pkgmgr, path, destDir, lang, inputEncoding, outputEncoding, javadocLinkDir, "HEAD"); } // once we have all the source files xref'd, create the index pages @@ -217,6 +223,69 @@ public class JxrBean } + /** + * Lang attribute of output files. + * + * @param lang lang attribute of output files. + */ + public void setLang(String lang) + { + this.lang = lang; + } + + /** + * see setLang(String) + * + * @see setLang(String) + */ + public String getLang() + { + return lang; + } + + + /** + * InputEncoding is the encoding of source files. + * + * @param inputEncoding encoding of source files + */ + public void setInputEncoding(String inputEncoding) + { + this.inputEncoding = inputEncoding; + } + + /** + * see setInputEncoding(String) + * + * @see setInputEncoding(String) + */ + public String getInputEncoding() + { + return inputEncoding; + } + + + /** + * OutputEncoding is the encoding of output files. + * + * @param outputEncoding encoding of output files + */ + public void setOutputEncoding(String outputEncoding) + { + this.outputEncoding = outputEncoding; + } + + /** + * see setOutputEncoding(String) + * + * @see setOutputEncoding(String) + */ + public String getOutputEncoding() + { + return outputEncoding; + } + + /** * JavadocDir is used to cross-reference the source code with * the appropriate javadoc pages. diff --git a/jxr/src/main/org/apache/maven/jxr/pacman/FileManager.java b/jxr/src/main/org/apache/maven/jxr/pacman/FileManager.java index 692d82ec..fbaa6450 100644 --- a/jxr/src/main/org/apache/maven/jxr/pacman/FileManager.java +++ b/jxr/src/main/org/apache/maven/jxr/pacman/FileManager.java @@ -38,6 +38,7 @@ public class FileManager private static FileManager instance = new FileManager(); private Hashtable files = new Hashtable(); + private String encoding = null; /** Get an instance of the FileManager */ public static FileManager getInstance() @@ -57,7 +58,7 @@ public class FileManager if (real == null) { - real = new JavaFileImpl(name); + real = new JavaFileImpl(name, this.getEncoding()); this.addFile(real); } @@ -70,4 +71,23 @@ public class FileManager this.files.put(file.getFilename(), file); } + /** + * Encoding is the encoding of source files. + * + * @param encoding encoding of source files + */ + public void setEncoding(String encoding) + { + this.encoding = encoding; + } + + /** + * see setEncoding(String) + * + * @see setEncoding(String) + */ + public String getEncoding() + { + return encoding; + } } diff --git a/jxr/src/main/org/apache/maven/jxr/pacman/JavaFile.java b/jxr/src/main/org/apache/maven/jxr/pacman/JavaFile.java index 64e5619e..0f1ca96f 100644 --- a/jxr/src/main/org/apache/maven/jxr/pacman/JavaFile.java +++ b/jxr/src/main/org/apache/maven/jxr/pacman/JavaFile.java @@ -23,7 +23,7 @@ import java.util.*; * Interface for objects which wish to provide metainfo about a JavaFile. * * @author Kevin A. Burton - * @version $Id: JavaFile.java,v 1.2 2004/03/02 15:08:12 evenisse Exp $ + * @version $Id: JavaFile.java,v 1.3 2004/08/23 13:12:44 evenisse Exp $ */ public abstract class JavaFile { @@ -34,6 +34,7 @@ public abstract class JavaFile private PackageType packageType = new PackageType(); private String filename = null; + private String encoding = null; /** Get the imported packages/files that this package has. */ public ImportType[] getImportTypes() @@ -87,4 +88,17 @@ public abstract class JavaFile { this.filename = filename; } + + + /** Gets the encoding attribute of the JavaFile object */ + public String getEncoding() + { + return this.encoding; + } + + /** Sets the encoding attribute of the JavaFile object */ + public void setEncoding(String encoding) + { + this.encoding = encoding; + } } diff --git a/jxr/src/main/org/apache/maven/jxr/pacman/JavaFileImpl.java b/jxr/src/main/org/apache/maven/jxr/pacman/JavaFileImpl.java index 253793f2..2376fff7 100644 --- a/jxr/src/main/org/apache/maven/jxr/pacman/JavaFileImpl.java +++ b/jxr/src/main/org/apache/maven/jxr/pacman/JavaFileImpl.java @@ -25,7 +25,7 @@ import java.io.*; * determine package, class, and imports * * @author Kevin A. Burton - * @version $Id: JavaFileImpl.java,v 1.4 2004/03/02 15:08:12 evenisse Exp $ + * @version $Id: JavaFileImpl.java,v 1.5 2004/08/23 13:12:44 evenisse Exp $ */ public class JavaFileImpl extends JavaFile { @@ -37,10 +37,11 @@ public class JavaFileImpl extends JavaFile * @param filename * @exception IOException */ - public JavaFileImpl(String filename) + public JavaFileImpl(String filename, String encoding) throws IOException { this.setFilename(filename); + this.setEncoding(encoding); //always add java.lang.* to the package imports because the JVM always //does this implicitly. Unless we add this to the ImportTypes JXR @@ -134,7 +135,14 @@ public class JavaFileImpl extends JavaFile throw new IOException(this.getFilename() + " does not exist!"); } - this.reader = new FileReader(this.getFilename()); + if (this.getEncoding() != null) + { + this.reader = new InputStreamReader(new FileInputStream(this.getFilename()), this.getEncoding()); + } + else + { + this.reader = new FileReader(this.getFilename()); + } StreamTokenizer stok = new StreamTokenizer(reader); //int tok; diff --git a/jxr/xdocs/changes.xml b/jxr/xdocs/changes.xml index 18fcc0d0..59d2f0bb 100644 --- a/jxr/xdocs/changes.xml +++ b/jxr/xdocs/changes.xml @@ -26,6 +26,7 @@ + Support encoding and lang. Add the possibility to run JXR for tests classes if sources classes doesn't exists. Remove NullPointerException for empty java files. Reduce output for non-debug run.