samples/componentinjection/anagram-modular/src-app-register-general/org/apidesign/anagram/app/registergeneral/Registry.java
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 +