aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java513
1 files changed, 0 insertions, 513 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
deleted file mode 100644
index aaed7832..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.tools.ant.taskdefs.optional;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.optional.javah.JavahAdapter;
-import org.apache.tools.ant.taskdefs.optional.javah.JavahAdapterFactory;
-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.Reference;
-import org.apache.tools.ant.util.StringUtils;
-import org.apache.tools.ant.util.facade.FacadeTaskHelper;
-import org.apache.tools.ant.util.facade.ImplementationSpecificArgument;
-
-/**
- * Generates JNI header files using javah.
- *
- * This task can take the following arguments:
- * <ul>
- * <li>classname - the fully-qualified name of a class</li>
- * <li>outputFile - Concatenates the resulting header or source files for all
- * the classes listed into this file</li>
- * <li>destdir - Sets the directory where javah saves the header files or the
- * stub files</li>
- * <li>classpath</li>
- * <li>bootclasspath</li>
- * <li>force - Specifies that output files should always be written
- (JDK1.2 only)</li>
- * <li>old - Specifies that old JDK1.0-style header files should be generated
- * (otherwise output file contain JNI-style native method
- * function prototypes) (JDK1.2 only)</li>
- * <li>stubs - generate C declarations from the Java object file (used with old)</li>
- * <li>verbose - causes javah to print a message to stdout concerning the status
- * of the generated files</li>
- * <li>extdirs - Override location of installed extensions</li>
- * </ul>
- * Of these arguments, either <b>outputFile</b> or <b>destdir</b> is required,
- * but not both. More than one classname may be specified, using a comma-separated
- * list or by using <code>&lt;class name="xxx"&gt;</code> elements within the task.
- * <p>
- * When this task executes, it will generate C header and source files that
- * are needed to implement native methods.
- *
- */
-
-public class Javah extends Task {
-
- private Vector classes = new Vector(2);
- private String cls;
- private File destDir;
- private Path classpath = null;
- private File outputFile = null;
- private boolean verbose = false;
- private boolean force = false;
- private boolean old = false;
- private boolean stubs = false;
- private Path bootclasspath;
- //private Path extdirs;
- private FacadeTaskHelper facade = null;
- private Vector files = new Vector();
- private JavahAdapter nestedAdapter = null;
-
- /**
- * No arg constructor.
- */
- public Javah() {
- facade = new FacadeTaskHelper(JavahAdapterFactory.getDefault());
- }
-
- /**
- * the fully-qualified name of the class (or classes, separated by commas).
- * @param cls the classname (or classnames).
- */
- public void setClass(String cls) {
- this.cls = cls;
- }
-
- /**
- * Adds class to process.
- * @return a <code>ClassArgument</code> to be configured.
- */
- public ClassArgument createClass() {
- ClassArgument ga = new ClassArgument();
- classes.addElement(ga);
- return ga;
- }
-
- /**
- * A class corresponding the the nested "class" element.
- * It contains a "name" attribute.
- */
- public class ClassArgument {
- private String name;
-
- /** Constructor for ClassArgument. */
- public ClassArgument() {
- }
-
- /**
- * Set the name attribute.
- * @param name the name attribute.
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * Get the name attribute.
- * @return the name attribute.
- */
- public String getName() {
- return name;
- }
- }
-
- /**
- * Add a fileset.
- * @param fs the fileset to add.
- */
- public void addFileSet(FileSet fs) {
- files.add(fs);
- }
-
- /**
- * Names of the classes to process.
- * @return the array of classes.
- * @since Ant 1.6.3
- */
- public String[] getClasses() {
- ArrayList al = new ArrayList();
- if (cls != null) {
- StringTokenizer tok = new StringTokenizer(cls, ",", false);
- while (tok.hasMoreTokens()) {
- al.add(tok.nextToken().trim());
- }
- }
-
- 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();
- while (e.hasMoreElements()) {
- ClassArgument arg = (ClassArgument) e.nextElement();
- al.add(arg.getName());
- }
- return (String[]) al.toArray(new String[al.size()]);
- }
-
- /**
- * Set the destination directory into which the Java source
- * files should be compiled.
- * @param destDir the destination directory.
- */
- public void setDestdir(File destDir) {
- this.destDir = destDir;
- }
-
- /**
- * The destination directory, if any.
- * @return the destination directory.
- * @since Ant 1.6.3
- */
- public File getDestdir() {
- return destDir;
- }
-
- /**
- * the classpath to use.
- * @param src the classpath.
- */
- public void setClasspath(Path src) {
- if (classpath == null) {
- classpath = src;
- } else {
- classpath.append(src);
- }
- }
-
- /**
- * Path to use for classpath.
- * @return a path to be configured.
- */
- public Path createClasspath() {
- if (classpath == null) {
- classpath = new Path(getProject());
- }
- return classpath.createPath();
- }
-
- /**
- * Adds a reference to a classpath defined elsewhere.
- * @param r a reference to a classpath.
- * @todo this needs to be documented in the HTML docs.
- */
- public void setClasspathRef(Reference r) {
- createClasspath().setRefid(r);
- }
-
- /**
- * The classpath to use.
- * @return the classpath.
- * @since Ant 1.6.3
- */
- public Path getClasspath() {
- return classpath;
- }
-
- /**
- * location of bootstrap class files.
- * @param src the bootstrap classpath.
- */
- public void setBootclasspath(Path src) {
- if (bootclasspath == null) {
- bootclasspath = src;
- } else {
- bootclasspath.append(src);
- }
- }
-
- /**
- * Adds path to bootstrap class files.
- * @return a path to be configured.
- */
- public Path createBootclasspath() {
- if (bootclasspath == null) {
- bootclasspath = new Path(getProject());
- }
- return bootclasspath.createPath();
- }
-
- /**
- * To the bootstrap path, this adds a reference to a classpath defined elsewhere.
- * @param r a reference to a classpath
- * @todo this needs to be documented in the HTML.
- */
- public void setBootClasspathRef(Reference r) {
- createBootclasspath().setRefid(r);
- }
-
- /**
- * The bootclasspath to use.
- * @return the bootclass path.
- * @since Ant 1.6.3
- */
- public Path getBootclasspath() {
- return bootclasspath;
- }
-
- /**
- * Concatenates the resulting header or source files for all
- * the classes listed into this file.
- * @param outputFile the output file.
- */
- public void setOutputFile(File outputFile) {
- this.outputFile = outputFile;
- }
-
- /**
- * The destination file, if any.
- * @return the destination file.
- * @since Ant 1.6.3
- */
- public File getOutputfile() {
- return outputFile;
- }
-
- /**
- * If true, output files should always be written (JDK1.2 only).
- * @param force the value to use.
- */
- public void setForce(boolean force) {
- this.force = force;
- }
-
- /**
- * Whether output files should always be written.
- * @return the force attribute.
- * @since Ant 1.6.3
- */
- public boolean getForce() {
- return force;
- }
-
- /**
- * If true, specifies that old JDK1.0-style header files should be
- * generated.
- * (otherwise output file contain JNI-style native method function
- * prototypes) (JDK1.2 only).
- * @param old if true use old 1.0 style header files.
- */
- public void setOld(boolean old) {
- this.old = old;
- }
-
- /**
- * Whether old JDK1.0-style header files should be generated.
- * @return the old attribute.
- * @since Ant 1.6.3
- */
- public boolean getOld() {
- return old;
- }
-
- /**
- * If true, generate C declarations from the Java object file (used with old).
- * @param stubs if true, generated C declarations.
- */
- public void setStubs(boolean stubs) {
- this.stubs = stubs;
- }
-
- /**
- * Whether C declarations from the Java object file should be generated.
- * @return the stubs attribute.
- * @since Ant 1.6.3
- */
- public boolean getStubs() {
- return stubs;
- }
-
- /**
- * If true, causes Javah to print a message concerning
- * the status of the generated files.
- * @param verbose if true, do verbose printing.
- */
- public void setVerbose(boolean verbose) {
- this.verbose = verbose;
- }
-
- /**
- * Whether verbose output should get generated.
- * @return the verbose attribute.
- * @since Ant 1.6.3
- */
- public boolean getVerbose() {
- return verbose;
- }
-
- /**
- * Choose the implementation for this particular task.
- * @param impl the name of the implementation.
- * @since Ant 1.6.3
- */
- public void setImplementation(String impl) {
- if ("default".equals(impl)) {
- facade.setImplementation(JavahAdapterFactory.getDefault());
- } else {
- facade.setImplementation(impl);
- }
- }
-
- /**
- * Adds an implementation specific command-line argument.
- * @return a ImplementationSpecificArgument to be configured.
- *
- * @since Ant 1.6.3
- */
- public ImplementationSpecificArgument createArg() {
- ImplementationSpecificArgument arg =
- new ImplementationSpecificArgument();
- facade.addImplementationArgument(arg);
- return arg;
- }
-
- /**
- * Returns the (implementation specific) settings given as nested
- * arg elements.
- * @return the arguments.
- * @since Ant 1.6.3
- */
- public String[] getCurrentArgs() {
- return facade.getArgs();
- }
-
- /**
- * The classpath to use when loading the javah implementation
- * if it is not a built-in one.
- *
- * @since Ant 1.8.0
- */
- public Path createImplementationClasspath() {
- return facade.getImplementationClasspath(getProject());
- }
-
- /**
- * Set the adapter explicitly.
- * @since Ant 1.8.0
- */
- public void add(JavahAdapter adapter) {
- if (nestedAdapter != null) {
- throw new BuildException("Can't have more than one javah"
- + " adapter");
- }
- nestedAdapter = adapter;
- }
-
- /**
- * Execute the task
- *
- * @throws BuildException is there is a problem in the task execution.
- */
- public void execute() throws BuildException {
- // first off, make sure that we've got a srcdir
-
- if ((cls == null) && (classes.size() == 0) && (files.size() == 0)) {
- throw new BuildException("class attribute must be set!",
- 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.isDirectory()) {
- throw new BuildException("destination directory \"" + destDir
- + "\" does not exist or is not a directory", getLocation());
- }
- if (outputFile != null) {
- throw new BuildException("destdir and outputFile are mutually "
- + "exclusive", getLocation());
- }
- }
-
- if (classpath == null) {
- classpath = (new Path(getProject())).concatSystemClasspath("last");
- } else {
- classpath = classpath.concatSystemClasspath("ignore");
- }
-
- JavahAdapter ad =
- nestedAdapter != null ? nestedAdapter :
- JavahAdapterFactory.getAdapter(facade.getImplementation(),
- this,
- createImplementationClasspath());
- if (!ad.compile(this)) {
- throw new BuildException("compilation failed");
- }
- }
-
- /**
- * Logs the compilation parameters, adds the files to compile and logs the
- * &quot;niceSourceList&quot;
- * @param cmd the command line.
- */
- public void logAndAddFiles(Commandline cmd) {
- logAndAddFilesToCompile(cmd);
- }
-
- /**
- * Logs the compilation parameters, adds the files to compile and logs the
- * &quot;niceSourceList&quot;
- * @param cmd the command line to add parameters to.
- */
- protected void logAndAddFilesToCompile(Commandline cmd) {
- log("Compilation " + cmd.describeArguments(),
- Project.MSG_VERBOSE);
-
- StringBuffer niceClassList = new StringBuffer();
- String[] c = getClasses();
- for (int i = 0; i < c.length; i++) {
- cmd.createArgument().setValue(c[i]);
- niceClassList.append(" ");
- niceClassList.append(c[i]);
- niceClassList.append(StringUtils.LINE_SEP);
- }
-
- StringBuffer prefix = new StringBuffer("Class");
- if (c.length > 1) {
- prefix.append("es");
- }
- prefix.append(" to be compiled:");
- prefix.append(StringUtils.LINE_SEP);
-
- log(prefix.toString() + niceClassList.toString(), Project.MSG_VERBOSE);
- }
-}