com.google.web.bindery.requestfactory.shared

## Class Locator<T,I>

- java.lang.Object
- - com.google.web.bindery.requestfactory.shared.Locator<T,I>

Type Parameters:
  `T` - the type of domain object the Locator will operate on
  `I` - the type of object the Locator expects to use as an id for the domain object

Direct Known Subclasses:
  ValueLocator

    public abstract class Locator<T,I>
    extends java.lang.Object

A Locator allows entity types that do not conform to the RequestFactory entity protocol to be used. Instead of attempting to use a `findFoo()`, `getId()`, and `getVersion()` declared in the domain entity type, an instance of a Locator will be created to provide implementations of these methods.

Locator subtypes must be default instantiable (i.e. public static types with a no-arg constructor). Instances of Locators may be retained and reused by the RequestFactory service layer.

See Also:
  `ProxyFor.locator()`

### Constructor Summary

Constructors
Constructor and Description
`Locator()`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract T` `create(java.lang.Class<? extends T> clazz)` Create a new instance of the requested type.
`abstract T` `find(java.lang.Class<? extends T> clazz, I id)` Retrieve an object.
`abstract java.lang.Class<T>` `getDomainType()` Returns the `T` type.
`abstract I` `getId(T domainObject)` Returns a domain object to be used as the id for the given object.
`abstract java.lang.Class<I>` `getIdType()` Returns the `I` type.
`abstract java.lang.Object` `getVersion(T domainObject)` Returns a domain object to be used as the version for the given object.
`boolean` `isLive(T domainObject)` Returns a value indicating if the domain object should no longer be considered accessible.

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

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

### Constructor Detail

#### Locator

    public Locator()

### Method Detail

#### create

    public abstract T create(java.lang.Class<? extends T> clazz)

Create a new instance of the requested type.

Parameters:
  `clazz` - the type of object to create
Returns:
  the new instance of the domain type

#### find

    public abstract T find(java.lang.Class<? extends T> clazz,
                           I id)

Retrieve an object. May return `null` to indicate that the requested object could not be found.

Parameters:
  `clazz` - the type of object to retrieve
  `id` - an id previously returned from `getId(Object)`
Returns:
  the requested object or `null` if it could not be found

#### getDomainType

    public abstract java.lang.Class<T> getDomainType()

Returns the `T` type.

#### getId

    public abstract I getId(T domainObject)

Returns a domain object to be used as the id for the given object. This method may return `null` if the object has not been persisted or should be treated as irretrievable.

Parameters:
  `domainObject` - the object to obtain an id for
Returns:
  the object's id or `null`

#### getIdType

    public abstract java.lang.Class<I> getIdType()

Returns the `I` type.

#### getVersion

    public abstract java.lang.Object getVersion(T domainObject)

Returns a domain object to be used as the version for the given object. This method may return `null` if the object has not been persisted or should be treated as irretrievable.

Parameters:
  `domainObject` - the object to obtain an id for
Returns:
  the object's version or `null`

#### isLive

    public boolean isLive(T domainObject)

Returns a value indicating if the domain object should no longer be considered accessible. This method might return false if the record underlying the domain object had been deleted as a side-effect of processing a request.

The default implementation of this method uses `getId(Object)` and `find(Class, Object)` to determine if an object can be retrieved.