samples/consistency/src-api1.0/api/Lookups.java
changeset 210 acf2c31e22d4
parent 209 1c999569643b
     1.1 --- a/samples/consistency/src-api1.0/api/Lookups.java	Sat Jun 14 10:04:51 2008 +0200
     1.2 +++ b/samples/consistency/src-api1.0/api/Lookups.java	Sat Jun 14 10:04:53 2008 +0200
     1.3 @@ -1,6 +1,9 @@
     1.4  package api;
     1.5  
     1.6 +import java.util.ArrayList;
     1.7  import java.util.Collection;
     1.8 +import java.util.HashSet;
     1.9 +import java.util.List;
    1.10  import java.util.Set;
    1.11  
    1.12  /** Factory to create various types of lookup instances.
    1.13 @@ -12,7 +15,39 @@
    1.14      private Lookups() {
    1.15      }
    1.16      
    1.17 -    public static Lookup fixed(Object... instances) {
    1.18 -        return null;
    1.19 +    public static Lookup fixed(final Object... instances) {
    1.20 +        return new Lookup() {
    1.21 +            @Override
    1.22 +            public <T> T lookup(Class<T> clazz) {
    1.23 +                for (Object obj : instances) {
    1.24 +                    if (clazz.isInstance(obj)) {
    1.25 +                        return clazz.cast(obj);
    1.26 +                    }
    1.27 +                }
    1.28 +                return null;
    1.29 +            }
    1.30 +
    1.31 +            @Override
    1.32 +            public <T> Collection<? extends T> lookupAll(Class<T> clazz) {
    1.33 +                List<T> result = new ArrayList<T>();
    1.34 +                for (Object obj : instances) {
    1.35 +                    if (clazz.isInstance(obj)) {
    1.36 +                        result.add(clazz.cast(obj));
    1.37 +                    }
    1.38 +                }
    1.39 +                return result;
    1.40 +            }
    1.41 +
    1.42 +            @Override
    1.43 +            public <T> Set<Class<? extends T>> lookupAllClasses(Class<T> clazz) {
    1.44 +                Set<Class<? extends T>> result = new HashSet<Class<? extends T>>();
    1.45 +                for (Object obj : instances) {
    1.46 +                    if (clazz.isInstance(obj)) {
    1.47 +                        result.add(obj.getClass().asSubclass(clazz));
    1.48 +                    }
    1.49 +                }
    1.50 +                return result;
    1.51 +            }
    1.52 +        };
    1.53      }
    1.54  }