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.