public StandardBindings(List<SetBinding<?>> baseSetBindings) { setBindings = new ArrayList<SetBinding<?>>(baseSetBindings.size()); for (SetBinding<?> sb : baseSetBindings) { @SuppressWarnings({ "rawtypes", "unchecked" }) SetBinding<?> child = new SetBinding(sb); setBindings.add(child); put(child.provideKey, child); } }
@SuppressWarnings("unchecked") private static <T> SetBinding<T> prepareSetBinding( BindingsGroup bindings, String setKey, Binding<?> binding) { Binding<?> previous = bindings.get(setKey); SetBinding<T> setBinding; if (previous instanceof SetBinding) { setBinding = (SetBinding<T>) previous; setBinding.setLibrary(setBinding.library() && binding.library()); return setBinding; } else if (previous != null) { throw new IllegalArgumentException("Duplicate:\n " + previous + "\n " + binding); } else { setBinding = new SetBinding<T>(setKey, binding.requiredBy); setBinding.setLibrary(binding.library()); bindings.contributeSetBinding(setKey, setBinding); return (SetBinding<T>) bindings.get(setKey); // BindingMap.put() copies SetBindings. } }
public static <T> void add(Map<String, Binding<?>> bindings, String elementKey, Binding<?> binding) { SetBinding<T> elementBinding = (SetBinding<T>) bindings.get(elementKey); if (elementBinding == null) { elementBinding = new SetBinding<T>(elementKey); bindings.put(elementBinding.provideKey, elementBinding); } elementBinding.contributors.add(Linker.scope(binding)); }