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

Reply via email to