jtulach@26: package api; jtulach@26: jtulach@210: import java.util.ArrayList; jtulach@26: import java.util.Collection; jtulach@210: import java.util.Iterator; jtulach@26: import java.util.Set; jtulach@26: jtulach@26: /** Factory to create various types of lookup instances. jtulach@26: * jtulach@26: * @author Jaroslav Tulach jtulach@26: * @version 2.0 jtulach@26: */ jtulach@26: public final class Lookups { jtulach@26: private Lookups() { jtulach@26: } jtulach@26: jtulach@210: public static Lookup fixed(final Object... instances) { jtulach@210: return new Lookup() { jtulach@210: @Override jtulach@210: Iterator doLookup(Class clazz) { jtulach@210: ArrayList result = new ArrayList(); jtulach@210: for (Object obj : instances) { jtulach@210: if (clazz.isInstance(obj)) { jtulach@210: result.add(clazz.cast(obj)); jtulach@210: } jtulach@210: } jtulach@210: return result.iterator(); jtulach@210: } jtulach@210: }; jtulach@26: } jtulach@26: jtulach@210: public static Lookup dynamic(final Dynamic provider) { jtulach@210: return new Lookup() { jtulach@210: @Override jtulach@210: Iterator doLookup(Class clazz) { jtulach@210: ArrayList result = new ArrayList(); jtulach@210: provider.computeInstances(clazz, result); jtulach@210: return result.iterator(); jtulach@210: } jtulach@210: }; jtulach@26: } jtulach@26: jtulach@26: public interface Dynamic { jtulach@26: public void computeInstances(Class requestedType, Collection addInstancesTo); jtulach@26: } jtulach@26: }