This package specifies the API for accessing and managing variants for local
workspace resources. The classes in this package can be used by Subscribers
(see the org.eclipse.team.core.subscribers package) or others. The classes are
roughly divided into three categories:
Access to Resource Variants
The following interfaces define the API required for subscribers to access and manage variants of local resources.
- IResourceVariant: provides access to information about a variant resource, such as it's name, its type (file or container) and its contents.
- IResourceVariantComparator: supports the comparison of a local resource with a variant or the comparison of two variants (if three-way comparison is supported).
- IResourceVariantTree: provides access to a tree of locally cached resource variants along with API to refresh the cached variants.
Implementing Resource Variants
Several classes are available that provide partial, extandable implementations of the above mentioned interfaces.
- CachedResourceVariant: an IResourceVariant implementation that supports the caching of the contents of the variant. Subclasses must override to provide fecthing of contents.
- AbstractResourceVariantTree: an IResourceVariantTree that contains logic
for performing a refresh of the cached resource variants. The caching mechanism
is delegated to subclasses as is the fetching of the resource variants.
- ResourceVariantTree: An AbstractResourceVariantTree that uses a ResourceVariantByteStore to cache the resource variants. Subclasses must still provide the fecthing of the remote state.
- ResourceVariantByteStore: An abstract class that defines the API required
for caching resource variants as byte arrays.
- PersistantResourceVariantByteStore: a ResourceVariantByteStore that persists the bytes accross workbench invocations.
- SessionResourceVariantByteStore: a ResourceVariantByteStore that caches the bytes in a session store and does not persist them.
This package also contains two partial subscriber implementations.
- ResourceVariantTreeSubscriber: a subscriber that makes use of IResourceVariantTree objects to provide the traversal and refresh of the base and remote trees.
- ThreeWaySubscriber: a ResourceVariantTreeSubscriber that is build on top
of the following classes.
- ThreeWaySynchronizer: a byte store that maintains the complete synchronization state (local, base and remote) required by a subscriber. It provides API to access and set the base and remote bytes corresponding to resource variants as well as change notification to registered ISynchronizerChangeListener instances.
- ThreeWayRemoteTree: A remote tree that uses the ThreeWaySynchronizer remote slot as its byte store. Subclasses of ResourceVariantTreeSubscriber must also subclass ThreeWayRemoteTree in order to provide the tree refresh behavior.
- ThreeWayResourceComparator: a IResourceVariantComparator that uses the state from a ThreeWaySynchronizer to compare local resources to their variants.
ClassDescriptionAn implementation of
IResourceVariantTreethat provides the logic for refreshing the tree and collecting the results so they can be cached locally.A resource variant is a partial implementation of a remote resource whose contents and handle are cached locally.This interface is used by
SyncInfoinstances to provide access to the base and remote resources that correspond to a local resource.An
IResourceVariantComparatoris provided by a
Subscriberand used by a
SyncInfoto calculate the sync state of the workspace resources.A handle that provides access to locally cached resource variants that represent a resource line-up such as a project version or branch.Listener that can receive notification from a
ThreeWaySynchronizerwhen the synchronization state of one or more resources has changed.A
ResourceVariantByteStorethat caches the variant bytes using the
org.eclipse.core.resources.ISynchronizerso that the tree is cached across workbench invocations.The purpose of a
ResourceVariantByteStoreis to support the caching of the synchronization bytes for the resource variants that represent a resource line-up of interest such as a version, baseline or branch.A specialization of Subscriber that uses
IResourceVariantTreeobjects to manage the base (for three-way) and remote trees.A
ResourceVariantByteStorethat caches the variant bytes in memory and does not persist them over workbench invocations.A resource variant tree that caches and obtains its bytes from the remote slot in a three-way synchronizer.A resource comparator that uses the
ThreeWaySynchronizerto compare local resources to their resource variants.A resource variant tree subscriber whose trees use an underlying
ThreeWaySynchronizerto store and manage the synchronization state for the local workspace.This class manages the synchronization between local resources and their corresponding resource variants.