blob: 415bfad3e3e5cdc983f1d10260687b361564c389 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2007 BEA Systems, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* wharley@bea.com - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.apt.core.util;
import java.io.File;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
/**
* A minimal API for manipulating the annotation processor factory path.
* The factory path is an ordered list of containers, each of which has
* certain attributes, e.g., isEnabled, runInBatchMode. Containers on
* the path do not necessarily contain implementations of any particular
* service; in particular, a path may have both Java 5 and Java 6 annotation
* processors, as well as entries that contain supporting classes or
* resources.
* <p>
* Clients should not implement this interface.
*/
public interface IFactoryPath {
/**
* Add an external jar file (not in the workspace) to the head of the
* factory path. If the jar is already on the path, move it to the
* head. The jar will be added with default attributes, e.g.,
* isEnabled=true, runInBatchMode=false.
* @param jar a java.io.File representing the jar file. Must not be null.
*/
public void addExternalJar(File jar);
/**
* Remove an external jar file from the factory path.
* If the jar isn't on the path, do nothing.
* @param jar must not be null.
*/
public void removeExternalJar(File jar);
/**
* Add a jar file in the workspace to the head of the
* factory path. If the jar is already on the path, move it to the
* head. The jar will be added with default attributes, e.g.,
* isEnabled=true, runInBatchMode=false.
* @param jarPath an Eclipse IPath representing the jar file; the path is
* relative to the workspace root. Must not be null.
*/
public void addWkspJar(IPath jarPath);
/**
* Remove a workspace-relative jar from the factory path.
* If the jar isn't on the path, do nothing.
* @param jarPath an Eclipse IPath representing the jar file; the path is
* relative to the workspace root. Must not be null.
*/
public void removeWkspJar(IPath jarPath);
/**
* Add a jar file in the workspace, specified with a classpath variable,
* to the head of the factory path. If the jar is already on the path,
* move it to the head. The jar will be added with default attributes,
* e.g., isEnabled=true, runInBatchMode=false.
* @param jarPath an Eclipse IPath representing the jar file; the first
* segment of the path is assumed to be the variable name. Must not
* be null.
*/
public void addVarJar(IPath jarPath);
/**
* Remove from the factory path a jar file whose name is based on a
* classpath variable. If the jar isn't on the path, do nothing.
* @param jarPath an Eclipse IPath representing the jar file; the first
* segment of the path is assumed to be the variable name. Must not
* be null.
*/
public void removeVarJar(IPath jarPath);
/**
* Enable a plugin on the factory path, and move it to the head of the
* path.
* @param pluginId the unique id of the processor plugin, e.g.,
* "org.example.myProcessors"
* @throws CoreException if the plugin is not installed.
*/
public void enablePlugin(String pluginId) throws CoreException;
/**
* Disable a plugin on the factory path.
* If the plugin is not installed, do nothing.
* @param pluginId the unique id of the processor plugin, e.g.,
* "org.example.myProcessors"
*/
public void disablePlugin(String pluginId);
}