Browse Source

-bugzilla #32062, allow javah to use filesets

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@582707 13f79535-47bb-0310-9956-ffa450edef68
master
Kevin Jackson 17 years ago
parent
commit
7eec24e306
1 changed files with 28 additions and 10 deletions
  1. +28
    -10
      src/main/org/apache/tools/ant/taskdefs/optional/Javah.java

+ 28
- 10
src/main/org/apache/tools/ant/taskdefs/optional/Javah.java View File

@@ -23,14 +23,17 @@ import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.util.Vector; import java.util.Vector;

import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task; import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.optional.javah.JavahAdapter; import org.apache.tools.ant.taskdefs.optional.javah.JavahAdapter;
import org.apache.tools.ant.taskdefs.optional.javah.JavahAdapterFactory; import org.apache.tools.ant.taskdefs.optional.javah.JavahAdapterFactory;
import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference; import org.apache.tools.ant.types.Reference;
import org.apache.tools.ant.util.StringUtils;
import org.apache.tools.ant.util.facade.FacadeTaskHelper; import org.apache.tools.ant.util.facade.FacadeTaskHelper;
import org.apache.tools.ant.util.facade.ImplementationSpecificArgument; import org.apache.tools.ant.util.facade.ImplementationSpecificArgument;


@@ -78,9 +81,9 @@ public class Javah extends Task {
private boolean stubs = false; private boolean stubs = false;
private Path bootclasspath; private Path bootclasspath;
//private Path extdirs; //private Path extdirs;
private static String lSep = System.getProperty("line.separator");
private FacadeTaskHelper facade = null; private FacadeTaskHelper facade = null;

private Vector files = new Vector();
/** /**
* No arg constructor. * No arg constructor.
*/ */
@@ -134,6 +137,10 @@ public class Javah extends Task {
} }
} }


public void addFileSet(FileSet fs) {
files.add(fs);
}
/** /**
* Names of the classes to process. * Names of the classes to process.
* @return the array of classes. * @return the array of classes.
@@ -148,6 +155,18 @@ public class Javah extends Task {
} }
} }


if(files.size() > 0) {
for(Enumeration e = files.elements(); e.hasMoreElements();){
FileSet fs = (FileSet)e.nextElement();
String[] includedClasses = fs.getDirectoryScanner(getProject()).getIncludedFiles();
for(int i = 0; i < includedClasses.length; i++) {
String className =
includedClasses[i].replace('\\', '.').replace('/', '.').substring(0,includedClasses[i].length()-6);
al.add(className);
}
}
}
Enumeration e = classes.elements(); Enumeration e = classes.elements();
while (e.hasMoreElements()) { while (e.hasMoreElements()) {
ClassArgument arg = (ClassArgument) e.nextElement(); ClassArgument arg = (ClassArgument) e.nextElement();
@@ -390,14 +409,14 @@ public class Javah extends Task {
public void execute() throws BuildException { public void execute() throws BuildException {
// first off, make sure that we've got a srcdir // first off, make sure that we've got a srcdir


if ((cls == null) && (classes.size() == 0)) {
if ((cls == null) && (classes.size() == 0) && (files.size() == 0)) {
throw new BuildException("class attribute must be set!", throw new BuildException("class attribute must be set!",
getLocation()); getLocation());
} }


if ((cls != null) && (classes.size() > 0)) {
throw new BuildException("set class attribute or class element, "
+ "not both.", getLocation());
if ((cls != null) && (classes.size() > 0) && (files.size() > 0)) {
throw new BuildException("set class attribute OR class element OR fileset, "
+ "not 2 or more of them.", getLocation());
} }


if (destDir != null) { if (destDir != null) {
@@ -449,7 +468,7 @@ public class Javah extends Task {
cmd.createArgument().setValue(c[i]); cmd.createArgument().setValue(c[i]);
niceClassList.append(" "); niceClassList.append(" ");
niceClassList.append(c[i]); niceClassList.append(c[i]);
niceClassList.append(lSep);
niceClassList.append(StringUtils.LINE_SEP);
} }


StringBuffer prefix = new StringBuffer("Class"); StringBuffer prefix = new StringBuffer("Class");
@@ -457,9 +476,8 @@ public class Javah extends Task {
prefix.append("es"); prefix.append("es");
} }
prefix.append(" to be compiled:"); prefix.append(" to be compiled:");
prefix.append(lSep);
prefix.append(StringUtils.LINE_SEP);


log(prefix.toString() + niceClassList.toString(), Project.MSG_VERBOSE); log(prefix.toString() + niceClassList.toString(), Project.MSG_VERBOSE);
} }
}

}

Loading…
Cancel
Save