new BindingProcessor(errors, initializer, bindingData).process(injector, elements); new UntargettedBindingProcessor(errors, bindingData).process(injector, elements); stopwatch.resetAndLog("Binding creation");
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create( injector, key, binding.getConstructor(), source, scoping, errors, false, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
private <T> void bindExposed(PrivateElements privateElements, Key<T> key) { ExposedKeyFactory<T> exposedKeyFactory = new ExposedKeyFactory<>(key, privateElements); bindingData.addCreationListener(exposedKeyFactory); putBinding( new ExposedBindingImpl<T>( injector, privateElements.getExposedSource(key), key, exposedKeyFactory, privateElements)); } }
/** Handle ProviderMethods specially. */ private Boolean visitInternalProviderInstanceBindingFactory( InternalProviderInstanceBindingImpl.Factory<T> provider) { InternalProviderInstanceBindingImpl<T> binding = new InternalProviderInstanceBindingImpl<T>( injector, key, source, provider, Scoping.scope(key, injector, provider, source, scoping), scoping); switch (binding.getInitializationTiming()) { case DELAYED: scheduleDelayedInitialization(binding); break; case EAGER: scheduleInitialization(binding); break; default: throw new AssertionError(); } putBinding(binding); return true; }
@Override public Boolean visit(InstanceBinding<? extends T> binding) { prepareBinding(); Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); T instance = binding.getInstance(); @SuppressWarnings("unchecked") // safe to cast to binding<T> because // the processor was constructed w/ it Initializable<T> ref = initializer.requestInjection( injector, instance, (Binding<T>) binding, source, injectionPoints); ConstantFactory<? extends T> factory = new ConstantFactory<>(ref); InternalFactory<? extends T> scopedFactory = Scoping.scope(key, injector, factory, source, scoping); putBinding( new InstanceBindingImpl<T>( injector, key, source, scopedFactory, injectionPoints, instance)); return true; }
public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
new BindingProcessor(errors, initializer, bindingData).process(injector, elements); new UntargettedBindingProcessor(errors, bindingData).process(injector, elements); stopwatch.resetAndLog("Binding creation");
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(LinkedKeyBinding<? extends T> binding) { prepareBinding(); Key<? extends T> linkedKey = binding.getLinkedKey(); if (key.equals(linkedKey)) { errors.recursiveBinding(); } FactoryProxy<T> factory = new FactoryProxy<>(injector, key, linkedKey, source); bindingData.addCreationListener(factory); InternalFactory<? extends T> scopedFactory = Scoping.scope(key, injector, factory, source, scoping); putBinding( new LinkedBindingImpl<T>(injector, key, source, scopedFactory, scoping, linkedKey)); return true; }
public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
new BindingProcessor(errors, initializer, bindingData).process(injector, elements); new UntargettedBindingProcessor(errors, bindingData).process(injector, elements); stopwatch.resetAndLog("Binding creation");
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(ProviderKeyBinding<? extends T> binding) { prepareBinding(); Key<? extends javax.inject.Provider<? extends T>> providerKey = binding.getProviderKey(); // always visited with Binding<T> @SuppressWarnings("unchecked") BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<T>( injector, providerKey, source, injector.provisionListenerStore.get((ProviderKeyBinding<T>) binding)); bindingData.addCreationListener(boundProviderFactory); InternalFactory<? extends T> scopedFactory = Scoping.scope( key, injector, (InternalFactory<? extends T>) boundProviderFactory, source, scoping); putBinding( new LinkedProviderBindingImpl<T>( injector, key, source, scopedFactory, scoping, providerKey)); return true; }
public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
new BindingProcessor(errors, initializer, bindingData).process(injector, elements); new UntargettedBindingProcessor(errors, bindingData).process(injector, elements); stopwatch.resetAndLog("Binding creation");
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(ProviderInstanceBinding<? extends T> binding) { prepareBinding(); javax.inject.Provider<? extends T> provider = binding.getUserSuppliedProvider(); if (provider instanceof InternalProviderInstanceBindingImpl.Factory) { @SuppressWarnings("unchecked") InternalProviderInstanceBindingImpl.Factory<T> asProviderMethod = (InternalProviderInstanceBindingImpl.Factory<T>) provider; return visitInternalProviderInstanceBindingFactory(asProviderMethod); } Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); Initializable<? extends javax.inject.Provider<? extends T>> initializable = initializer.<javax.inject.Provider<? extends T>>requestInjection( injector, provider, null, source, injectionPoints); // always visited with Binding<T> @SuppressWarnings("unchecked") InternalFactory<T> factory = new InternalFactoryToInitializableAdapter<T>( initializable, source, injector.provisionListenerStore.get((ProviderInstanceBinding<T>) binding)); InternalFactory<? extends T> scopedFactory = Scoping.scope(key, injector, factory, source, scoping); putBinding( new ProviderInstanceBindingImpl<T>( injector, key, source, scopedFactory, scoping, provider, injectionPoints)); return true; }
@Override public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
new BindingProcessor(errors, initializer, bindingData).process(injector, elements); new UntargettedBindingProcessor(errors, bindingData).process(injector, elements); stopwatch.resetAndLog("Binding creation");