GWT 2.7.0

com.google.web.bindery.requestfactory.server
Class ServiceLayerCache

java.lang.Object
  extended by com.google.web.bindery.requestfactory.server.ServiceLayer
      extended by com.google.web.bindery.requestfactory.server.ServiceLayerDecorator
          extended by com.google.web.bindery.requestfactory.server.ServiceLayerCache

 class ServiceLayerCache
extends ServiceLayerDecorator

A cache for idempotent methods in ServiceLayer. The caching is separate from ReflectiveServiceLayer so that the cache can be applied to any decorators injected by the user.


Field Summary
 
Fields inherited from class com.google.web.bindery.requestfactory.server.ServiceLayerDecorator
next
 
Fields inherited from class com.google.web.bindery.requestfactory.server.ServiceLayer
top
 
Constructor Summary
ServiceLayerCache()
           
 
Method Summary
<T extends Locator<?,?>>
T
createLocator(java.lang.Class<T> clazz)
          Create an instance of the requested Locator type.
 java.lang.Object createServiceInstance(java.lang.Class<? extends RequestContext> requestContext)
          Create an instance of a service object that can be used as the target for the given method invocation.
 java.lang.ClassLoader getDomainClassLoader()
          Returns the ClassLoader that should be used when attempting to access domain classes or resources.
 java.lang.reflect.Method getGetter(java.lang.Class<?> domainType, java.lang.String property)
          Determine the method to invoke when retrieving the given property.
 java.lang.Class<?> getIdType(java.lang.Class<?> domainType)
          Returns the type of object the domain type's findFoo() or Locator.getId() expects to receive.
 java.lang.reflect.Type getRequestReturnType(java.lang.reflect.Method contextMethod)
          Compute the return type for a method declared in a RequestContext by analyzing the generic method declaration.
 java.lang.reflect.Method getSetter(java.lang.Class<?> domainType, java.lang.String property)
          Determine the method to invoke when setting the given property.
 boolean requiresServiceLocator(java.lang.reflect.Method contextMethod, java.lang.reflect.Method domainMethod)
          Determines if the invocation of a domain method requires a ServiceLocator as the 0th parameter when passed into ServiceLayer.invoke(Method, Object...).
 java.lang.Class<? extends BaseProxy> resolveClass(java.lang.String typeToken)
          Given a type token previously returned from ServiceLayer.resolveTypeToken(Class), return the Class literal associated with the token.
<T> java.lang.Class<? extends T>
resolveClientType(java.lang.Class<?> domainClass, java.lang.Class<T> clientType, boolean required)
          Determine the type used by the client code to represent a given domain type.
 java.lang.Class<?> resolveDomainClass(java.lang.Class<?> clazz)
          Determine the domain (server-side) type that the given client type is mapped to.
 java.lang.reflect.Method resolveDomainMethod(java.lang.String operation)
          Return the domain service method associated with a RequestContext method declaration.
 java.lang.Class<? extends Locator<?,?>> resolveLocator(java.lang.Class<?> domainType)
          Return the type of Locator that should be used to access the given domain type.
 java.lang.Class<? extends RequestContext> resolveRequestContext(java.lang.String operation)
          Find a RequestContext that should be used to fulfill the requested operation.
 java.lang.reflect.Method resolveRequestContextMethod(java.lang.String operation)
          Find a RequestContext method declaration by name.
 java.lang.Class<? extends RequestFactory> resolveRequestFactory(java.lang.String binaryName)
          Loads and validates a RequestFactory interface.
 java.lang.Class<?> resolveServiceClass(java.lang.Class<? extends RequestContext> requestContextClass)
          Given a RequestContext method, find the service class referenced in the Service or ServiceName annotation.
 java.lang.Class<? extends ServiceLocator> resolveServiceLocator(java.lang.Class<? extends RequestContext> requestContext)
          Given a RequestContext method declaration, resolve the ServiceLocator that should be used when invoking the domain method.
 java.lang.String resolveTypeToken(java.lang.Class<? extends BaseProxy> domainClass)
          Return a string used to represent the given type in the wire protocol.
 
Methods inherited from class com.google.web.bindery.requestfactory.server.ServiceLayerDecorator
createDomainObject, createServiceLocator, die, getId, getNext, getProperty, getTop, getVersion, invoke, isLive, loadDomainObject, loadDomainObjects, report, report, setProperty, validate
 
Methods inherited from class com.google.web.bindery.requestfactory.server.ServiceLayer
create
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ServiceLayerCache

ServiceLayerCache()
Method Detail

createLocator

public <T extends Locator<?,?>> T createLocator(java.lang.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 java.lang.Object createServiceInstance(java.lang.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

getDomainClassLoader

public java.lang.ClassLoader getDomainClassLoader()
Description copied from class: ServiceLayer
Returns the ClassLoader that should be used when attempting to access domain classes or resources.

The default implementation returns Thread.currentThread().getContextClassLoader().

Overrides:
getDomainClassLoader in class ServiceLayerDecorator

getGetter

public java.lang.reflect.Method getGetter(java.lang.Class<?> domainType,
                                          java.lang.String property)
Description copied from class: ServiceLayer
Determine the method to invoke when retrieving the given property.

Overrides:
getGetter in class ServiceLayerDecorator
Parameters:
domainType - a domain entity type
property - the name of the property to be retrieved
Returns:
the Method that should be invoked to retrieve the property or null if the method could not be located

getIdType

public java.lang.Class<?> getIdType(java.lang.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

getRequestReturnType

public java.lang.reflect.Type getRequestReturnType(java.lang.reflect.Method contextMethod)
Description copied from class: ServiceLayer
Compute the return type for a method declared in a RequestContext by analyzing the generic method declaration.

Overrides:
getRequestReturnType in class ServiceLayerDecorator

getSetter

public java.lang.reflect.Method getSetter(java.lang.Class<?> domainType,
                                          java.lang.String property)
Description copied from class: ServiceLayer
Determine the method to invoke when setting the given property.

Overrides:
getSetter in class ServiceLayerDecorator
Parameters:
domainType - a domain entity type
property - the name of the property to be set
Returns:
the Method that should be invoked to set the property or null if the method could not be located

requiresServiceLocator

public boolean requiresServiceLocator(java.lang.reflect.Method contextMethod,
                                      java.lang.reflect.Method domainMethod)
Description copied from class: ServiceLayer
Determines if the invocation of a domain method requires a ServiceLocator as the 0th parameter when passed into ServiceLayer.invoke(Method, Object...).

Overrides:
requiresServiceLocator in class ServiceLayerDecorator
Parameters:
contextMethod - a method defined in a RequestContext
domainMethod - a domain method
Returns:
true if a ServiceLocator is required

resolveClass

public java.lang.Class<? extends BaseProxy> resolveClass(java.lang.String typeToken)
Description copied from class: ServiceLayer
Given a type token previously returned from ServiceLayer.resolveTypeToken(Class), return the Class literal associated with the token.

Overrides:
resolveClass in class ServiceLayerDecorator
Parameters:
typeToken - a string token
Returns:
the type represented by the token

resolveClientType

public <T> java.lang.Class<? extends T> resolveClientType(java.lang.Class<?> domainClass,
                                                          java.lang.Class<T> clientType,
                                                          boolean required)
Description copied from class: ServiceLayer
Determine the type used by the client code to represent a given domain type. If multiple proxy types have been mapped to the same domain type, the clientType parameter is used to ensure assignability.

Overrides:
resolveClientType in class ServiceLayerDecorator
Parameters:
domainClass - the server-side type to be transported to the client
clientType - the type to which the returned type must be assignable
required - if true and no mapping is available, throw an exception, otherwise the method will return null
Returns:
a class that represents domainClass on the client which is assignable to clientType

resolveDomainClass

public java.lang.Class<?> resolveDomainClass(java.lang.Class<?> clazz)
Description copied from class: ServiceLayer
Determine the domain (server-side) type that the given client type is mapped to.

Overrides:
resolveDomainClass in class ServiceLayerDecorator
Parameters:
clazz - a client-side type
Returns:
the domain type that clientType represents

resolveDomainMethod

public java.lang.reflect.Method resolveDomainMethod(java.lang.String operation)
Description copied from class: ServiceLayer
Return the domain service method associated with a RequestContext method declaration. The requestContextMethod will have been previously resolved by #resolveRequestContextMethod(String, String).

Overrides:
resolveDomainMethod in class ServiceLayerDecorator
Returns:
the domain service method that should be invoked

resolveLocator

public java.lang.Class<? extends Locator<?,?>> resolveLocator(java.lang.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

resolveRequestContext

public java.lang.Class<? extends RequestContext> resolveRequestContext(java.lang.String operation)
Description copied from class: ServiceLayer
Find a RequestContext that should be used to fulfill the requested operation.

Overrides:
resolveRequestContext in class ServiceLayerDecorator
Parameters:
operation - the operation
Returns:
the RequestContext or null if no RequestContext exists that can fulfill the operation

resolveRequestContextMethod

public java.lang.reflect.Method resolveRequestContextMethod(java.lang.String operation)
Description copied from class: ServiceLayer
Find a RequestContext method declaration by name.

Overrides:
resolveRequestContextMethod in class ServiceLayerDecorator
Parameters:
operation - the operation's name
Returns:
the method declaration, or null if the method does not exist

resolveRequestFactory

public java.lang.Class<? extends RequestFactory> resolveRequestFactory(java.lang.String binaryName)
Description copied from class: ServiceLayer
Loads and validates a RequestFactory interface.

Overrides:
resolveRequestFactory in class ServiceLayerDecorator
Parameters:
binaryName - the RequestFactory's type token (usually the type's binary name)
Returns:
the RequestFactory type

resolveServiceClass

public java.lang.Class<?> resolveServiceClass(java.lang.Class<? extends RequestContext> requestContextClass)
Description copied from class: ServiceLayer
Given a RequestContext method, find the service class referenced in the Service or ServiceName annotation.

Overrides:
resolveServiceClass in class ServiceLayerDecorator
Parameters:
requestContextClass - a RequestContext interface
Returns:
the type of service to use

resolveServiceLocator

public java.lang.Class<? extends ServiceLocator> resolveServiceLocator(java.lang.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

resolveTypeToken

public java.lang.String resolveTypeToken(java.lang.Class<? extends BaseProxy> domainClass)
Description copied from class: ServiceLayer
Return a string used to represent the given type in the wire protocol.

Overrides:
resolveTypeToken in class ServiceLayerDecorator
Parameters:
domainClass - a client-side EntityProxy or ValueProxy type
Returns:
the type token used to represent the proxy type

GWT 2.7.0