Class LocatorServiceLayer


final class LocatorServiceLayer extends ServiceLayerDecorator
Adds support to the ServiceLayer chain for using Locator and ServiceLocator helper objects.
  • Constructor Details

    • LocatorServiceLayer

      LocatorServiceLayer()
  • Method Details

    • createDomainObject

      public <T> T createDomainObject(Class<T> clazz)
      Description copied from class: ServiceLayer
      Create an instance of the requested domain type.
      Overrides:
      createDomainObject in class ServiceLayerDecorator
      Type Parameters:
      T - the requested domain type
      Parameters:
      clazz - the requested domain type
      Returns:
      an instance of the requested domain type
    • createLocator

      public <T extends Locator<?, ?>> T createLocator(Class<T> clazz)
      Description copied from class: ServiceLayer
      Create an instance of the requested Locator type.
      Overrides:
      createLocator in class ServiceLayerDecorator
      Type Parameters:
      T - the requested Locator type
      Parameters:
      clazz - the requested Locator type
      Returns:
      an instance of the requested Locator type
    • createServiceInstance

      public Object createServiceInstance(Class<? extends RequestContext> requestContext)
      Description copied from class: ServiceLayer
      Create an instance of a service object that can be used as the target for the given method invocation.
      Overrides:
      createServiceInstance in class ServiceLayerDecorator
      Parameters:
      requestContext - the RequestContext type for which a service object must be instantiated.
      Returns:
      an instance of the requested service object
    • createServiceLocator

      public <T extends ServiceLocator> T createServiceLocator(Class<T> serviceLocatorType)
      Description copied from class: ServiceLayer
      Create an instance of the requested ServiceLocator type.
      Overrides:
      createServiceLocator in class ServiceLayerDecorator
      Type Parameters:
      T - the requested ServiceLocator type
      Parameters:
      serviceLocatorType - the requested ServiceLocator type
      Returns:
      an instance of the requested ServiceLocator type
    • getId

      public Object getId(Object domainObject)
      Description copied from class: ServiceLayer
      Return the persistent id for a domain object. May return null to indicate that the domain object has not been persisted. The value returned from this method must be a simple type (e.g. Integer, String) or a domain type for which a mapping to an EntityProxy or Value proxy exists.

      The values returned from this method may be passed to ServiceLayer.loadDomainObject(Class, Object) in the future.

      Overrides:
      getId in class ServiceLayerDecorator
      Parameters:
      domainObject - a domain object
      Returns:
      the persistent id of the domain object or null if the object is not persistent
    • getIdType

      public Class<?> getIdType(Class<?> domainType)
      Description copied from class: ServiceLayer
      Returns the type of object the domain type's findFoo() or Locator.getId() expects to receive.
      Overrides:
      getIdType in class ServiceLayerDecorator
      Parameters:
      domainType - a domain entity type
      Returns:
      the type of the persistent id value used to represent the domain type
    • getVersion

      public Object getVersion(Object domainObject)
      Description copied from class: ServiceLayer
      May return null to indicate that the domain object has not been persisted. The value returned from this method must be a simple type (e.g. Integer, String) or a domain type for which a mapping to an EntityProxy or Value proxy exists.
      Overrides:
      getVersion in class ServiceLayerDecorator
      Parameters:
      domainObject - a domain object
      Returns:
      the version of the domain object or null if the object is not persistent
    • isLive

      public boolean isLive(Object domainObject)
      Description copied from class: ServiceLayer
      Returns true if the given domain object is still live (i.e. not deleted) in the backing store.
      Overrides:
      isLive in class ServiceLayerDecorator
      Parameters:
      domainObject - a domain entity
      Returns:
      true if domainObject could be retrieved at a later point in time
    • loadDomainObject

      public <T> T loadDomainObject(Class<T> clazz, Object domainId)
      Description copied from class: ServiceLayer
      Load an object from the backing store. This method may return null to indicate that the requested object is no longer available.
      Overrides:
      loadDomainObject in class ServiceLayerDecorator
      Type Parameters:
      T - the type of object to load
      Parameters:
      clazz - the type of object to load
      domainId - an id previously returned from ServiceLayer.getId(Object)
      Returns:
      the requested object or null if it is irretrievable
    • requiresServiceLocator

      public boolean requiresServiceLocator(Method contextMethod, Method domainMethod)
      Returns true if the context method returns a Request and the domain method is non-static.
      Overrides:
      requiresServiceLocator in class ServiceLayerDecorator
      Parameters:
      contextMethod - a method defined in a RequestContext
      domainMethod - a domain method
      Returns:
      true if a ServiceLocator is required
    • resolveLocator

      public Class<? extends Locator<?,?>> resolveLocator(Class<?> domainType)
      Description copied from class: ServiceLayer
      Return the type of Locator that should be used to access the given domain type.
      Overrides:
      resolveLocator in class ServiceLayerDecorator
      Parameters:
      domainType - a domain (server-side) type
      Returns:
      the type of Locator to use, or null if the type conforms to the RequestFactory entity protocol
    • resolveServiceLocator

      public Class<? extends ServiceLocator> resolveServiceLocator(Class<? extends RequestContext> requestContext)
      Description copied from class: ServiceLayer
      Given a RequestContext method declaration, resolve the ServiceLocator that should be used when invoking the domain method. This method will only be called if ServiceLayer.requiresServiceLocator(Method, Method) returned true for the associated domain method.
      Overrides:
      resolveServiceLocator in class ServiceLayerDecorator
      Parameters:
      requestContext - the RequestContext for which a ServiceLocator must be located
      Returns:
      the type of ServiceLocator to use