# Class ResourcesPlugin

java.lang.Object
org.eclipse.core.runtime.Plugin
org.eclipse.core.resources.ResourcesPlugin

All Implemented Interfaces:
  `BundleActivator`

public final class ResourcesPlugin extends Plugin
The plug-in runtime class for the Resources plug-in. This is the starting point for all workspace and resource manipulation. A typical sequence of events would be for a dependent plug-in to track the `org.eclipse.core.resources.IWorkspace` service. Doing so would cause this plug-in to be activated and the workspace (if any) to be loaded from disk and initialized.

Restriction:
  This class is not intended to be instantiated by clients.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final boolean`
`DEFAULT_PREF_SEPARATE_DERIVED_ENCODINGS`
Default setting for "separateDerivedEncodings".
`static final Object`
`FAMILY_AUTO_BUILD`
Constant identifying the job family identifier for the background autobuild job.
`static final Object`
`FAMILY_AUTO_REFRESH`
Constant identifying the job family identifier for the background auto-refresh job.
`static final Object`
`FAMILY_MANUAL_BUILD`
Constant identifying the job family identifier for a background build job.
`static final Object`
`FAMILY_MANUAL_REFRESH`
Constant identifying the job family identifier for a background refresh job.
`static final Object`
`FAMILY_SNAPSHOT`
Constant identifying the job family identifier for a background workspace snapshot job.
`static final String`
`PI_RESOURCES`
Unique identifier constant (value `"org.eclipse.core.resources"`) for the standard Resources plug-in.
`static final String`
`PREF_APPLY_FILE_STATE_POLICY`
Name of a preference for configuring whether to apply the specified history size policy.
`static final String`
`PREF_AUTO_BUILDING`
Name of a preference for configuring whether the workspace performs auto- builds.
`static final String`
`PREF_AUTO_REFRESH`
Name of a preference for configuring whether the workspace performs auto- refresh.
`static final String`
`PREF_BUILD_ORDER`
Name of a preference for configuring the order projects in the workspace are built.
`static final String`
`PREF_DEFAULT_BUILD_ORDER`
Name of a preference for configuring whether to use the workspace's default order for building projects.
`static final String`
`PREF_DISABLE_LINKING`
Name of a preference for turning off support for linked resources.
`static final String`
`PREF_ENCODING`
Name of a preference indicating the encoding to use when reading text files in the workspace.
`static final String`
`PREF_FILE_STATE_LONGEVITY`
Name of a preference for configuring the maximum number of milliseconds a file state should be kept in the local history
`static final String`
`PREF_KEEP_DERIVED_STATE`
Name of a preference for configuring whether derived files should be stored in the local history.
`static final String`
`PREF_LIGHTWEIGHT_AUTO_REFRESH`
Name of a preference for configuring whether out-of-sync resources are automatically asynchronously refreshed, when discovered to be out-of-sync by the workspace.
`static final String`
`PREF_MAX_BUILD_ITERATIONS`
Name of a preference for configuring the maximum number of times that the workspace should rebuild when builders affect projects that have already been built.
`static final String`
`PREF_MAX_CONCURRENT_BUILDS`
Name of the preference to set max number of concurrent jobs running the workspace build.
`static final String`
`PREF_MAX_FILE_STATE_SIZE`
Name of a preference for configuring the maximum permitted size of a file to be stored in the local history
`static final String`
`PREF_MAX_FILE_STATES`
Name of a preference for configuring the maximum number of states per file that can be stored in the local history.
`static final String`
`PREF_MAX_NOTIFICATION_DELAY`
Deprecated.
Do not use.
`static final String`
`PREF_MISSING_ENCODING_MARKER_SEVERITY`
Name of a preference for configuring the marker severity in case project does not specify its encoding.
`static final String`
`PREF_MISSING_NATURE_MARKER_SEVERITY`
Name of a preference for configuring the marker severity in case project description references an unknown nature.
`static final String`
`PREF_SEPARATE_DERIVED_ENCODINGS`
Name of a preference for configuring whether encodings for derived resources within the project should be stored in a separate derived preference file.
`static final String`
`PREF_SNAPSHOT_INTERVAL`
Name of a preference for configuring the amount of time in milliseconds between automatic workspace snapshots
`static final String`
`PT_BUILDERS`
Simple identifier constant (value `"builders"`) for the builders extension point.
`static final String`
`PT_FILE_MODIFICATION_VALIDATOR`
Simple identifier constant (value `"fileModificationValidator"`) for the file modification validator extension point.
`static final String`
`PT_FILTER_MATCHERS`
Simple identifier constant (value `"filterMatchers"`) for the filter matchers extension point.
`static final String`
`PT_MARKERS`
Simple identifier constant (value `"markers"`) for the markers extension point.
`static final String`
`PT_MODEL_PROVIDERS`
Simple identifier constant (value `"modelProviders"`) for the model providers extension point.
`static final String`
`PT_MOVE_DELETE_HOOK`
Simple identifier constant (value `"moveDeleteHook"`) for the move/delete hook extension point.
`static final String`
`PT_NATURES`
Simple identifier constant (value `"natures"`) for the natures extension point.
`static final String`
`PT_REFRESH_PROVIDERS`
Simple identifier constant (value `"refreshProviders"`) for the auto-refresh refresh providers extension point.
`static final String`
`PT_TEAM_HOOK`
Simple identifier constant (value `"teamHook"`) for the team hook extension point.
`static final String`
`PT_VARIABLE_PROVIDERS`
Simple identifier constant (value `"variableProviders"`) for the variable providers extension point.

### Fields inherited from class Plugin

`PLUGIN_PREFERENCE_SCOPE, PREFERENCES_DEFAULT_OVERRIDE_BASE_NAME, PREFERENCES_DEFAULT_OVERRIDE_FILE_NAME`

## Constructor Summary

Constructors
Constructor
Description
`ResourcesPlugin()`

## Method Summary

Modifier and Type
Method
Description
`static String`
`getEncoding()`
Returns the encoding to use when reading text files in the workspace.
`static ResourcesPlugin`
`getPlugin()`
Returns the Resources plug-in.
`static IWorkspace`
`getWorkspace()`
Returns the workspace.
`void`
`start(BundleContext context)`
This implementation of the corresponding `BundleActivator` method opens the workspace.
`void`
`stop(BundleContext context)`
This implementation of the corresponding `BundleActivator` method closes the workspace without saving.

### Methods inherited from class Plugin

`find, find, getBundle, getLog, getPluginPreferences, getStateLocation, initializeDefaultPluginPreferences, internalInitializeDefaultPluginPreferences, isDebugging, openStream, openStream, savePluginPreferences, setDebugging, shutdown, startup, toString`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### PI_RESOURCES

public static final String PI_RESOURCES
Unique identifier constant (value `"org.eclipse.core.resources"`) for the standard Resources plug-in.

See Also:
  - Constant Field Values

### PT_BUILDERS

public static final String PT_BUILDERS
Simple identifier constant (value `"builders"`) for the builders extension point.

See Also:
  - Constant Field Values

### PT_NATURES

public static final String PT_NATURES
Simple identifier constant (value `"natures"`) for the natures extension point.

See Also:
  - Constant Field Values

### PT_MARKERS

public static final String PT_MARKERS
Simple identifier constant (value `"markers"`) for the markers extension point.

See Also:
  - Constant Field Values

### PT_FILE_MODIFICATION_VALIDATOR

public static final String PT_FILE_MODIFICATION_VALIDATOR
Simple identifier constant (value `"fileModificationValidator"`) for the file modification validator extension point.

See Also:
  - Constant Field Values

### PT_MOVE_DELETE_HOOK

public static final String PT_MOVE_DELETE_HOOK
Simple identifier constant (value `"moveDeleteHook"`) for the move/delete hook extension point.

Since:
  2.0
See Also:
  - Constant Field Values

### PT_TEAM_HOOK

public static final String PT_TEAM_HOOK
Simple identifier constant (value `"teamHook"`) for the team hook extension point.

Since:
  2.1
See Also:
  - Constant Field Values

### PT_REFRESH_PROVIDERS

public static final String PT_REFRESH_PROVIDERS
Simple identifier constant (value `"refreshProviders"`) for the auto-refresh refresh providers extension point.

Since:
  3.0
See Also:
  - Constant Field Values

### PT_MODEL_PROVIDERS

public static final String PT_MODEL_PROVIDERS
Simple identifier constant (value `"modelProviders"`) for the model providers extension point.

Since:
  3.2
See Also:
  - Constant Field Values

### PT_VARIABLE_PROVIDERS

public static final String PT_VARIABLE_PROVIDERS
Simple identifier constant (value `"variableProviders"`) for the variable providers extension point.

Since:
  3.6
See Also:
  - Constant Field Values

### PT_FILTER_MATCHERS

public static final String PT_FILTER_MATCHERS
Simple identifier constant (value `"filterMatchers"`) for the filter matchers extension point.

Since:
  3.6
See Also:
  - Constant Field Values

### FAMILY_AUTO_BUILD

public static final Object FAMILY_AUTO_BUILD
Constant identifying the job family identifier for the background autobuild job.

Since:
  3.0
See Also:
  - `IJobManager.join(Object, IProgressMonitor)`

### FAMILY_AUTO_REFRESH

public static final Object FAMILY_AUTO_REFRESH
Constant identifying the job family identifier for the background auto-refresh job.

Since:
  3.1
See Also:
  - `IJobManager.join(Object, IProgressMonitor)`

### FAMILY_MANUAL_BUILD

public static final Object FAMILY_MANUAL_BUILD
Constant identifying the job family identifier for a background build job. All clients that schedule background jobs for performing builds should include this job family in their implementation of `belongsTo`.

Since:
  3.0
See Also:
  - `IJobManager.join(Object, IProgressMonitor)`
  - `Job.belongsTo(Object)`

### FAMILY_MANUAL_REFRESH

public static final Object FAMILY_MANUAL_REFRESH
Constant identifying the job family identifier for a background refresh job. All clients that schedule background jobs for performing refreshing should include this job family in their implementation of `belongsTo`.

Since:
  3.4
See Also:
  - `IJobManager.join(Object, IProgressMonitor)`
  - `Job.belongsTo(Object)`

### FAMILY_SNAPSHOT

public static final Object FAMILY_SNAPSHOT
Constant identifying the job family identifier for a background workspace snapshot job. All clients that schedule background jobs for performing background workspace snapshots should include this job family in their implementation of `belongsTo`.

Since:
  3.21
See Also:
  - `IJobManager.join(Object, IProgressMonitor)`
  - `Job.belongsTo(Object)`

### PREF_ENCODING

public static final String PREF_ENCODING
Name of a preference indicating the encoding to use when reading text files in the workspace. The value is a string, and may be the default empty string, indicating that the file system encoding should be used instead. The file system encoding can be retrieved using `System.getProperty("file.encoding")` before Java 18, and using `System.getProperty("native.encoding") with Java 18 and higher versions`. There is also a convenience method `getEncoding` which returns the value of this preference, or the file system encoding if this preference is not set.

Note that there is no guarantee that the value is a supported encoding. Callers should be prepared to handle `UnsupportedEncodingException` where this encoding is used.

See Also:
  - `getEncoding()`
  - `UnsupportedEncodingException`
  - Constant Field Values

### PREF_MAX_NOTIFICATION_DELAY

@Deprecated public static final String PREF_MAX_NOTIFICATION_DELAY
Deprecated.
Do not use.

Since:
  3.0
See Also:
  - Constant Field Values

### PREF_AUTO_BUILDING

public static final String PREF_AUTO_BUILDING
Name of a preference for configuring whether the workspace performs auto- builds.

Since:
  2.1
See Also:
  - `IWorkspaceDescription.isAutoBuilding()`
  - `IWorkspaceDescription.setAutoBuilding(boolean)`
  - Constant Field Values

### PREF_BUILD_ORDER

public static final String PREF_BUILD_ORDER
Name of a preference for configuring the order projects in the workspace are built.

Since:
  2.1
See Also:
  - `IWorkspaceDescription.getBuildOrder()`
  - `IWorkspaceDescription.setBuildOrder(String[])`
  - Constant Field Values

### PREF_DEFAULT_BUILD_ORDER

public static final String PREF_DEFAULT_BUILD_ORDER
Name of a preference for configuring whether to use the workspace's default order for building projects.

Since:
  2.1
See Also:
  - Constant Field Values

### PREF_MAX_BUILD_ITERATIONS

public static final String PREF_MAX_BUILD_ITERATIONS
Name of a preference for configuring the maximum number of times that the workspace should rebuild when builders affect projects that have already been built.

Since:
  2.1
See Also:
  - `IWorkspaceDescription.getMaxBuildIterations()`
  - `IWorkspaceDescription.setMaxBuildIterations(int)`
  - Constant Field Values

### PREF_APPLY_FILE_STATE_POLICY

public static final String PREF_APPLY_FILE_STATE_POLICY
Name of a preference for configuring whether to apply the specified history size policy.

Since:
  3.6
See Also:
  - `IWorkspaceDescription.isApplyFileStatePolicy()`
  - `IWorkspaceDescription.setApplyFileStatePolicy(boolean)`
  - Constant Field Values

### PREF_FILE_STATE_LONGEVITY

public static final String PREF_FILE_STATE_LONGEVITY
Name of a preference for configuring the maximum number of milliseconds a file state should be kept in the local history

Since:
  2.1
See Also:
  - `IWorkspaceDescription.getFileStateLongevity()`
  - `IWorkspaceDescription.setFileStateLongevity(long)`
  - Constant Field Values

### PREF_MAX_FILE_STATE_SIZE

public static final String PREF_MAX_FILE_STATE_SIZE
Name of a preference for configuring the maximum permitted size of a file to be stored in the local history

Since:
  2.1
See Also:
  - `IWorkspaceDescription.getMaxFileStateSize()`
  - `IWorkspaceDescription.setMaxFileStateSize(long)`
  - Constant Field Values

### PREF_KEEP_DERIVED_STATE

public static final String PREF_KEEP_DERIVED_STATE
Name of a preference for configuring whether derived files should be stored in the local history.

Since:
  3.15
See Also:
  - `IWorkspaceDescription.isKeepDerivedState()`
  - `IWorkspaceDescription.setKeepDerivedState(boolean)`
  - Constant Field Values

### PREF_MAX_FILE_STATES

public static final String PREF_MAX_FILE_STATES
Name of a preference for configuring the maximum number of states per file that can be stored in the local history.

Since:
  2.1
See Also:
  - `IWorkspaceDescription.getMaxFileStates()`
  - `IWorkspaceDescription.setMaxFileStates(int)`
  - Constant Field Values

### PREF_SNAPSHOT_INTERVAL

public static final String PREF_SNAPSHOT_INTERVAL
Name of a preference for configuring the amount of time in milliseconds between automatic workspace snapshots

Since:
  2.1
See Also:
  - `IWorkspaceDescription.getSnapshotInterval()`
  - `IWorkspaceDescription.setSnapshotInterval(long)`
  - Constant Field Values

### PREF_DISABLE_LINKING

public static final String PREF_DISABLE_LINKING
Name of a preference for turning off support for linked resources. When this preference is set to "true", attempting to create linked resources will fail.

Since:
  2.1
See Also:
  - Constant Field Values

### PREF_AUTO_REFRESH

public static final String PREF_AUTO_REFRESH
Name of a preference for configuring whether the workspace performs auto- refresh. Auto-refresh installs a file-system listener, or performs periodic file-system polling to actively discover changes in the resource hierarchy.

Since:
  3.0
See Also:
  - Constant Field Values

### PREF_LIGHTWEIGHT_AUTO_REFRESH

public static final String PREF_LIGHTWEIGHT_AUTO_REFRESH
Name of a preference for configuring whether out-of-sync resources are automatically asynchronously refreshed, when discovered to be out-of-sync by the workspace.

This preference suppresses out-of-sync CoreException for some read methods, including: `IFile.getContents()` & `IFile.getContentDescription()`.

In the future the workspace may enable other lightweight auto-refresh mechanisms when this preference is true. (The existing `PREF_AUTO_REFRESH` will continue to enable filesystem hooks and the existing polling based monitor.)

See the discussion: https://bugs.eclipse.org/303517

Since:
  3.7
See Also:
  - Constant Field Values

### PREF_SEPARATE_DERIVED_ENCODINGS

public static final String PREF_SEPARATE_DERIVED_ENCODINGS
Name of a preference for configuring whether encodings for derived resources within the project should be stored in a separate derived preference file.

Since:
  3.7
See Also:
  - Constant Field Values

### DEFAULT_PREF_SEPARATE_DERIVED_ENCODINGS

public static final boolean DEFAULT_PREF_SEPARATE_DERIVED_ENCODINGS
Default setting for "separateDerivedEncodings".

Since:
  3.9
See Also:
  - Constant Field Values

### PREF_MISSING_NATURE_MARKER_SEVERITY

public static final String PREF_MISSING_NATURE_MARKER_SEVERITY
Name of a preference for configuring the marker severity in case project description references an unknown nature.

Since:
  3.13
See Also:
  - Constant Field Values

### PREF_MISSING_ENCODING_MARKER_SEVERITY

public static final String PREF_MISSING_ENCODING_MARKER_SEVERITY
Name of a preference for configuring the marker severity in case project does not specify its encoding.

Supported severities are those from `IMarker` and also `-1` for "ignore".

Since:
  3.18
See Also:
  - Constant Field Values

### PREF_MAX_CONCURRENT_BUILDS

public static final String PREF_MAX_CONCURRENT_BUILDS
Name of the preference to set max number of concurrent jobs running the workspace build.

Since:
  3.13
See Also:
  - Constant Field Values

## Constructor Details

### ResourcesPlugin

public ResourcesPlugin()

## Method Details

### getEncoding

public static String getEncoding()
Returns the encoding to use when reading text files in the workspace. This is the value of the `PREF_ENCODING` preference. If the preference is not set, the workspace is not ready yet or any other condition where it could not be determined, returns native file system encoding, as specified by

- `System.getProperty("native.encoding")` on Java 18 and later
- `System.getProperty("sun.jnu.encoding")` on previous Java versions

Note that this method does not check whether the result is a supported encoding. Callers should be prepared to handle `UnsupportedEncodingException` where this encoding is used.

Hint: Using this method might return different results depending on the system state. Code that don't want to be affected from this ambiguities should do the following:

1. using any of your favorite techniques (Declarative Services, ServiceTracker, Blueprint, ...) to track the workspace
2. Calling workspace.getRoot().getDefaultCharset(false)
3. If `null` is returned take the appropriate action, e.g fall back to `Platform.getSystemCharset()`

Returns:
  the encoding to use when reading text files in the workspace
See Also:
  - `UnsupportedEncodingException`
  - `getSystemEncoding()`

### getPlugin

public static ResourcesPlugin getPlugin()
Returns the Resources plug-in.

Returns:
  the single instance of this plug-in runtime class

### getWorkspace

public static IWorkspace getWorkspace()
Returns the workspace. The workspace is not accessible after the resources plug-in has shutdown. Hint: Accessing the Workspace in a static way is prone to start-up order problem, please consider using any of your favorite techniques (Declarative Services, ServiceTracker, Blueprint, ...) instead. Please see the documentation of `IWorkspace` for more information.

Returns:
  the workspace that was created by the single instance of this plug-in class.

### stop

public void stop(BundleContext context) throws Exception
This implementation of the corresponding `BundleActivator` method closes the workspace without saving.

Specified by:
  `stop` in interface `BundleActivator`
Overrides:
  `stop` in class `Plugin`
Parameters:
  `context` - the bundle context for this plug-in
Throws:
  `Exception` - if this method fails to shut down this plug-in
See Also:
  - `BundleActivator.stop(BundleContext)`

### start

public void start(BundleContext context) throws Exception
This implementation of the corresponding `BundleActivator` method opens the workspace.

Specified by:
  `start` in interface `BundleActivator`
Overrides:
  `start` in class `Plugin`
Parameters:
  `context` - the bundle context for this plug-in
Throws:
  `Exception` - if this plug-in did not start up properly
See Also:
  - `BundleActivator.start(BundleContext)`