# 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
Constructor
Description
`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

Modifier and Type
Method
Description
`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 ResourceVariantTree

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

### Methods inherited from class AbstractResourceVariantTree

`collectedMembers, fetchMembers, fetchVariant, refresh, refresh`

### Methods inherited from class Object

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

## Constructor Details

### 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 Details

### 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