/*
 *  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
 *
 *      https://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
/** * 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.
Returns:true if cpDelegate has been created.
/** * 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; }
Params:
  • reverseLoader – if true a delegated loader will take precedence over the parent
Deprecated:since 1.6.x. stop using this attribute
@ant.attributeignore="true"
/** * @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" */
@Deprecated public void setReverseLoader(boolean reverseLoader) { getDelegate().setReverseLoader(reverseLoader); log("The reverseloader attribute is DEPRECATED. It will be removed", Project.MSG_WARN); }
Returns:the classpath for this definition
/** * @return the classpath for this definition */
public Path getClasspath() { return getDelegate().getClasspath(); }
Returns:the reverse loader attribute of the classpath delegate.
/** * @return the reverse loader attribute of the classpath delegate. */
public boolean isReverseLoader() { return getDelegate().isReverseLoader(); }
Returns the loader id of the class path Delegate.
Returns:the loader id
/** * 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.
Returns:the class path id
/** * 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.
Params:
  • classpath – an Ant Path object containing the classpath.
/** * 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.
Returns:the classpath of the this definition
/** * 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
Params:
  • r – the reference to the classpath
/** * 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.
Params:
  • r – the reference to locate the loader.
Since:Ant 1.5
/** * 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
Returns:the classloader from the cpDelegate
/** * 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; }
Throws:
See Also:
  • init.init()
Since:Ant 1.6
/** * @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; } }