samples/componentinjection/anagram-modular/src-app-register-general/org/apidesign/anagram/app/registergeneral/Registry.java
changeset 228 984a01bbac90
child 233 15d31c98a129
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/samples/componentinjection/anagram-modular/src-app-register-general/org/apidesign/anagram/app/registergeneral/Registry.java	Sat Jun 14 10:07:15 2008 +0200
     1.3 @@ -0,0 +1,32 @@
     1.4 +package org.apidesign.anagram.app.registergeneral;
     1.5 +
     1.6 +import java.util.LinkedHashMap;
     1.7 +import java.util.Map;
     1.8 +
     1.9 +public final class Registry {
    1.10 +    private static Map<Class<?>,Object[]> instances = new LinkedHashMap<Class<?>,Object[]>();
    1.11 +    
    1.12 +    private Registry() {
    1.13 +    }
    1.14 +    
    1.15 +    public static void registerClass(Class<?> impl) {
    1.16 +        instances.put(impl, new Object[1]);
    1.17 +    }
    1.18 +    
    1.19 +    public static <T> T find(Class<T> whatType) {
    1.20 +        for (Map.Entry<Class<?>, Object[]> entry : instances.entrySet()) {
    1.21 +            if (whatType.isAssignableFrom(entry.getKey())) {
    1.22 +                if (entry.getValue()[0] == null) {
    1.23 +                    try {
    1.24 +                        entry.getValue()[0] = entry.getKey().newInstance();
    1.25 +                    } catch (Exception ex) {
    1.26 +                        throw new IllegalStateException(ex);
    1.27 +                    }
    1.28 +                }
    1.29 +                return whatType.cast(entry.getValue()[0]);
    1.30 +            }
    1.31 +        }
    1.32 +        return null;
    1.33 +    }
    1.34 +}
    1.35 +