Eclipse Platform
Release 3.1

org.eclipse.team.core.variants
Class ThreeWaySubscriber

java.lang.Object
  extended byorg.eclipse.team.core.subscribers.Subscriber
      extended byorg.eclipse.team.core.variants.ResourceVariantTreeSubscriber
          extended byorg.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 ThreeWaySycnrhonizer 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:
ThreeWaySynchronizer, ThreeWayRemoteTree, CachedResourceVariant

Constructor Summary
protected ThreeWaySubscriber(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
protected abstract  ThreeWayRemoteTree createRemoteTree()
          Create the three-way remote tree which provides access to the remote bytes in the three-way synchronizer.
protected  IResourceVariantTree getBaseTree()
          Return the base resource variant tree.
protected  IResourceVariantTree getRemoteTree()
          Return the remote resource variant tree.
 IResourceVariantComparator getResourceComparator()
          Returns the comparison criteria that will be used by the sync info created by this subscriber.
abstract  IResourceVariant getResourceVariant(IResource resource, byte[] bytes)
          Create the resource variant for the given local resource from the given bytes.
 ThreeWaySynchronizer getSynchronizer()
          Return the three-way synchronizer of this subscriber.
protected  void handleRootChanged(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.
 boolean isSupervised(IResource resource)
          Returns false for resources that are not children of a subscriber root, are ignored by the subscriber's synchronizer or are ignored by the Team.ignoreHist(IResource).
 void syncStateChanged(IResource[] resources)
          Notification of synchronization state changes for the given resources.
 
Methods inherited from class org.eclipse.team.core.variants.ResourceVariantTreeSubscriber
getSyncInfo, getSyncInfo, members, refresh
 
Methods inherited from class org.eclipse.team.core.subscribers.Subscriber
addListener, collectOutOfSync, fireTeamResourceChange, getName, removeListener, roots
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ThreeWaySubscriber

protected ThreeWaySubscriber(ThreeWaySynchronizer synchronizer)
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 Detail

getBaseTree

protected final IResourceVariantTree getBaseTree()
Description copied from class: ResourceVariantTreeSubscriber
Return the base resource variant tree.

Specified by:
getBaseTree in class ResourceVariantTreeSubscriber

getRemoteTree

protected final IResourceVariantTree getRemoteTree()
Description copied from class: ResourceVariantTreeSubscriber
Return the remote resource variant tree.

Specified by:
getRemoteTree in class ResourceVariantTreeSubscriber

getResourceComparator

public final IResourceVariantComparator getResourceComparator()
Description copied from class: Subscriber
Returns the comparison criteria that will be used by the sync info created by this subscriber.

Specified by:
getResourceComparator in class Subscriber
Returns:
the comparator to use when computing sync states for this subscriber.

syncStateChanged

public void syncStateChanged(IResource[] resources)
Description copied from interface: ISynchronizerChangeListener
Notification of synchronization state changes for the given resources. Clients must query the ThreeWaySynchronizer that generated this event to determine the new synchronization state.

Specified by:
syncStateChanged in interface ISynchronizerChangeListener
Parameters:
resources - the resources whose synchronization state has changed

isSupervised

public boolean isSupervised(IResource resource)
                     throws TeamException
Returns false for resources that are not children of a subscriber root, are ignored by the subscriber's synchronizer or are ignored by the Team.ignoreHist(IResource). Returns true otherwise.

Specified by:
isSupervised in class Subscriber
Returns:
true if this resource is supervised, and false otherwise
Throws:
TeamException
See Also:
Subscriber.isSupervised(IResource)

getSynchronizer

public ThreeWaySynchronizer 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 to IResourceVariant#asBytes().

Parameters:
resource - the local resource
bytes - the bytes that identify a variant of the resource
Returns:
the resource variant handle recreated from the bytes
Throws:
TeamException

createRemoteTree

protected abstract ThreeWayRemoteTree 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

protected void handleRootChanged(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. The added parameter should be true if the root was added and false if it was removed.

Parameters:
resource - the added or removed root
added - true if the root was added and false if it was removed.

Eclipse Platform
Release 3.1

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2005. All rights reserved.