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

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