Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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 `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 resoures 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 sychronizer 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 resoures 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 sychronizer of this subscriber.

  Returns:
    the three-way sychronizer 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 resouce 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.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Guidelines for using Eclipse APIs.

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