@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 ConfigurableProvider<?> visit(ProviderInstanceBinding<?> bind) { Provider<?> prov = bind.getProviderInstance(); return (prov instanceof ConfigurableProvider<?>) ? (ConfigurableProvider<?>) prov : null; } };
@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; } });
@SuppressWarnings("deprecation") @Override public Void visit(ProviderInstanceBinding<? extends T> binding) { builder.toProvider(binding.getProviderInstance()).in(Scopes.SINGLETON); return null; }
@Override public Void visit(ProviderInstanceBinding<? extends T> providerInstanceBinding) { return addBindingInstance(providerInstanceBinding, providerInstanceBinding.getProviderInstance()); }
@Override public Void visit(ProviderInstanceBinding<? extends T> providerInstanceBinding) { return addBindingInstance(providerInstanceBinding, providerInstanceBinding.getProviderInstance()); }
public Object visit(ProviderInstanceBinding<?> target) { final Dictionary<String, Object> props = tracker.getValue(); final ConfigurableProvider<?> prov = (ConfigurableProvider<?>) target.getProviderInstance(); prov.set(props); return null; } };
private void mergeParameters( final Binding<?> binding ) { Object parameters = null; if ( binding instanceof InstanceBinding<?> ) { parameters = ( (InstanceBinding<?>) binding ).getInstance(); } else if ( binding instanceof ProviderInstanceBinding<?> ) { parameters = ( (ProviderInstanceBinding<?>) binding ).getProviderInstance().get(); } if ( parameters instanceof Map ) { properties.add( (Map<?, ?>) parameters ); } else if ( parameters instanceof String[] ) { Collections.addAll( arguments, (String[]) parameters ); } else { Logs.warn( "Ignoring incompatible @Parameters binding: {}", binding, null ); } }
@Override public Class<?> visit( final ProviderInstanceBinding<?> binding ) { final Provider<?> provider = binding.getProviderInstance(); if ( provider instanceof DeferredProvider<?> ) { try { // deferred providers let us peek at the underlying implementation type return ( (DeferredProvider<?>) provider ).getImplementationClass().load(); } catch ( final TypeNotPresentException e ) // NOPMD { // fall-through } } return null; }
private void close(Binding<?> binding, Map<Object, Object> done, Multimap<Binding<?>, Binding<?>> dependants) { if (!done.containsKey(binding)) { done.put(binding, Void.TYPE); for (Binding<?> dependant : dependants.get(binding)) { close(dependant, done, dependants); } try { if (binding instanceof ProviderInstanceBinding<?>) { Object o = ((ProviderInstanceBinding) binding).getProviderInstance(); if (!done.containsKey(o)) { preDestroy(o); done.put(o, Void.TYPE); } } else if (Scopes.isSingleton(binding)) { Object o = binding.getProvider().get(); if (!done.containsKey(o)) { preDestroy(o); done.put(o, Void.TYPE); } } } catch (Exception e) { // just ignore close errors } } }
private void close(Binding<?> binding, Map<Object, Object> done, Multimap<Binding<?>, Binding<?>> dependants) { if (!done.containsKey(binding)) { done.put(binding, Void.TYPE); for (Binding<?> dependant : dependants.get(binding)) { close(dependant, done, dependants); } try { if (binding instanceof ProviderInstanceBinding<?>) { Object o = ((ProviderInstanceBinding) binding).getProviderInstance(); if (!done.containsKey(o)) { preDestroy(o); done.put(o, Void.TYPE); } } else if (Scopes.isSingleton(binding)) { Object o = binding.getProvider().get(); if (!done.containsKey(o)) { preDestroy(o); done.put(o, Void.TYPE); } } } catch (Exception e) { // just ignore close errors } } }
@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 Void visit(ProviderInstanceBinding<? extends T> providerInstanceBinding) { // Detect provider methods and handle them // TODO(bstoler): Update this when the SPI explicitly has a case for // provider methods Provider<? extends T> provider = providerInstanceBinding.getProviderInstance(); if (provider instanceof ProviderMethod) { Context context = Context.forElement(providerInstanceBinding); bindingsCollection.addBinding(targetKey, bindingFactory.getProviderMethodBinding((ProviderMethod<?>) provider, context)); return null; } if (provider instanceof GwtDotCreateProvider) { addImplicitBinding(providerInstanceBinding); return null; } // OTt, use the normal default handler (and error) return super.visit(providerInstanceBinding); }
@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 ConfigurationAwareProvider) { ConfigurationAwareProvider<?> configurationProvider = (ConfigurationAwareProvider<?>) provider; // give the provider the configuration factory configurationProvider.setConfigurationFactory(configurationFactory); configurationProvider.setWarningsMonitor(warningsMonitor); try { // call the getter which will cause object creation configurationProvider.get(); } catch (ConfigurationException e) { // if we got errors, add them to the errors list for (Message message : e.getErrorMessages()) { messages.add(new Message(singletonList(binding.getSource()), message.getMessage(), message.getCause())); } } } } return null; } });
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; }
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; }
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; }
if (Void.class.equals(rawType)) { if (command instanceof ProviderInstanceBinding && ((ProviderInstanceBinding) command).getProviderInstance() instanceof ProviderMethod) { errors.voidProviderMethod(); } else {
if (Void.class.equals(rawType)) { if (command instanceof ProviderInstanceBinding && ((ProviderInstanceBinding) command).getProviderInstance() instanceof ProviderMethod) { errors.voidProviderMethod(); } else {
if (Void.class.equals(rawType)) { if (command instanceof ProviderInstanceBinding && ((ProviderInstanceBinding) command).getProviderInstance() instanceof ProviderMethod) { errors.voidProviderMethod(); } else {