Package org.eclipse.team.core.variants

## Class ThreeWayRemoteTree

- java.lang.Object
- - org.eclipse.team.core.variants.AbstractResourceVariantTree
  - - org.eclipse.team.core.variants.ResourceVariantTree
    - - org.eclipse.team.core.variants.ThreeWayRemoteTree

All Implemented Interfaces:
  `IResourceVariantTree`

    public abstract class ThreeWayRemoteTree
    extends ResourceVariantTree

A resource variant tree that caches and obtains its bytes from the remote slot in a three-way synchronizer. Clients must subclass to provide remote resource variant refresh functionality.

Since:
  3.0
See Also:
  `ThreeWaySubscriber`

### Constructor Summary

Constructors
`ThreeWayRemoteTree​(ThreeWaySubscriber subscriber)` Create a remote resource variant tree that stores and obtains it's bytes from the remote slot of the synchronizer of the given subscriber

### Method Summary

All Methods Instance Methods Concrete Methods
`protected IResource[]` `collectChanges​(IResource local, IResourceVariant remote, int depth, IProgressMonitor monitor)` Collect the changes in the remote tree to the specified depth.
`IResourceVariant` `getResourceVariant​(IResource resource)` Return the resource variant corresponding to the local resource.
`protected ThreeWaySubscriber` `getSubscriber()` Return the subscriber associated with this resource variant tree.
`IResource[]` `roots()` Returns the list of root resources for which this tree may have resource variants.

### Methods inherited from class org.eclipse.team.core.variants.ResourceVariantTree

`flushVariants, getBytes, getByteStore, hasResourceVariant, members, setVariant`

### Methods inherited from class org.eclipse.team.core.variants.AbstractResourceVariantTree

`collectedMembers, fetchMembers, fetchVariant, refresh, refresh`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ThreeWayRemoteTree

    public ThreeWayRemoteTree​(ThreeWaySubscriber subscriber)

Create a remote resource variant tree that stores and obtains it's bytes from the remote slot of the synchronizer of the given subscriber

Parameters:
  `subscriber` - a three-way subscriber

### Method Detail

#### roots

    public IResource[] roots()

Description copied from interface: `IResourceVariantTree`
Returns the list of root resources for which this tree may have resource variants.

Returns:
  the list of root resources.

#### getResourceVariant

    public IResourceVariant getResourceVariant​(IResource resource)
                                        throws TeamException

Description copied from interface: `IResourceVariantTree`
Return the resource variant corresponding to the local resource. Return `null` if there is no variant for the resource.

Parameters:
  `resource` - the local resource
Returns:
  the resource's variant in this tree
Throws:
  `TeamException` - if an error occurs

#### getSubscriber

    protected ThreeWaySubscriber getSubscriber()

Return the subscriber associated with this resource variant tree.

Returns:
  the subscriber associated with this resource variant tree

#### collectChanges

    protected IResource[] collectChanges​(IResource local,
                                         IResourceVariant remote,
                                         int depth,
                                         IProgressMonitor monitor)
                                  throws TeamException

Description copied from class: `AbstractResourceVariantTree`
Collect the changes in the remote tree to the specified depth.

Overrides:
  `collectChanges` in class `ResourceVariantTree`
Parameters:
  `local` - the local resource being refreshed
  `remote` - the corresponding resource variant
  `depth` - the depth of the refresh (one of `IResource.DEPTH_ZERO`, `IResource.DEPTH_ONE`, or `IResource.DEPTH_INFINITE`)
  `monitor` - a progress monitor
Returns:
  the resource's whose variants have changed
Throws:
  `TeamException` - if an error occurs