blob: d61f5e38b952227ea235b15ed9070974396fdb58 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2021 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
* Les Jones <lesojones@gmail.com> - Bug 214457
* Simon Scholz <simon.scholz@vogella.com> - Bug 444808
*******************************************************************************/
package org.eclipse.pde.internal.core;
import java.util.Locale;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.pde.core.project.IBundleProjectDescription;
import org.osgi.framework.Constants;
/**
* Contains constants for the core PDE models including the target platform.
*/
public interface ICoreConstants {
// Preferences to allow products to add additional options in the target environment combos
// Unknown if they are being used
String OS_EXTRA = "org.eclipse.pde.os.extra"; //$NON-NLS-1$
String WS_EXTRA = "org.eclipse.pde.ws.extra"; //$NON-NLS-1$
String NL_EXTRA = "org.eclipse.pde.nl.extra"; //$NON-NLS-1$
String ARCH_EXTRA = "org.eclipse.pde.arch.extra"; //$NON-NLS-1$
/** Constant for the string <code>extension</code> */
String EXTENSION_NAME = "extension"; //$NON-NLS-1$
/** Constant for the string <code>plugin.xml</code> */
String PLUGIN_FILENAME_DESCRIPTOR = "plugin.xml"; //$NON-NLS-1$
/** Constant for the string <code>feature.xml</code> */
String FEATURE_FILENAME_DESCRIPTOR = "feature.xml"; //$NON-NLS-1$
/** Constant for the string <code>fragment.xml</code> */
String FRAGMENT_FILENAME_DESCRIPTOR = "fragment.xml"; //$NON-NLS-1$
/** Constant for the string <code>META-INF/MANIFEST.MF</code> */
String BUNDLE_FILENAME_DESCRIPTOR = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
/** Constant for the string <code>MANIFEST.MF</code> */
String MANIFEST_FILENAME = "MANIFEST.MF"; //$NON-NLS-1$
/** Constant for the string <code>.options</code> */
String OPTIONS_FILENAME = ".options"; //$NON-NLS-1$
/** Constant for the string <code>manifest.mf</code> */
String MANIFEST_FILENAME_LOWER_CASE = MANIFEST_FILENAME.toLowerCase(Locale.ENGLISH);
/** Constant for the string <code>build.properties</code> */
String BUILD_FILENAME_DESCRIPTOR = "build.properties"; //$NON-NLS-1$
/**
* Default version number for plugin and feature
*/
String DEFAULT_VERSION = "0.0.0"; //$NON-NLS-1$
/**
* Target version of <code>3.0</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET30 = "3.0"; //$NON-NLS-1$
/**
* Target version of <code>3.1</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET31 = "3.1"; //$NON-NLS-1$
/**
* Target version of <code>3.2</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET32 = "3.2"; //$NON-NLS-1$
/**
* Target version of <code>3.3</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET33 = "3.3"; //$NON-NLS-1$
/**
* Target version of <code>3.4</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET34 = "3.4"; //$NON-NLS-1$
/**
* Target version of <code>3.5</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET35 = "3.5"; //$NON-NLS-1$
/**
* Target version of <code>3.6</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET36 = "3.6"; //$NON-NLS-1$
/**
* Target version of <code>3.7</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET37 = "3.7"; //$NON-NLS-1$
/**
* Target version of <code>3.8</code>
* <p>
* PDE constant for the version of Eclipse a file/project/bundle is targeting. The version of
* a target platform is determined by what version of Equinox (org.eclipse.osgi) is included in the
* target. The version is only relevant if the user is building an Eclipse plug-in. This constant
* can be used to process PDE files that have changed structure between releases.
* </p><p>
* Anytime a new version constant is added, {@link ICoreConstants#TARGET_VERSION_LATEST} must be updated to
* the newest version. {@link TargetPlatformHelper#getTargetVersionString()} must be updated to return the
* new version.
* </p>
*/
String TARGET38 = "3.8"; //$NON-NLS-1$
/**
* The highest version of of Eclipse that PDE recognizes as having a special file structure. The value of
* this constant may change between releases.
* <p>
* Currently the latest version is {@link #TARGET38}. If a new version constant is added to PDE, this
* constant must be updated to the latest version. Also, {@link TargetPlatformHelper#getTargetVersionString()}
* must be updated to return the new version.
* </p><p>
* If the set of target versions available when creating a project changes, NewLibraryPluginCreationPage,
* NewProjectCreationPage, and {@link IBundleProjectDescription} must all be updated.
* </p>
*/
String TARGET_VERSION_LATEST = TARGET38;
/**
* Preference key that stores a list of user specified source locations.
* No longer supported in the UI.
* @deprecated Not supported in the UI.
*/
@Deprecated
String P_SOURCE_LOCATIONS = "source_locations"; //$NON-NLS-1$
String EQUINOX = "Equinox"; //$NON-NLS-1$
// project preferences
String SELFHOSTING_BIN_EXCLUDES = "selfhosting.binExcludes"; //$NON-NLS-1$
String EQUINOX_PROPERTY = "pluginProject.equinox"; //$NON-NLS-1$
String EXTENSIONS_PROPERTY = "pluginProject.extensions"; //$NON-NLS-1$
String RESOLVE_WITH_REQUIRE_BUNDLE = "resolve.requirebundle"; //$NON-NLS-1$
/**
* Configures launch shortcuts visible in the manifest editor for a project.
* Value is a comma separated list of <code>org.eclipse.pde.ui.launchShortcuts</code>
* extension identifiers.
*
* @since 3.6
*/
String MANIFEST_LAUNCH_SHORTCUTS = "manifest.launchShortcuts"; //$NON-NLS-1$
/**
* Configures the export wizard used in the manifest editor for a project.
* Value is an <code>org.eclipse.ui.exportWizards</code> extension identifier.
*
* @since 3.6
*/
String MANIFEST_EXPORT_WIZARD = "manifest.exportWizard"; //$NON-NLS-1$
// for backwards compatibility with Eclipse 3.0 bundle manifest files
String PROVIDE_PACKAGE = "Provide-Package"; //$NON-NLS-1$
String REPROVIDE_ATTRIBUTE = "reprovide"; //$NON-NLS-1$
String OPTIONAL_ATTRIBUTE = "optional"; //$NON-NLS-1$
String REQUIRE_PACKAGES_ATTRIBUTE = "require-packages"; //$NON-NLS-1$
String SINGLETON_ATTRIBUTE = "singleton"; //$NON-NLS-1$
String PACKAGE_SPECIFICATION_VERSION = "specification-version"; //$NON-NLS-1$
String IMPORT_SERVICE = "Import-Service"; //$NON-NLS-1$
String EXPORT_SERVICE = "Export-Service"; //$NON-NLS-1$
// Equinox-specific headers
String EXTENSIBLE_API = "Eclipse-ExtensibleAPI"; //$NON-NLS-1$
String PATCH_FRAGMENT = "Eclipse-PatchFragment"; //$NON-NLS-1$
String PLUGIN_CLASS = "Plugin-Class"; //$NON-NLS-1$
/**
* The 'Eclipse-AutoStart=true' header was used up to and including 3.1 to mean LAZY.
* However, this was a poorly named header, since "auto-start" sounds UN-LAZY, and
* was replaced with 'Eclipse-LazyStart=true' in 3.2.
*/
String ECLIPSE_AUTOSTART = "Eclipse-AutoStart"; //$NON-NLS-1$
/**
* The 'Eclipse-LazyStart=true' header replaced the 'Eclipse-AutoStart' header
* with a better name in 3.2. And since 3.4 (OSGi R4.1), the 'Bundle-ActivationPolicy: lazy'
* replaces all of these.
*/
String ECLIPSE_LAZYSTART = "Eclipse-LazyStart"; //$NON-NLS-1$
String ECLIPSE_JREBUNDLE = "Eclipse-JREBundle"; //$NON-NLS-1$
String ECLIPSE_BUDDY_POLICY = "Eclipse-BuddyPolicy"; //$NON-NLS-1$
String ECLIPSE_REGISTER_BUDDY = "Eclipse-RegisterBuddy"; //$NON-NLS-1$
String ECLIPSE_GENERIC_CAPABILITY = "Eclipse-GenericCapability"; //$NON-NLS-1$
String ECLIPSE_GENERIC_REQUIRED = "Eclipse-GenericRequire"; //$NON-NLS-1$
String PLATFORM_FILTER = "Eclipse-PlatformFilter"; //$NON-NLS-1$
String ECLIPSE_SOURCE_BUNDLE = "Eclipse-SourceBundle"; //$NON-NLS-1$
String ECLIPSE_SYSTEM_BUNDLE = "Eclipse-SystemBundle"; //$NON-NLS-1$
String ECLIPSE_BUNDLE_SHAPE = "Eclipse-BundleShape"; //$NON-NLS-1$
String ECLIPSE_SOURCE_REFERENCES = "Eclipse-SourceReferences"; //$NON-NLS-1$
String SERVICE_COMPONENT = "Service-Component"; //$NON-NLS-1$
String AUTOMATIC_MODULE_NAME = "Automatic-Module-Name"; //$NON-NLS-1$
String ECLIPSE_EXPORT_EXTERNAL_ANNOTATIONS = "Eclipse-ExportExternalAnnotations"; //$NON-NLS-1$
// Equinox-specific system properties
String OSGI_SYSTEM_BUNDLE = "osgi.system.bundle"; //$NON-NLS-1$
String OSGI_OS = "osgi.os"; //$NON-NLS-1$
String OSGI_WS = "osgi.ws"; //$NON-NLS-1$
String OSGI_NL = "osgi.nl"; //$NON-NLS-1$
String OSGI_ARCH = "osgi.arch"; //$NON-NLS-1$
String OSGI_RESOLVE_OPTIONAL = "osgi.resolveOptional"; //$NON-NLS-1$
String OSGI_RESOLVER_MODE = "osgi.resolverMode"; //$NON-NLS-1$
// Equinox-specific directives
String INTERNAL_DIRECTIVE = "x-internal"; //$NON-NLS-1$
String FRIENDS_DIRECTIVE = "x-friends"; //$NON-NLS-1$
String SHAPE_JAR = "jar"; //$NON-NLS-1$
String SHAPE_DIR = "dir"; //$NON-NLS-1$
String[] SHAPE_VALUES = new String[] {SHAPE_DIR, SHAPE_JAR};
String[] TRANSLATABLE_HEADERS = new String[] {Constants.BUNDLE_VENDOR, Constants.BUNDLE_NAME, Constants.BUNDLE_DESCRIPTION, Constants.BUNDLE_COPYRIGHT, Constants.BUNDLE_CATEGORY, Constants.BUNDLE_CONTACTADDRESS};
// Common folder names
String MANIFEST_FOLDER_NAME = "META-INF/"; //$NON-NLS-1$
String OSGI_INF_FOLDER_NAME = "OSGI-INF/"; //$NON-NLS-1$
String FEATURE_FOLDER_NAME = "features"; //$NON-NLS-1$
// Common paths
IPath MANIFEST_PATH = new Path(BUNDLE_FILENAME_DESCRIPTOR);
IPath PLUGIN_PATH = new Path(PLUGIN_FILENAME_DESCRIPTOR);
IPath FRAGMENT_PATH = new Path(FRAGMENT_FILENAME_DESCRIPTOR);
IPath FEATURE_PATH = new Path(FEATURE_FILENAME_DESCRIPTOR);
IPath BUILD_PROPERTIES_PATH = new Path(BUILD_FILENAME_DESCRIPTOR);
IPath OSGI_INF_PATH = new Path(OSGI_INF_FOLDER_NAME);
// Extension point identifiers
String EXTENSION_POINT_SOURCE = PDECore.PLUGIN_ID + ".source"; //$NON-NLS-1$
String EXTENSION_POINT_BUNDLE_IMPORTERS = PDECore.PLUGIN_ID + ".bundleImporters"; //$NON-NLS-1$
// file extensions
/**
* File extension for target definitions
*/
String TARGET_FILE_EXTENSION = "target"; //$NON-NLS-1$
/**
* Preference key for the active workspace target platform handle memento. If not set,
* old target preferences will be used to create a default. If no external bundles are
* wanted, this value should be set to {@link #NO_TARGET}.
*/
String WORKSPACE_TARGET_HANDLE = "workspace_target_handle"; //$NON-NLS-1$
/**
* Preference key for the workspace bundle overriding target bundle for the
* same id
*/
String WORKSPACE_PLUGINS_OVERRIDE_TARGET = "workspace_plugins_override_target"; //$NON-NLS-1$
/**
* Boolean preference whether API analysis has been disabled
*/
String DISABLE_API_ANALYSIS_BUILDER = "Preferences.MainPage.disableAPIAnalysisBuilder";//$NON-NLS-1$
/**
* Boolean preference whether API analysis should run asynchronous to the
* build as background job
*/
String RUN_API_ANALYSIS_AS_JOB = "Preferences.MainPage.runAPIAnalysisAsJob";//$NON-NLS-1$
/**
* Boolean preference whether add
* '-Dorg.eclipse.swt.graphics.Resource.reportNonDisposed=true' to VM
* arguments when creating a new launch configuration
*/
String ADD_SWT_NON_DISPOSAL_REPORTING = "Preferences.MainPage.addSwtNonDisposalReporting ";//$NON-NLS-1$
/**
* Explicit preference value for {@link #WORKSPACE_TARGET_HANDLE} when the user chooses no
* target for the workspace (no external bundles).
*/
String NO_TARGET = "NO_TARGET"; //$NON-NLS-1$
/**
* Preference key for the patterns that determine if a plugin project should be
* treated as test code
*/
String TEST_PLUGIN_PATTERN = "test_plugin_pattern"; //$NON-NLS-1$
// default value for
String TEST_PLUGIN_PATTERN_DEFAULTVALUE = "[.]test[s]?$|[.]tests[.]"; //$NON-NLS-1$
}