@Override public Object visitScope(Scope scope) { if (scope.equals(Scopes.SINGLETON)) { Object target = injector.getInstance(binding.getKey()); if (binding instanceof ProviderInstanceBinding) { Provider providerInstance = ((ProviderInstanceBinding) binding).getProviderInstance(); if (providerInstance instanceof ProviderMethod) { // @Provides methods don't get picked up by TypeListeners, so we need to manually register them if (lifecycleSupport.hasLifecycleMethod(target.getClass())) { lifecycleSupport.registerLifecycle(target); } } } } return null; }
@Override public Indexer.IndexedBinding visit(ProviderInstanceBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.PROVIDER_INSTANCE, scope(binding), binding.getUserSuppliedProvider()); }
@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; }
public Boolean visit(ProviderInstanceBinding<? extends T> binding) { prepareBinding(); 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<T>(initializable, source); 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( final ProviderInstanceBinding<?> binding ) { final javax.inject.Provider<?> provider = binding.getProviderInstance(); if ( provider instanceof DeferredProvider<?> ) { try { final Class<?> clazz = ( (DeferredProvider<?>) provider ).getImplementationClass().load(); analyzeImplementation( TypeLiteral.get( clazz ), false ); } catch ( final TypeNotPresentException e ) // NOPMD { // deferred provider, so we also defer any errors until someone actually tries to use it } return Boolean.TRUE; } return Boolean.valueOf( analyzeDependencies( binding.getDependencies() ) ); }
public Boolean visit(ProviderInstanceBinding<? extends T> binding) { prepareBinding(); 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<T>(initializable, source); 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 ConfigurableProvider<?> visit(ProviderInstanceBinding<?> bind) { Provider<?> prov = bind.getProviderInstance(); return (prov instanceof ConfigurableProvider<?>) ? (ConfigurableProvider<?>) prov : null; } };
/** * This will get the authoritative {@link BindingSelection} from the map provider. This * guarantees that everyone has the same instance of the bindingSelection and sees consistent * state. */ @Override final void initialize(InjectorImpl injector, Errors errors) throws ErrorsException { Binding<Map<K, V>> mapBinding = injector.getExistingBinding(mapKey); ProviderInstanceBinding<Map<K, V>> providerInstanceBinding = (ProviderInstanceBinding<Map<K, V>>) mapBinding; @SuppressWarnings("unchecked") RealMapProvider<K, V> mapProvider = (RealMapProvider<K, V>) providerInstanceBinding.getUserSuppliedProvider(); this.bindingSelection = mapProvider.getBindingSelection(); if (bindingSelection.tryInitialize(injector, errors)) { doInitialize(injector, errors); } }
public Boolean visit(ProviderInstanceBinding<? extends T> binding) { prepareBinding(); 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<T>(initializable, source); 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(ProviderInstanceBinding<? extends T> binding) { prepareBinding(); javax.inject.Provider<? extends T> provider = binding.getUserSuppliedProvider(); 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; }
@SuppressWarnings("deprecation") @Override public Void visit(ProviderInstanceBinding<? extends T> binding) { builder.toProvider(binding.getProviderInstance()).in(Scopes.SINGLETON); return null; }
ProviderMapEntry<K, V> entry = (ProviderMapEntry) entryBinding.getUserSuppliedProvider(); K key = entry.getKey();
@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 <T> Void visit(Binding<T> binding) { // look for ConfigurationProviders... if (binding instanceof ProviderInstanceBinding) { ProviderInstanceBinding<?> providerInstanceBinding = (ProviderInstanceBinding<?>) binding; Provider<?> provider = providerInstanceBinding.getProviderInstance(); if (provider instanceof ConfigurationProvider) { ConfigurationProvider<?> configurationProvider = (ConfigurationProvider<?>) provider; providers.add(configurationProvider); } } return null; } });
(Provider<Map.Entry<K, Provider<V>>>) entryBinding.getUserSuppliedProvider(); Provider<Map.Entry<K, Provider<V>>> userSuppliedProvider = typedProvider;
@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 Void visit(ProviderInstanceBinding<? extends T> providerInstanceBinding) { return addBindingInstance(providerInstanceBinding, providerInstanceBinding.getProviderInstance()); }
/** Implementation of {@link OptionalBinderBinding#containsElement}. */ boolean containsElement(Element element) { // All of our bindings are ProviderInstanceBindings whose providers extend // RealOptionalBinderProviderWithDependencies and have 'this' as its binding selection. if (element instanceof ProviderInstanceBinding) { javax.inject.Provider<?> providerInstance = ((ProviderInstanceBinding<?>) element).getUserSuppliedProvider(); if (providerInstance instanceof RealOptionalBinderProviderWithDependencies) { return ((RealOptionalBinderProviderWithDependencies<?, ?>) providerInstance) .bindingSelection.equals(this); } } if (element instanceof Binding) { Key<?> elementKey = ((Binding) element).getKey(); // if it isn't one of the things we bound directly it might be an actual or default key return elementKey.equals(getKeyForActualBinding()) || elementKey.equals(getKeyForDefaultBinding()); } return false; // cannot match; }
@Override public Void visit(ProviderInstanceBinding<? extends T> providerInstanceBinding) { return addBindingInstance(providerInstanceBinding, providerInstanceBinding.getProviderInstance()); }
if (Void.class.equals(rawType)) { if (command instanceof ProviderInstanceBinding && ((ProviderInstanceBinding) command).getUserSuppliedProvider() instanceof ProviderMethod) { errors.voidProviderMethod();