@Override @SuppressWarnings("unchecked") public Class<? extends Locator<?, ?>> resolveLocator(Class<?> domainType) { return getOrCache(resolveLocator, domainType, Class.class, domainType); }
@Override public Type getRequestReturnType(Method contextMethod) { return getOrCache(getRequestReturnType, contextMethod, Type.class, contextMethod); }
@Override public <T extends Locator<?, ?>> T createLocator(Class<T> clazz) { return getOrCache(createLocator, clazz, clazz, clazz); }
@Override public Class<?> resolveDomainClass(Class<?> clazz) { return getOrCache(resolveDomainClass, clazz, Class.class, clazz); }
@Override public Method resolveRequestContextMethod(String operation) { return getOrCache(resolveRequestContextMethod, operation, Method.class, operation); }
@Override public Class<?> resolveServiceClass(Class<? extends RequestContext> requestContextClass) { return getOrCache(resolveServiceClass, requestContextClass, Class.class, requestContextClass); }
@Override public String resolveTypeToken(Class<? extends BaseProxy> domainClass) { return getOrCache(resolveTypeToken, domainClass, String.class, domainClass); }
@Override public ClassLoader getDomainClassLoader() { return getOrCache(getDomainClassLoader, NULL_MARKER, ClassLoader.class); }
@Override public Method resolveDomainMethod(String operation) { return getOrCache(resolveDomainMethod, operation, Method.class, operation); }
@Override public Object createServiceInstance(Class<? extends RequestContext> requestContext) { return getOrCache(createServiceInstance, requestContext, Object.class, requestContext); }
@Override public Class<?> getIdType(Class<?> domainType) { return getOrCache(getIdType, domainType, Class.class, domainType); }
@Override public Class<? extends RequestContext> resolveRequestContext(String operation) { Class<?> clazz = getOrCache(resolveRequestContext, operation, Class.class, operation); return clazz.asSubclass(RequestContext.class); }
@Override public Class<? extends RequestFactory> resolveRequestFactory(String binaryName) { Class<?> clazz = getOrCache(resolveRequestFactory, binaryName, Class.class, binaryName); return clazz.asSubclass(RequestFactory.class); }
@Override public Class<? extends ServiceLocator> resolveServiceLocator( Class<? extends RequestContext> requestContext) { Class<?> clazz = getOrCache(resolveServiceLocator, requestContext, Class.class, requestContext); return clazz == null ? null : clazz.asSubclass(ServiceLocator.class); }
@Override public Class<? extends BaseProxy> resolveClass(String typeToken) { Class<?> found = getOrCache(resolveClass, typeToken, Class.class, typeToken); return found.asSubclass(BaseProxy.class); }
@Override public <T> Class<? extends T> resolveClientType(Class<?> domainClass, Class<T> clientType, boolean required) { Class<?> clazz = getOrCache(resolveClientType, new Pair<Class<?>, Class<?>>(domainClass, clientType), Class.class, domainClass, clientType, required); return clazz == null ? null : clazz.asSubclass(clientType); }
@Override public Method getGetter(Class<?> domainType, String property) { return getOrCache(getGetter, new Pair<Class<?>, String>(domainType, property), Method.class, domainType, property); }
@Override public Method getSetter(Class<?> domainType, String property) { return getOrCache(getSetter, new Pair<Class<?>, String>(domainType, property), Method.class, domainType, property); }
@Override public boolean requiresServiceLocator(Method contextMethod, Method domainMethod) { return getOrCache(requiresServiceLocator, new Pair<Method, Method>(contextMethod, domainMethod), Boolean.class, contextMethod, domainMethod); }
@Override public Class<? extends ServiceLocator> resolveServiceLocator( Class<? extends RequestContext> requestContext) { Class<?> clazz = getOrCache(resolveServiceLocator, requestContext, Class.class, requestContext); return clazz == null ? null : clazz.asSubclass(ServiceLocator.class); }