Package org.eclipse.team.core.variants
Class ThreeWaySubscriber
java.lang.Object
org.eclipse.team.core.subscribers.Subscriber
org.eclipse.team.core.variants.ResourceVariantTreeSubscriber
org.eclipse.team.core.variants.ThreeWaySubscriber
- All Implemented Interfaces:
ISynchronizerChangeListener
public abstract class ThreeWaySubscriber
extends ResourceVariantTreeSubscriber
implements ISynchronizerChangeListener
A resource variant tree subscriber whose trees use an underlying
ThreeWaySynchronizer to store and manage the
synchronization state for the local workspace. Subclasses need to
provide a subclass of ThreeWayRemoteTree and a method
to create resource variant handles from the bytes cached in the
ThreeWaySynchronizer.- Since:
- 3.0
- See Also:
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedThreeWaySubscriber(ThreeWaySynchronizer synchronizer) Create a three-way subscriber that uses the given synchronizer to manage the synchronization state of local resources and their variants -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ThreeWayRemoteTreeCreate the three-way remote tree which provides access to the remote bytes in the three-way synchronizer.protected final IResourceVariantTreeReturn the base resource variant tree.protected final IResourceVariantTreeReturn the remote resource variant tree.Returns the comparison criteria that will be used by the sync info created by this subscriber.abstract IResourceVariantgetResourceVariant(IResource resource, byte[] bytes) Create the resource variant for the given local resource from the given bytes.Return the three-way synchronizer of this subscriber.protected voidhandleRootChanged(IResource resource, boolean added) Convenience method that can be used by subclasses to notify listeners when a root is added or removed from the subscriber.booleanisSupervised(IResource resource) Returnsfalsefor resources that are not children of a subscriber root, are ignored by the subscriber's synchronizer or are ignored by theTeam.ignoreHist(IResource).voidsyncStateChanged(IResource[] resources) Notification of synchronization state changes for the given resources.Methods inherited from class org.eclipse.team.core.variants.ResourceVariantTreeSubscriber
getSyncInfo, getSyncInfo, members, refreshMethods inherited from class org.eclipse.team.core.subscribers.Subscriber
accept, accept, addListener, collectOutOfSync, fireTeamResourceChange, getDiff, getName, getState, refresh, removeListener, roots
-
Constructor Details
-
ThreeWaySubscriber
Create a three-way subscriber that uses the given synchronizer to manage the synchronization state of local resources and their variants- Parameters:
synchronizer- the three-way synchronizer for this subscriber
-
-
Method Details
-
getBaseTree
Description copied from class:ResourceVariantTreeSubscriberReturn the base resource variant tree.- Specified by:
getBaseTreein classResourceVariantTreeSubscriber
-
getRemoteTree
Description copied from class:ResourceVariantTreeSubscriberReturn the remote resource variant tree.- Specified by:
getRemoteTreein classResourceVariantTreeSubscriber
-
getResourceComparator
Description copied from class:SubscriberReturns the comparison criteria that will be used by the sync info created by this subscriber.- Specified by:
getResourceComparatorin classSubscriber- Returns:
- the comparator to use when computing sync states for this subscriber.
-
syncStateChanged
Description copied from interface:ISynchronizerChangeListenerNotification of synchronization state changes for the given resources. Clients must query theThreeWaySynchronizerthat generated this event to determine the new synchronization state.- Specified by:
syncStateChangedin interfaceISynchronizerChangeListener- Parameters:
resources- the resources whose synchronization state has changed
-
isSupervised
Returnsfalsefor resources that are not children of a subscriber root, are ignored by the subscriber's synchronizer or are ignored by theTeam.ignoreHist(IResource). Returnstrueotherwise.- Specified by:
isSupervisedin classSubscriber- Parameters:
resource- the resource being tested- Returns:
trueif this resource is supervised, andfalseotherwise- Throws:
TeamException- if an error occurs- See Also:
-
getSynchronizer
Return the three-way synchronizer of this subscriber.- Returns:
- the three-way synchronizer of this subscriber.
-
getResourceVariant
public abstract IResourceVariant getResourceVariant(IResource resource, byte[] bytes) throws TeamException Create the resource variant for the given local resource from the given bytes. The bytes are those that were previously returned from a call toIResourceVariant#asBytes().- Parameters:
resource- the local resourcebytes- the bytes that identify a variant of the resource- Returns:
- the resource variant handle recreated from the bytes
- Throws:
TeamException- if an error occurs
-
createRemoteTree
Create the three-way remote tree which provides access to the remote bytes in the three-way synchronizer. This method is invoked once when the remote tree is first accessed. The returned object is cached and reused on subsequent accesses.- Returns:
- the remote tree
-
handleRootChanged
Convenience method that can be used by subclasses to notify listeners when a root is added or removed from the subscriber. The added parameter should betrueif the root was added andfalseif it was removed.- Parameters:
resource- the added or removed rootadded-trueif the root was added andfalseif it was removed.
-