# Package org.eclipse.team.core.subscribers

Application programming interfaces for generating and refreshing synchronization state.

## Package Specification

This package specifies the API for Team subscribers. A Subscriber provides access to the synchronization state between the local workspace resources and a set of variants of those resources, whether it be a code repository or some other type of server (e.g. FTP). A subscriber is typically associated with only a subset of the resources in the local workspace, referred to as the set of resources the subscriber supervises. The supervised local resources have a corresponding variant state which describes the state of the remote resources that correspond to the local resources.

A Subscriber provides:

- a set of root resources that define the subset of resources in the workspace that the subscriber supervises (some children of the roots may not be supervised, as indicated by the isSupervised method).
- access to the synchronization state (using SyncInfo) between the resources it supervises and their corresponding variant resources.
- the ability to refresh the the remote state
- change notification to registered listeners (of type ISubscriberChangeListener) when the variant state changes or when roots are added or removed.

### Implementing a Subscriber

An implementation of a subscriber must provide:

- a subclass of Subcriber which maintains the synchronization state between its local resources and their corresponding variants.
- an implemenation of org.eclipse.team.core.variants.IResourceVariant which provides access to the contents and other state of a variant resource that corresponds to a local resource
- an implementation of org.eclipse.team.core.variants.IResourceVariantComparator which is used by org.eclipse.team.core.synchronize.SyncInfo to determine the synchronization state of a resource.

Optionally, a subscriber may provide a subclass of org.eclipse.team.core.synchronize.SyncInfo in order to customize the algorithm used to determine the synchronization state of a resource.

Interface Summary
ISubscriberChangeEvent: A change event that describes a change in a resource that is or was supervised by a subscriber.
ISubscriberChangeListener: A subscriber change listener is notified of changes to resources regarding their subscriber synchronization state.

Class Summary
Subscriber: A Subscriber provides synchronization between local resources and a remote location that is used to share those resources.
SubscriberChangeEvent: A concrete implementation of `ISubscriberChangeEvent` that can be used by clients.
SubscriberMergeContext: A merge context that uses a subscriber to populate the diff tree used by the context.
SubscriberResourceMappingContext: A resource mapping context that provides the client access to the remote state of local resources using a subscriber.
SubscriberScopeManager: A `ISynchronizationScopeManager` that uses a `Subscriber` to provide a `RemoteResourceMappingContext` and to notify participants when the remote state of resources change.