aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java202
1 files changed, 0 insertions, 202 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
deleted file mode 100644
index aeecb4a5..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
+++ /dev/null
@@ -1,202 +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.compilers;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.util.ClasspathUtils;
-import org.apache.tools.ant.util.JavaEnvUtils;
-
-/**
- * Creates the necessary compiler adapter, given basic criteria.
- *
- * @since Ant 1.3
- */
-public final class CompilerAdapterFactory {
- private static final String MODERN_COMPILER = "com.sun.tools.javac.Main";
-
- /** This is a singleton -- can't create instances!! */
- private CompilerAdapterFactory() {
- }
-
- /**
- * Based on the parameter passed in, this method creates the necessary
- * factory desired.
- *
- * The current mapping for compiler names are as follows:
- * <ul><li>jikes = jikes compiler
- * <li>classic, javac1.1, javac1.2 = the standard compiler from JDK
- * 1.1/1.2
- * <li>modern, javac1.3, javac1.4, javac1.5 = the compiler of JDK 1.3+
- * <li>jvc, microsoft = the command line compiler from Microsoft's SDK
- * for Java / Visual J++
- * <li>kjc = the kopi compiler</li>
- * <li>gcj = the gcj compiler from gcc</li>
- * <li>sj, symantec = the Symantec Java compiler</li>
- * <li><i>a fully qualified classname</i> = the name of a compiler
- * adapter
- * </ul>
- *
- * @param compilerType either the name of the desired compiler, or the
- * full classname of the compiler's adapter.
- * @param task a task to log through.
- * @return the compiler adapter
- * @throws BuildException if the compiler type could not be resolved into
- * a compiler adapter.
- */
- public static CompilerAdapter getCompiler(String compilerType, Task task)
- throws BuildException {
- return getCompiler(compilerType, task, null);
- }
-
- /**
- * Based on the parameter passed in, this method creates the necessary
- * factory desired.
- *
- * The current mapping for compiler names are as follows:
- * <ul><li>jikes = jikes compiler
- * <li>classic, javac1.1, javac1.2 = the standard compiler from JDK
- * 1.1/1.2
- * <li>modern, javac1.3, javac1.4, javac1.5 = the compiler of JDK 1.3+
- * <li>jvc, microsoft = the command line compiler from Microsoft's SDK
- * for Java / Visual J++
- * <li>kjc = the kopi compiler</li>
- * <li>gcj = the gcj compiler from gcc</li>
- * <li>sj, symantec = the Symantec Java compiler</li>
- * <li><i>a fully qualified classname</i> = the name of a compiler
- * adapter
- * </ul>
- *
- * @param compilerType either the name of the desired compiler, or the
- * full classname of the compiler's adapter.
- * @param task a task to log through.
- * @param classpath the classpath to use when looking up an
- * adapter class
- * @return the compiler adapter
- * @throws BuildException if the compiler type could not be resolved into
- * a compiler adapter.
- * @since Ant 1.8.0
- */
- public static CompilerAdapter getCompiler(String compilerType, Task task,
- Path classpath)
- throws BuildException {
- if (compilerType.equalsIgnoreCase("jikes")) {
- return new Jikes();
- }
- if (compilerType.equalsIgnoreCase("extjavac")) {
- return new JavacExternal();
- }
- if (compilerType.equalsIgnoreCase("classic")
- || compilerType.equalsIgnoreCase("javac1.1")
- || compilerType.equalsIgnoreCase("javac1.2")) {
- task.log("This version of java does "
- + "not support the classic "
- + "compiler; upgrading to modern",
- Project.MSG_WARN);
- compilerType = "modern";
- }
- //on java<=1.3 the modern falls back to classic if it is not found
- //but on java>=1.4 we just bail out early
- if (compilerType.equalsIgnoreCase("modern")
- || compilerType.equalsIgnoreCase("javac1.3")
- || compilerType.equalsIgnoreCase("javac1.4")
- || compilerType.equalsIgnoreCase("javac1.5")
- || compilerType.equalsIgnoreCase("javac1.6")
- || compilerType.equalsIgnoreCase("javac1.7")
- || compilerType.equalsIgnoreCase("javac1.8")
- || compilerType.equalsIgnoreCase("javac1.9")) {
- // does the modern compiler exist?
- if (doesModernCompilerExist()) {
- return new Javac13();
- } else {
- throw new BuildException("Unable to find a javac "
- + "compiler;\n"
- + MODERN_COMPILER
- + " is not on the "
- + "classpath.\n"
- + "Perhaps JAVA_HOME does not"
- + " point to the JDK.\n"
- + "It is currently set to \""
- + JavaEnvUtils.getJavaHome()
- + "\"");
- }
- }
-
- if (compilerType.equalsIgnoreCase("jvc")
- || compilerType.equalsIgnoreCase("microsoft")) {
- return new Jvc();
- }
- if (compilerType.equalsIgnoreCase("kjc")) {
- return new Kjc();
- }
- if (compilerType.equalsIgnoreCase("gcj")) {
- return new Gcj();
- }
- if (compilerType.equalsIgnoreCase("sj")
- || compilerType.equalsIgnoreCase("symantec")) {
- return new Sj();
- }
- return resolveClassName(compilerType,
- // Memory-Leak in line below
- task.getProject().createClassLoader(classpath));
- }
-
- /**
- * query for the Modern compiler existing
- * @return true if classic os on the classpath
- */
- private static boolean doesModernCompilerExist() {
- try {
- Class.forName(MODERN_COMPILER);
- return true;
- } catch (ClassNotFoundException cnfe) {
- try {
- ClassLoader cl = CompilerAdapterFactory.class.getClassLoader();
- if (cl != null) {
- cl.loadClass(MODERN_COMPILER);
- return true;
- }
- } catch (ClassNotFoundException cnfe2) {
- // Ignore Exception
- }
- }
- return false;
- }
-
- /**
- * Tries to resolve the given classname into a compiler adapter.
- * Throws a fit if it can't.
- *
- * @param className The fully qualified classname to be created.
- * @param loader the classloader to use
- * @throws BuildException This is the fit that is thrown if className
- * isn't an instance of CompilerAdapter.
- */
- private static CompilerAdapter resolveClassName(String className,
- ClassLoader loader)
- throws BuildException {
- return (CompilerAdapter) ClasspathUtils.newInstance(className,
- loader != null ? loader :
- CompilerAdapterFactory.class.getClassLoader(),
- CompilerAdapter.class);
- }
-
-}