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.