Copyright (c) 2000, 2013 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2013 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.ant.core; import java.net.URL; import java.net.URLClassLoader; import java.util.Arrays; import java.util.List; import org.eclipse.ant.internal.core.AntClassLoader; import org.eclipse.ant.internal.core.AntCoreUtil; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionPoint; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Status; import org.osgi.framework.BundleContext;
The plug-in runtime class for the Ant Core plug-in. Clients may not instantiate or subclass this class.
@noinstantiateThis class is not intended to be instantiated by clients.
@noextendThis class is not intended to be subclassed by clients.
/** * The plug-in runtime class for the Ant Core plug-in. Clients may not instantiate or subclass this class. * * @noinstantiate This class is not intended to be instantiated by clients. * @noextend This class is not intended to be subclassed by clients. */
public class AntCorePlugin extends Plugin {
Status code indicating an unexpected internal error.
Since:2.1
/** * Status code indicating an unexpected internal error. * * @since 2.1 */
public static final int INTERNAL_ERROR = 120;
The single instance of this plug-in runtime class.
/** * The single instance of this plug-in runtime class. */
private static AntCorePlugin plugin;
The preferences class for this plug-in.
/** * The preferences class for this plug-in. */
private AntCorePreferences preferences;
Unique identifier constant (value "org.eclipse.ant.core") for the Ant Core plug-in.
/** * Unique identifier constant (value <code>"org.eclipse.ant.core"</code>) for the Ant Core plug-in. */
public static final String PI_ANTCORE = "org.eclipse.ant.core"; //$NON-NLS-1$
Simple identifier constant (value "antTasks") for the Ant tasks extension point.
/** * Simple identifier constant (value <code>"antTasks"</code>) for the Ant tasks extension point. */
public static final String PT_TASKS = "antTasks"; //$NON-NLS-1$
Simple identifier constant (value "extraClasspathEntries") for the extra classpath entries extension point.
/** * Simple identifier constant (value <code>"extraClasspathEntries"</code>) for the extra classpath entries extension point. */
public static final String PT_EXTRA_CLASSPATH = "extraClasspathEntries"; //$NON-NLS-1$
Simple identifier constant (value "antTypes") for the Ant types extension point.
/** * Simple identifier constant (value <code>"antTypes"</code>) for the Ant types extension point. */
public static final String PT_TYPES = "antTypes"; //$NON-NLS-1$
Simple identifier constant (value "antProperties") for the Ant properties extension point.
Since:3.0
/** * Simple identifier constant (value <code>"antProperties"</code>) for the Ant properties extension point. * * @since 3.0 */
public static final String PT_PROPERTIES = "antProperties"; //$NON-NLS-1$
Simple identifier constant (value "org.eclipse.ant.core.antBuildFile") for the content type of an Ant BuildFile
Since:3.0
/** * Simple identifier constant (value <code>"org.eclipse.ant.core.antBuildFile"</code>) for the content type of an Ant BuildFile * * @since 3.0 */
public static final String ANT_BUILDFILE_CONTENT_TYPE = PI_ANTCORE + ".antBuildFile"; //$NON-NLS-1$
Simple identifier constant (value "class") of a tag that appears in Ant extensions.
/** * Simple identifier constant (value <code>"class"</code>) of a tag that appears in Ant extensions. */
public static final String CLASS = "class"; //$NON-NLS-1$
Simple identifier constant (value "name") of a tag that appears in Ant extensions.
/** * Simple identifier constant (value <code>"name"</code>) of a tag that appears in Ant extensions. */
public static final String NAME = "name"; //$NON-NLS-1$
Simple identifier constant (value "library") of a tag that appears in Ant extensions.
/** * Simple identifier constant (value <code>"library"</code>) of a tag that appears in Ant extensions. */
public static final String LIBRARY = "library"; //$NON-NLS-1$
Simple identifier constant (value "headless") of a tag that appears in Ant extensions.
Since:2.1
/** * Simple identifier constant (value <code>"headless"</code>) of a tag that appears in Ant extensions. * * @since 2.1 */
public static final String HEADLESS = "headless"; //$NON-NLS-1$
Simple identifier constant (value "eclipseRuntime") of a tag that appears in Ant extensions.
Since:3.0
/** * Simple identifier constant (value <code>"eclipseRuntime"</code>) of a tag that appears in Ant extensions. * * @since 3.0 */
public static final String ECLIPSE_RUNTIME = "eclipseRuntime"; //$NON-NLS-1$
Simple identifier constant (value "uri") of a tag that appears in Ant extensions.
Since:3.2
/** * Simple identifier constant (value <code>"uri"</code>) of a tag that appears in Ant extensions. * * @since 3.2 */
public static final String URI = "uri"; //$NON-NLS-1$
Simple identifier constant (value "value") of a tag that appears in Ant extensions.
Since:3.0
/** * Simple identifier constant (value <code>"value"</code>) of a tag that appears in Ant extensions. * * @since 3.0 */
public static final String VALUE = "value"; //$NON-NLS-1$
Key to access the IProgressMonitor reference. When a progress monitor is passed to the AntRunner.run(IProgressMonitor) method, the object is available as a reference for the current Ant project.
/** * Key to access the <code>IProgressMonitor</code> reference. When a progress monitor is passed to the * <code>AntRunner.run(IProgressMonitor)</code> method, the object is available as a reference for the current Ant project. */
public static final String ECLIPSE_PROGRESS_MONITOR = "eclipse.progress.monitor"; //$NON-NLS-1$
Status code indicating an error occurred running a build.
Since:2.1
/** * Status code indicating an error occurred running a build. * * @since 2.1 */
public static final int ERROR_RUNNING_BUILD = 1;
Status code indicating an error occurred due to a malformed URL.
Since:2.1
/** * Status code indicating an error occurred due to a malformed URL. * * @since 2.1 */
public static final int ERROR_MALFORMED_URL = 2;
Status code indicating an error occurred as a library was not specified
Since:2.1
/** * Status code indicating an error occurred as a library was not specified * * @since 2.1 */
public static final int ERROR_LIBRARY_NOT_SPECIFIED = 3;
Constructs an instance of this plug-in runtime class.

An instance of this plug-in runtime class is automatically created when the facilities provided by the Ant Core plug-in are required. Clients must never explicitly instantiate a plug-in runtime class.

Since:3.1
/** * Constructs an instance of this plug-in runtime class. * <p> * An instance of this plug-in runtime class is automatically created when the facilities provided by the Ant Core plug-in are required. * <b>Clients must never explicitly instantiate a plug-in runtime class.</b> * </p> * * @since 3.1 * */
public AntCorePlugin() { plugin = this; } /* * (non-Javadoc) * * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext) * * @since 3.1 */ @Override @SuppressWarnings("deprecation") public void stop(BundleContext context) throws Exception { super.stop(context); AntCoreUtil.setBundleContext(null); if (preferences != null) { savePluginPreferences(); } } /* * (non-Javadoc) * * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) * * @since 3.1 */ @Override public void start(BundleContext context) throws Exception { super.start(context); AntCoreUtil.setBundleContext(context); }
Given an extension point name, extract its extensions and return them as a List.
Params:
  • pointName – The name of the extension point
Returns:The list of the extensions
/** * Given an extension point name, extract its extensions and return them as a List. * * @param pointName * The name of the extension point * @return The list of the extensions */
private List<IConfigurationElement> extractExtensions(String pointName) { IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(AntCorePlugin.PI_ANTCORE, pointName); if (extensionPoint == null) { return null; } IConfigurationElement[] extensions = extensionPoint.getConfigurationElements(); return Arrays.asList(extensions); }
Returns an object representing this plug-in's preferences.
Returns:the Ant core object representing the preferences for this plug-in.
/** * Returns an object representing this plug-in's preferences. * * @return the Ant core object representing the preferences for this plug-in. */
public AntCorePreferences getPreferences() { if (preferences == null) { preferences = new AntCorePreferences(extractExtensions(PT_TASKS), extractExtensions(PT_EXTRA_CLASSPATH), extractExtensions(PT_TYPES), extractExtensions(PT_PROPERTIES), false); } return preferences; }
Set this plug-in's preferences for running headless based on the headless parameter. This method is public for testing purposes only. It should not be called outside of the Ant integration framework.
Params:
  • headless – Whether or not to mark that the plug-in is running headless or not
/** * Set this plug-in's preferences for running headless based on the headless parameter. This method is public for testing purposes only. It should * not be called outside of the Ant integration framework. * * @param headless * Whether or not to mark that the plug-in is running headless or not */
public void setRunningHeadless(boolean headless) { preferences = new AntCorePreferences(extractExtensions(PT_TASKS), extractExtensions(PT_EXTRA_CLASSPATH), extractExtensions(PT_TYPES), extractExtensions(PT_PROPERTIES), headless); }
Returns this plug-in instance.
Returns:the single instance of this plug-in runtime class
/** * Returns this plug-in instance. * * @return the single instance of this plug-in runtime class */
public static AntCorePlugin getPlugin() { return plugin; }
Returns a new class loader to use when executing Ant builds.
Returns:the new class loader
/** * Returns a new class loader to use when executing Ant builds. * * @return the new class loader */
public ClassLoader getNewClassLoader() { AntCorePreferences corePreferences = getPreferences(); return getNewClassLoader(false, corePreferences.getURLs()); }
Returns a new class loader to use when executing Ant builds.
Params:
  • urls – the URLs that define the classpath of the new classloader
Returns:the new class loader
Since:3.1
/** * Returns a new class loader to use when executing Ant builds. * * @param urls * the URLs that define the classpath of the new classloader * @return the new class loader * @since 3.1 */
public URLClassLoader getNewClassLoader(URL[] urls) { return getNewClassLoader(false, urls); }
Returns a new class loader to use when executing Ant builds or other applications such as parsing or code proposal determination.
Params:
  • allowLoading – whether to allow plug-in classloaders associated with the new classloader to load Apache Ant classes or resources.
Returns:the new class loader
/** * Returns a new class loader to use when executing Ant builds or other applications such as parsing or code proposal determination. * * @param allowLoading * whether to allow plug-in classloaders associated with the new classloader to load Apache Ant classes or resources. * @return the new class loader */
public ClassLoader getNewClassLoader(boolean allowLoading) { AntCorePreferences corePreferences = getPreferences(); URL[] urls = corePreferences.getURLs(); return getNewClassLoader(allowLoading, urls); }
Returns a new class loader to use when executing Ant builds or other applications such as parsing or code proposal determination.
Params:
  • allowLoading – whether to allow plug-in classloaders associated with the new classloader to load Apache Ant classes or resources.
  • urls – the URLs that define the classpath of the new classloader
Returns:the new class loader
Since:3.1
/** * Returns a new class loader to use when executing Ant builds or other applications such as parsing or code proposal determination. * * @param allowLoading * whether to allow plug-in classloaders associated with the new classloader to load Apache Ant classes or resources. * @param urls * the URLs that define the classpath of the new classloader * @return the new class loader * @since 3.1 */
public URLClassLoader getNewClassLoader(boolean allowLoading, URL[] urls) { AntCorePreferences corePreferences = getPreferences(); ClassLoader[] pluginLoaders = corePreferences.getPluginClassLoaders(); AntClassLoader loader = new AntClassLoader(urls, pluginLoaders); loader.allowPluginClassLoadersToLoadAnt(allowLoading); return loader; }
Logs the specified throwable with this plug-in's log.
Params:
  • t – throwable to log
Since:2.1
/** * Logs the specified throwable with this plug-in's log. * * @param t * throwable to log * @since 2.1 */
public static void log(Throwable t) { IStatus status = new Status(IStatus.ERROR, PI_ANTCORE, INTERNAL_ERROR, "Error logged from Ant Core: ", t); //$NON-NLS-1$ getPlugin().getLog().log(status); } }