conor 00/09/24 04:50:19
Modified: src/main/org/apache/tools/ant/taskdefs/optional/ejb
GenericDeploymentTool.java
Added: src/main/org/apache/tools/ant/taskdefs/optional/ejb
InnerClassFilenameFilter.java
Log:
Include any inner classes in the generated Jar file.
Submitted by: Brian Towles <[EMAIL PROTECTED]>
Revision Changes Path
1.4 +26 -0
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
Index: GenericDeploymentTool.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- GenericDeploymentTool.java 2000/09/09 11:48:11 1.3
+++ GenericDeploymentTool.java 2000/09/24 11:50:18 1.4
@@ -369,6 +369,8 @@
Iterator entryIterator = null;
String entryName = null;
File entryFile = null;
+ File entryDir = null;
+ String innerfiles[] = null;
try {
/* If the jarfile already exists then whack it and recreate it.
@@ -398,6 +400,27 @@
addFileToJar(jarStream,
new FileInputStream(entryFile),
entryName);
+
+ // See if there are any inner classes for this class and add
them in if there are
+ InnerClassFilenameFilter flt = new
InnerClassFilenameFilter(entryFile.getName());
+ entryDir = entryFile.getParentFile();
+ innerfiles = entryDir.list(flt);
+ for (int i=0, n=innerfiles.length; i < n; i++) {
+
+ //get and clean up innerclass name
+ entryName = entryName.substring(0,
entryName.lastIndexOf(entryFile.getName())-1) + File.separatorChar +
innerfiles[i];
+
+ // link the file
+ entryFile = new File(srcDir, entryName);
+
+ getTask().log("adding innerclass file '" + entryName +
"'",
+ Project.MSG_VERBOSE);
+
+ addFileToJar(jarStream,
+ new FileInputStream(entryFile),
+ entryName);
+
+ }
}
// All done. Close the jar stream.
jarStream.close();
@@ -410,6 +433,9 @@
throw new BuildException(msg, ioe);
}
} // end of writeJar
+
+
+
/**
1.1
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/ejb/InnerClassFilenameFilter.java
Index: InnerClassFilenameFilter.java
===================================================================
package org.apache.tools.ant.taskdefs.optional.ejb;
import java.io.*;
public class InnerClassFilenameFilter implements FilenameFilter {
private String baseClassName;
InnerClassFilenameFilter(String baseclass){
int extidx = baseclass.lastIndexOf(".class");
if (extidx == -1) {
extidx = baseclass.length()-1;
}
baseClassName = baseclass.substring(0,extidx);
}
public boolean accept (File Dir, String filename){
if ((filename.lastIndexOf(".") !=
filename.lastIndexOf(".class"))
|| (filename.indexOf(baseClassName + "$") != 0)) {
return false;
}
return true;
}
}