aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/DefBase.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/DefBase.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/DefBase.java167
1 files changed, 167 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/DefBase.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/DefBase.java
new file mode 100644
index 00000000..b52bbb72
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/DefBase.java
@@ -0,0 +1,167 @@
+/*
+ * 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;
+
+import org.apache.tools.ant.AntClassLoader;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.util.ClasspathUtils;
+
+/**
+ * Base class for Definitions handling uri and class loading.
+ * (This was part of Definer)
+ *
+ * @since Ant 1.6
+ */
+public abstract class DefBase extends AntlibDefinition {
+ private ClassLoader createdLoader;
+ private ClasspathUtils.Delegate cpDelegate;
+
+ /**
+ * Check if classpath attributes have been set.
+ * (to be called before getCpDelegate() is used.
+ * @return true if cpDelegate has been created.
+ */
+ protected boolean hasCpDelegate() {
+ return cpDelegate != null;
+ }
+
+ /**
+ * @param reverseLoader if true a delegated loader will take precedence over
+ * the parent
+ * @deprecated since 1.6.x.
+ * stop using this attribute
+ * @ant.attribute ignore="true"
+ */
+ public void setReverseLoader(boolean reverseLoader) {
+ getDelegate().setReverseLoader(reverseLoader);
+ log("The reverseloader attribute is DEPRECATED. It will be removed",
+ Project.MSG_WARN);
+ }
+
+ /**
+ * @return the classpath for this definition
+ */
+ public Path getClasspath() {
+ return getDelegate().getClasspath();
+ }
+
+ /**
+ * @return the reverse loader attribute of the classpath delegate.
+ */
+ public boolean isReverseLoader() {
+ return getDelegate().isReverseLoader();
+ }
+
+ /**
+ * Returns the loader id of the class path Delegate.
+ * @return the loader id
+ */
+ public String getLoaderId() {
+ return getDelegate().getClassLoadId();
+ }
+
+ /**
+ * Returns the class path id of the class path delegate.
+ * @return the class path id
+ */
+ public String getClasspathId() {
+ return getDelegate().getClassLoadId();
+ }
+
+ /**
+ * Set the classpath to be used when searching for component being defined.
+ *
+ * @param classpath an Ant Path object containing the classpath.
+ */
+ public void setClasspath(Path classpath) {
+ getDelegate().setClasspath(classpath);
+ }
+
+ /**
+ * Create the classpath to be used when searching for component being
+ * defined.
+ * @return the classpath of the this definition
+ */
+ public Path createClasspath() {
+ return getDelegate().createClasspath();
+ }
+
+ /**
+ * Set a reference to a classpath to use when loading the files.
+ * To actually share the same loader, set loaderref as well
+ * @param r the reference to the classpath
+ */
+ public void setClasspathRef(Reference r) {
+ getDelegate().setClasspathref(r);
+ }
+
+ /**
+ * Use the reference to locate the loader. If the loader is not
+ * found, the specified classpath will be used and registered
+ * with the specified name.
+ *
+ * This allows multiple taskdef/typedef to use the same class loader,
+ * so they can be used together, eliminating the need to
+ * put them in the CLASSPATH.
+ *
+ * @param r the reference to locate the loader.
+ * @since Ant 1.5
+ */
+ public void setLoaderRef(Reference r) {
+ getDelegate().setLoaderRef(r);
+ }
+
+ /**
+ * create a classloader for this definition
+ * @return the classloader from the cpDelegate
+ */
+ protected ClassLoader createLoader() {
+ if (getAntlibClassLoader() != null && cpDelegate == null) {
+ return getAntlibClassLoader();
+ }
+ if (createdLoader == null) {
+ createdLoader = getDelegate().getClassLoader();
+ // need to load Task via system classloader or the new
+ // task we want to define will never be a Task but always
+ // be wrapped into a TaskAdapter.
+ ((AntClassLoader) createdLoader)
+ .addSystemPackageRoot("org.apache.tools.ant");
+ }
+ return createdLoader;
+ }
+
+ /**
+ * @see org.apache.tools.ant.Task#init()
+ * @throws BuildException on error.
+ * @since Ant 1.6
+ */
+ public void init() throws BuildException {
+ super.init();
+ }
+
+ private ClasspathUtils.Delegate getDelegate() {
+ if (cpDelegate == null) {
+ cpDelegate = ClasspathUtils.getDelegate(this);
+ }
+ return cpDelegate;
+ }
+}