| /******************************************************************************* |
| * Copyright (c) 2001, 2005 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jem.internal.proxy.core; |
| /* |
| |
| |
| */ |
| |
| import java.net.URL; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.jdt.core.IJavaProject; |
| import org.osgi.framework.Bundle; |
| ; |
| /** |
| * Controls contribution to the configuration. This allows the classpath |
| * to be modified in an acceptable manner, so that duplicates aren't in |
| * the path, or adding a project to the path in an acceptable way. |
| * |
| * If only deleting or moving entries from the classpath, that can be done directly |
| * to the classpath list passed in. Adding entries needs to go through this |
| * controller. |
| * |
| * This is meant to be implemented by developers of proxy launch configurations. |
| * |
| * @version 1.0 |
| * @author |
| */ |
| public interface IConfigurationContributionController { |
| |
| /** |
| * Append to the user classpath. |
| */ |
| public static final int APPEND_USER_CLASSPATH = 0; |
| |
| /** |
| * Prepend to the user classpath. This will stick it in position 0. If |
| * another prepend comes along, it will go in pos 0 and this one will move to 1. |
| */ |
| public static final int PREPEND_USER_CLASSPATH = 1; |
| |
| |
| /** |
| * Append to the boot classpath. |
| */ |
| public static final int APPEND_BOOT_CLASSPATH = 2; |
| |
| /** |
| * Prepend to the boot classpath. |
| */ |
| public static final int PREPEND_BOOT_CLASSPATH = 3; |
| |
| /** |
| * Append a folder to the java.library.path (for things like |
| * dll's). This should result in a folder only. |
| * The nlsLocalize flag contribute via plugin will be |
| * ignored for this type flag. |
| */ |
| public static final int APPEND_JAVA_LIBRARY_PATH = 4; |
| |
| /** |
| * Get the java project that we are contributing for. |
| * |
| * @return javaproject, may be <code>null</code> |
| * |
| * @since 1.0.0 |
| */ |
| public IJavaProject getJavaProject(); |
| |
| /** |
| * Add a project to the classpath. The type flag tells where to add it. |
| * |
| * @param project |
| * @throws CoreException |
| * |
| * @since 1.0.0 |
| */ |
| public void contributeProject(IProject project) throws CoreException; |
| |
| /** |
| * Add an external file/folder to the classpath. The type flag tells where to add it. |
| * |
| * @param classpath |
| * @param typeFlag One of <code>APPEND_USER_CLASSPATH</code>, <code>APPEND_BOOT_CLASSPATH</code>, <code>PREPEND_BOOT_CLASSPATH</code>, or <code>APPEND_JAVA_LIBRARY_PATH</code>. |
| * |
| * @deprecated use contributeClasspath(URL, int) instead. |
| * @see #contributeClasspath(URL, int) |
| * @since 1.0.0 |
| */ |
| public void contributeClasspath(String classpath, int typeFlag); |
| |
| /** |
| * Add an external file/folder to the classpath. The type flag tells where to add it. |
| * |
| * @param classpathURL |
| * @param typeFlag One of <code>APPEND_USER_CLASSPATH</code>, <code>APPEND_BOOT_CLASSPATH</code>, <code>PREPEND_BOOT_CLASSPATH</code>, or <code>APPEND_JAVA_LIBRARY_PATH</code>. |
| * |
| * @since 1.0.0 |
| */ |
| public void contributeClasspath(URL classpathURL, int typeFlag); |
| |
| /** |
| * Add an external files/folders to the classpath. The type flag tells where to add it. |
| * |
| * @param classpaths |
| * @param typeFlag One of <code>APPEND_USER_CLASSPATH</code>, <code>APPEND_BOOT_CLASSPATH</code>, <code>PREPEND_BOOT_CLASSPATH</code>, or <code>APPEND_JAVA_LIBRARY_PATH</code>. |
| * |
| * @deprecated use contributeClasspath(URL[], int) instead. |
| * @see #contributeClasspath(URL[], int) |
| * @since 1.0.0 |
| */ |
| public void contributeClasspath(String[] classpaths, int typeFlag); |
| |
| /** |
| * Add an external files/folders to the classpath. The type flag tells where to add it. |
| * |
| * @param classpathURLs |
| * @param typeFlag One of <code>APPEND_USER_CLASSPATH</code>, <code>APPEND_BOOT_CLASSPATH</code>, <code>PREPEND_BOOT_CLASSPATH</code>, or <code>APPEND_JAVA_LIBRARY_PATH</code>. |
| * |
| * @since 1.0.0 |
| */ |
| public void contributeClasspath(URL[] classpathURLs, int typeFlag); |
| |
| /** |
| * Add a file/folder from a plugin in the running Eclipse to the classpath. The type flag tells where to add it. |
| * In development mode it will find the bin class files instead if proxy.jars is setup correctly. |
| * <p> |
| * If nlsLocalize is <code>true</code>, then it will also search through the fragments in this manner: |
| * (Note: if <code>false</code> it will still search in the fragments, but it will only return the first file found that matches. |
| * <p> |
| * Find in the plugin and all of the fragments those that match the name exactly |
| * <p> |
| * This is useful for nls where the nls for the filename will be in one or more of the fragments of the plugin. |
| * |
| * @param bundle The bundle it can be found in. |
| * @param relativePath Path to file/folder relative to bundle root. Or <code>null</code> if it is the bundle/fragment itself (for when the bundle has been jar'ed up). |
| * <b>Note: </b>If it is <code>APPEND_JAVA_LIBRARY_PATH</code>, it should be folder and nlsLocalize will be ignored. |
| * In this case be careful that if a folder and the plugin is jarred that the folder <b>IS NOT THE ROOT OF THE PLUGIN</b>. This will |
| * cause the entire plugin to be extracted instead of just the directory containing the libraries. If the libraries are in the root |
| * of a jarred plugin then a separate cache directory should be created instead and the libraries of interest extracted to there. And |
| * then point to the cache directory instead. |
| * @param typeFlag One of <code>APPEND_USER_CLASSPATH</code>, <code>APPEND_BOOT_CLASSPATH</code>, <code>PREPEND_BOOT_CLASSPATH</code>, or <code>APPEND_JAVA_LIBRARY_PATH</code>. |
| * @param nlsLocalize The usual value should be <code>false</code>. Use <code>true</code> if should look through fragments to gather them all as described in this methods description. This will work for jarred bundles/fragments too. |
| * |
| * @since 1.0.0 |
| */ |
| public void contributeClasspath(Bundle bundle, String relativePath, int typeFlag, boolean nlsLocalize); |
| |
| /** |
| * Same as {@link #contributeClasspath(Bundle, String, int, boolean)} except an IPath can be used as the relative path. |
| * |
| * @param bundle |
| * @param relativePath path to file within bundle. Or <code>null</code> if it is the bundle/fragment itself (for when the bundle has been jar'ed up). |
| * @param typeFlag |
| * @param nlsLocalize |
| * |
| * @see #contributeClasspath(Bundle, String, int, boolean) |
| * @since 1.0.0 |
| */ |
| public void contributeClasspath(Bundle bundle, IPath relativePath, int typeFlag, boolean nlsLocalize); |
| |
| } |