Adam Heath wrote:
Adrian Crum wrote:
So, the code:
GenericDelegator delegator = GenericDelegator.getGenericDelegator(String
delegatorName);
would be replaced with something like:
DelegatorFactory factory = (DelegatorFactory)
UtilObject.getServiceProviderByClass(DelegatorFactory.class);
DelegatorInterface delegator = DelegatorFactory
.getGenericDelegator(String delegatorName);
==
public interface Factory<T> {
T getInstance(String name);
}
public interface GenericDelegatorFactory implements
Factory<GenericDelegator> {
}
public class GenericDelegatorFactoryImpl implements
GenericDelegatorFactory {
public GenericDelegator getInstance(String name) {
}
}
public class UtilObject {
public static <T> T getImplementation(Factory<T> factory, String name) {
Iterator<Factory<T>> it =
ServiceRegistry.lookupProviders(factory,
loader);
while (it.hasNext()) {
Factory<T> factory = it.next();
T instance = factory.getInstance(name);
if (instance != null) return instance;
}
throw GeneralException("foo");
}
}
GenericDelegator delegator =
UtilObject.getImplementation(GenericDelegatorFactory.class, name);
src/META-INF/services/org.ofbiz.entity.GenericDelegatorFactory:
org.ofbiz.entity.GenericDelegatorFactoryImpl
==
The above is completely untested.
Cool - thanks!
-Adrian