package triaina.injector.binder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import triaina.commons.utils.ArrayListUtils; import com.google.inject.ConfigurationException; import com.google.inject.spi.Message; public class BinderContainer { private static Map<Class<?>, List<DynamicBinder>> mContainer = new HashMap<Class<?>, List<DynamicBinder>>(); public static void put(DynamicBinder binder) { Class<?> type = binder.getBindClass(); synchronized (BinderContainer.class) { List<DynamicBinder> list = mContainer.get(type); if (list == null) list = new ArrayList<DynamicBinder>(); else { DynamicBinder t = list.get(0); if (!binder.getName().equals(t.getName())) throw new ConfigurationException(ArrayListUtils.toArrayList(new Message(type.getName() + " is already defined to " + t.getName()))); } list.add(binder); mContainer.put(type, list); } } public static List<DynamicBinder> get(Class<?> type) { synchronized (BinderContainer.class) { List<DynamicBinder> list = mContainer.get(type); if (list == null) return new ArrayList<DynamicBinder>(); return new ArrayList<DynamicBinder>(list); } } //for test public static void clear() { synchronized (BinderContainer.class) { mContainer.clear(); } } }