@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. } }
/** * Creates a new {@code SetBinding} with all of the contributing bindings of the provided * original {@code SetBinding}. */ public SetBinding(SetBinding<T> original) { super(original.provideKey, null, false, original.requiredBy); parent = original; this.setLibrary(original.library()); this.setDependedOn(original.dependedOn()); contributors = new ArrayList<Binding<?>>(); }
public static <T> void add(BindingsGroup bindings, String setKey, Binding<?> binding) { prepareSetBinding(bindings, setKey, binding).contributors.add(Linker.scope(binding)); }
private void handleSetBindings(BindingsGroup bindings, M module, Method method, String setKey, String providerKey, boolean library) { SetBinding.<M>add(bindings, setKey, new ReflectiveProvidesBinding<M>( method, providerKey, moduleClass.getName(), module, library)); }
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); } }
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)); }
private <T> void handleSetBindings(Map<String, Binding<?>> bindings, Method method, String key) { String elementKey = Keys.getElementKey(method.getGenericReturnType(), method.getAnnotations(), method); SetBinding.<T>add(bindings, elementKey, new ProviderMethodBinding<T>(method, key, module)); }
SetBinding.add(addTo, elementKey, binding); break;