A workspace corresponds closely to discreet areas in the local file system. Each project in a workspace maps onto a specific area of the file system. The folders and files within a project map directly onto the corresponding directories and files in the file system. One sub-directory, the workspace metadata area, contains internal information about the workspace and its resources. This metadata area should be accessed only by the Platform or via Platform API calls.
Workspaces add value over using the file system directly in that they allow for comprehensive change tracking (through IResourceDelta
s), various forms of resource metadata (e.g., markers and properties) as well as support for managing application/tool state (e.g., saving and restoring).
The workspace as a whole is thread safe and allows one writer concurrent with multiple readers. It also supports mechanisms for saving and snapshooting the current resource state.
The workspace is provided by the Resources plug-in and is automatically created when that plug-in is activated. The default workspace data area (i.e., where its resources are stored) overlap exactly with the platform's data area. That is, by default, the workspace's projects are found directly in the platform's data area. Individual project locations can be specified explicitly.
The workspace resource namespace is always case-sensitive and case-preserving. Thus the workspace allows multiple sibling resources to exist with names that differ only in case. The workspace also imposes no restrictions on valid characters in resource names, the length of resource names, or the size of resources on disk. In situations where one or more resources are stored in a file system that is not case-sensitive, or that imposes restrictions on resource names, any failure to store or retrieve those resources will be propagated back to the caller of workspace API.
This interface is not intended to be implemented by clients.
Workspaces implement the IAdaptable
interface; extensions are managed by the platform's adapter manager.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|