/******************************************************************************* * 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); }