jtulach@26: package api; jtulach@26: jtulach@210: import java.util.ArrayList; jtulach@26: import java.util.Collection; jtulach@210: import java.util.HashSet; jtulach@210: import java.util.List; 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 1.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: public T lookup(Class clazz) { jtulach@210: for (Object obj : instances) { jtulach@210: if (clazz.isInstance(obj)) { jtulach@210: return clazz.cast(obj); jtulach@210: } jtulach@210: } jtulach@210: return null; jtulach@210: } jtulach@210: jtulach@210: @Override jtulach@210: public Collection lookupAll(Class clazz) { jtulach@210: List 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; jtulach@210: } jtulach@210: jtulach@210: @Override jtulach@210: public Set> lookupAllClasses(Class clazz) { jtulach@210: Set> result = new HashSet>(); jtulach@210: for (Object obj : instances) { jtulach@210: if (clazz.isInstance(obj)) { jtulach@210: result.add(obj.getClass().asSubclass(clazz)); jtulach@210: } jtulach@210: } jtulach@210: return result; jtulach@210: } jtulach@210: }; jtulach@26: } jtulach@26: }