diff -r 1c999569643b -r acf2c31e22d4 samples/consistency/src-api2.0/api/Lookup.java --- a/samples/consistency/src-api2.0/api/Lookup.java Sat Jun 14 10:04:51 2008 +0200 +++ b/samples/consistency/src-api2.0/api/Lookup.java Sat Jun 14 10:04:53 2008 +0200 @@ -1,6 +1,11 @@ package api; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; import java.util.Set; /** Simplified version of NetBeans @@ -13,26 +18,49 @@ * @version 2.0 */ // BEGIN: design.consistency.2.0 -public final class Lookup { +public abstract class Lookup { + /** only for classes in the same package */ Lookup() { } // BEGIN: design.consistency.lookup.2.0 public T lookup(Class clazz) { - return null; + Iterator it = doLookup(clazz); + return it.hasNext() ? it.next() : null; } // END: design.consistency.lookup.2.0 // BEGIN: design.consistency.lookupAll.2.0 public Collection lookupAll(Class clazz) { - return null; + Iterator it = doLookup(clazz); + if (!it.hasNext()) { + return Collections.emptyList(); + } else { + List result = new ArrayList(); + while (it.hasNext()) { + result.add(it.next()); + } + return result; + } } // END: design.consistency.lookupAll.2.0 // BEGIN: design.consistency.lookupAllClasses.2.0 public Set> lookupAllClasses(Class clazz) { - return null; + Iterator it = doLookup(clazz); + if (!it.hasNext()) { + return Collections.emptySet(); + } else { + Set> result = + new HashSet>(); + while (it.hasNext()) { + result.add(it.next().getClass().asSubclass(clazz)); + } + return result; + } } // END: design.consistency.lookupAllClasses.2.0 +// FINISH: design.consistency.2.0 + + abstract Iterator doLookup(Class clazz); } -// END: design.consistency.2.0 \ No newline at end of file