@Override public Indexer.IndexedBinding visit(ProviderKeyBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.PROVIDER_KEY, scope(binding), binding.getProviderKey()); }
/** * Same as {@link #visit(LinkedKeyBinding)}, but the binding edge is {@link * BindingEdge.Type#PROVIDER}. */ @Override public Collection<Edge> visit(ProviderKeyBinding<?> binding) { return ImmutableList.<Edge>of( new BindingEdge( NodeId.newTypeId(binding.getKey()), NodeId.newTypeId(binding.getProviderKey()), BindingEdge.Type.PROVIDER)); }
public Void visit(ProviderKeyBinding<? extends T> providerKeyBinding) { Context context = Context.forElement(providerKeyBinding); bindingsCollection.addBinding( targetKey, bindingFactory.getBindProviderBinding( providerKeyBinding.getProviderKey(), providerKeyBinding.getKey(), context)); return null; }
@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; }
GuiceSpi.<Class>inspect(binding) .onLinkedBinding(linkedKeyBinding -> linkedKeyBinding.getLinkedKey().getTypeLiteral().getRawType()) .onProviderKeyBinding(providerKeyBinding -> providerKeyBinding.getProviderKey().getTypeLiteral().getRawType()) .visit() .filter(this::isAnnotatedSingleton) bind(providerKeyBinding.getProviderKey()).in(relatedScope); bind(providerKeyBinding.getKey()).toProvider(providerKeyBinding.getProviderKey()).in(relatedScope); })
@Override public Collection<Key<?>> visit(ProviderKeyBinding<?> binding) { return ImmutableSet.<Key<?>>of(binding.getProviderKey()); }
@Override public Void visit(ProviderKeyBinding<? extends T> binding) { builder.toProvider(binding.getProviderKey()).in(Scopes.SINGLETON); return null; }
@Override public Void visit(ProviderKeyBinding<? extends T> providerKeyBinding) { return addBindingKey(providerKeyBinding, providerKeyBinding.getProviderKey()); }
@Override public Void visit(ProviderKeyBinding<? extends T> providerKeyBinding) { return addBindingKey(providerKeyBinding, providerKeyBinding.getProviderKey()); }
@Override public Indexer.IndexedBinding visit(ProviderKeyBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.PROVIDER_KEY, scope(binding), binding.getProviderKey()); }
@Override public Indexer.IndexedBinding visit(ProviderKeyBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.PROVIDER_KEY, scope(binding), binding.getProviderKey()); }
@Override public IndexedBinding visit(ProviderKeyBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.PROVIDER_KEY, scope(binding), binding.getProviderKey()); }
@Override public Boolean visit( final ProviderKeyBinding<?> binding ) { final Key<?> providerKey = binding.getProviderKey(); if ( providerKey.getAnnotationType() == null ) { return analyzeImplementation( providerKey.getTypeLiteral(), true ); } return Boolean.TRUE; // indirect binding, don't scan }
public Boolean visit(ProviderKeyBinding<? extends T> binding) { prepareBinding(); Key<? extends javax.inject.Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<T>(injector, providerKey, source); 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(ProviderKeyBinding<? extends T> binding) { prepareBinding(); Key<? extends javax.inject.Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<T>(injector, providerKey, source); 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(ProviderKeyBinding<? extends T> binding) { prepareBinding(); Key<? extends javax.inject.Provider<? extends T>> providerKey = binding.getProviderKey(); BoundProviderFactory<T> boundProviderFactory = new BoundProviderFactory<T>(injector, providerKey, source); 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; }
@Override @SuppressWarnings("unchecked") protected void configure() { final List<Element> elements = Elements.getElements(sourceModule); final List<Element> elementsToWrite = new ArrayList<>(elements); GuiceSpi.getBindings(elements).forEach(binding -> { final Scoping scoping = GuiceSpi.resolveScope(binding); if (scoping == null) { return; } final Class<? extends Annotation> scopeAnnotation = scoping.getScopeAnnotation(); if (isSingletonScopeAnnotation(scopeAnnotation)) { boolean isEagerSingleton = isEagerSingletonAnnotation(scopeAnnotation); final UiContextAnnotation uiContextAnnotation = UiAnnotations.cast(binding.getKey().getAnnotation()); final Class<? extends Annotation> relatedScopeAnnotation = uiContextAnnotation.getRelatedScopeAnnotation(isEagerSingleton); if (!Objects.equals(relatedScopeAnnotation, scopeAnnotation)) { elementsToWrite.remove(binding); final Key key = binding.getKey(); GuiceSpi.<ScopedBindingBuilder>inspect(binding) .onLinkedBinding(linkedKeyBinding -> bind(key).to(linkedKeyBinding.getLinkedKey())) .onProviderKeyBinding(providerBinding -> bind(key).toProvider(providerBinding.getProviderKey())) .visit() .ifPresent(scopedBindingBuilder -> scopedBindingBuilder.in(relatedScopeAnnotation)); } } }); elementsToWrite.forEach(element -> element.applyTo(binder())); }
GuiceSpi.<ScopedBindingBuilder> inspect(bindings.get(0)) .onProviderKeyBinding(binding -> bind(typeLiteral).toProvider(binding.getProviderKey()))
@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; }
@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; }