static <T> ConstructorBindingImpl<T> create( InjectorImpl injector, Key<T> key, Object source, Scoping scoping) { Factory<T> factoryFactory = new Factory<>(); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factoryFactory, scoping); return new ConstructorBindingImpl<>( injector, key, source, scopedFactory, scoping, factoryFactory); }
@Override public Void visit(ProviderKeyBinding<? extends T> binding) { Key<? extends Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<>(injector, providerKey, source); creationListeners.add(boundProviderFactory); InternalFactory<? extends T> scopedFactory = Scopes.scope( key, injector, (InternalFactory<? extends T>) boundProviderFactory, scoping); putBinding(new LinkedProviderBindingImpl<>( injector, key, source, scopedFactory, scoping, providerKey)); return null; }
@Override public Void visit(LinkedKeyBinding<? extends T> binding) { Key<? extends T> linkedKey = binding.getLinkedKey(); if (key.equals(linkedKey)) { errors.recursiveBinding(); } FactoryProxy<T> factory = new FactoryProxy<>(injector, key, linkedKey, source); creationListeners.add(factory); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding( new LinkedBindingImpl<>(injector, key, source, scopedFactory, scoping, linkedKey)); return null; }
@Override public Void visit(ProviderInstanceBinding<? extends T> binding) { Provider<? extends T> provider = binding.getProviderInstance(); Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); Initializable<Provider<? extends T>> initializable = initializer .<Provider<? extends T>>requestInjection(injector, provider, source, injectionPoints); InternalFactory<T> factory = new InternalFactoryToProviderAdapter<>(initializable, source); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new ProviderInstanceBindingImpl<>(injector, key, source, scopedFactory, scoping, provider, injectionPoints)); return null; }
@Override public Void visit(InstanceBinding<? extends T> binding) { Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); T instance = binding.getInstance(); Initializable<T> ref = initializer.requestInjection( injector, instance, source, injectionPoints); ConstantFactory<? extends T> factory = new ConstantFactory<>(ref); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new InstanceBindingImpl<>(injector, key, source, scopedFactory, injectionPoints, instance)); return null; }
key, Scopes.<T>scope(key, this, internalFactory, scoping), scoping, targetKey);
key, Scopes.<T>scope(key, this, internalFactory, scoping), scoping, providerKey);
static <T> ConstructorBindingImpl<T> create( InjectorImpl injector, Key<T> key, Object source, Scoping scoping) { Factory<T> factoryFactory = new Factory<>(); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factoryFactory, scoping); return new ConstructorBindingImpl<>( injector, key, source, scopedFactory, scoping, factoryFactory); }
static <T> ConstructorBindingImpl<T> create( InjectorImpl injector, Key<T> key, Object source, Scoping scoping) { Factory<T> factoryFactory = new Factory<>(); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factoryFactory, scoping); return new ConstructorBindingImpl<>( injector, key, source, scopedFactory, scoping, factoryFactory); }
static <T> ConstructorBindingImpl<T> create( InjectorImpl injector, Key<T> key, Object source, Scoping scoping) { Factory<T> factoryFactory = new Factory<>(); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factoryFactory, scoping); return new ConstructorBindingImpl<>( injector, key, source, scopedFactory, scoping, factoryFactory); }
@Override public Void visit(ProviderKeyBinding<? extends T> binding) { Key<? extends Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<>(injector, providerKey, source); creationListeners.add(boundProviderFactory); InternalFactory<? extends T> scopedFactory = Scopes.scope( key, injector, (InternalFactory<? extends T>) boundProviderFactory, scoping); putBinding(new LinkedProviderBindingImpl<>( injector, key, source, scopedFactory, scoping, providerKey)); return null; }
@Override public Void visit(ProviderKeyBinding<? extends T> binding) { Key<? extends Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<>(injector, providerKey, source); creationListeners.add(boundProviderFactory); InternalFactory<? extends T> scopedFactory = Scopes.scope( key, injector, (InternalFactory<? extends T>) boundProviderFactory, scoping); putBinding(new LinkedProviderBindingImpl<>( injector, key, source, scopedFactory, scoping, providerKey)); return null; }
@Override public Void visit(ProviderKeyBinding<? extends T> binding) { Key<? extends Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<>(injector, providerKey, source); creationListeners.add(boundProviderFactory); InternalFactory<? extends T> scopedFactory = Scopes.scope( key, injector, (InternalFactory<? extends T>) boundProviderFactory, scoping); putBinding(new LinkedProviderBindingImpl<>( injector, key, source, scopedFactory, scoping, providerKey)); return null; }
@Override public Void visit(LinkedKeyBinding<? extends T> binding) { Key<? extends T> linkedKey = binding.getLinkedKey(); if (key.equals(linkedKey)) { errors.recursiveBinding(); } FactoryProxy<T> factory = new FactoryProxy<>(injector, key, linkedKey, source); creationListeners.add(factory); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding( new LinkedBindingImpl<>(injector, key, source, scopedFactory, scoping, linkedKey)); return null; }
@Override public Void visit(ProviderInstanceBinding<? extends T> binding) { Provider<? extends T> provider = binding.getProviderInstance(); Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); Initializable<Provider<? extends T>> initializable = initializer .<Provider<? extends T>>requestInjection(injector, provider, source, injectionPoints); InternalFactory<T> factory = new InternalFactoryToProviderAdapter<>(initializable, source); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new ProviderInstanceBindingImpl<>(injector, key, source, scopedFactory, scoping, provider, injectionPoints)); return null; }
@Override public Void visit(InstanceBinding<? extends T> binding) { Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); T instance = binding.getInstance(); Initializable<T> ref = initializer.requestInjection( injector, instance, source, injectionPoints); ConstantFactory<? extends T> factory = new ConstantFactory<>(ref); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new InstanceBindingImpl<>(injector, key, source, scopedFactory, injectionPoints, instance)); return null; }
@Override public Void visit(InstanceBinding<? extends T> binding) { Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); T instance = binding.getInstance(); Initializable<T> ref = initializer.requestInjection( injector, instance, source, injectionPoints); ConstantFactory<? extends T> factory = new ConstantFactory<>(ref); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new InstanceBindingImpl<>(injector, key, source, scopedFactory, injectionPoints, instance)); return null; }
@Override public Void visit(InstanceBinding<? extends T> binding) { Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); T instance = binding.getInstance(); Initializable<T> ref = initializer.requestInjection( injector, instance, source, injectionPoints); ConstantFactory<? extends T> factory = new ConstantFactory<>(ref); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new InstanceBindingImpl<>(injector, key, source, scopedFactory, injectionPoints, instance)); return null; }
@Override public Void visit(ProviderInstanceBinding<? extends T> binding) { Provider<? extends T> provider = binding.getProviderInstance(); Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); Initializable<Provider<? extends T>> initializable = initializer .<Provider<? extends T>>requestInjection(injector, provider, source, injectionPoints); InternalFactory<T> factory = new InternalFactoryToProviderAdapter<>(initializable, source); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new ProviderInstanceBindingImpl<>(injector, key, source, scopedFactory, scoping, provider, injectionPoints)); return null; }
@Override public Void visit(ProviderInstanceBinding<? extends T> binding) { Provider<? extends T> provider = binding.getProviderInstance(); Set<InjectionPoint> injectionPoints = binding.getInjectionPoints(); Initializable<Provider<? extends T>> initializable = initializer .<Provider<? extends T>>requestInjection(injector, provider, source, injectionPoints); InternalFactory<T> factory = new InternalFactoryToProviderAdapter<>(initializable, source); InternalFactory<? extends T> scopedFactory = Scopes.scope(key, injector, factory, scoping); putBinding(new ProviderInstanceBindingImpl<>(injector, key, source, scopedFactory, scoping, provider, injectionPoints)); return null; }