Actually there is. I encontered the same problem with some Guice-
enhanced classes. You can write a custom decorator and override the
appropriate methods.
Here's my implementation - to get you started:
public class GuiceDecorator extends ServiceLayerDecorator {
@Override
public Class<? extends Locator<?, ?>> resolveLocator(Class<?>
domainType) {
if(domainType.getName().contains("Guice"))
return super.resolveLocator(domainType.getSuperclass());
return super.resolveLocator(domainType);
}
@Override
public <T> Class<? extends T> resolveClientType(Class<?> domainClass,
Class<T> clientType, boolean required) {
if(domainClass.getName().contains("Guice"))
return super.resolveClientType(domainClass.getSuperclass(),
clientType, required);
return super.resolveClientType(domainClass, clientType, required);
}
@Override
public <T extends Locator<?, ?>> T createLocator(Class<T> clazz) {
return GuiceConfig.getInjectorReference().getInstance(clazz);