Refine search
@Override public Set<Dependency<?>> getDependencies() { return instance instanceof HasDependencies ? ImmutableSet.copyOf(((HasDependencies) instance).getDependencies()) : Dependency.forInjectionPoints(injectionPoints); }
private Collection<Key<?>> visitHasDependencies(HasDependencies hasDependencies) { Set<Key<?>> dependencies = Sets.newHashSet(); for (Dependency<?> dependency : hasDependencies.getDependencies()) { dependencies.add(dependency.getKey()); } return dependencies; }
/** * Returns a dependency edge for each {@link Dependency} in the binding. These will be from the * given node ID to the {@link Dependency}'s {@link Key}. * * @param nodeId ID of the node that should be the tail of the dependency edges * @param binding {@link Binding} for the dependencies */ private <T extends Binding<?> & HasDependencies> Collection<Edge> newDependencyEdges( NodeId nodeId, T binding) { ImmutableList.Builder<Edge> builder = ImmutableList.builder(); for (Dependency<?> dependency : binding.getDependencies()) { NodeId to = NodeId.newTypeId(dependency.getKey()); builder.add(new DependencyEdge(nodeId, to, dependency.getInjectionPoint())); } return builder.build(); }
public void testFactoryBindingDependencies() { Injector injector = Guice.createInjector( new AbstractModule() { @Override protected void configure() { bind(Double.class).toInstance(5.0d); bind(ColoredCarFactory.class) .toProvider(FactoryProvider.newFactory(ColoredCarFactory.class, Mustang.class)); } }); Binding<?> binding = injector.getBinding(ColoredCarFactory.class); HasDependencies hasDependencies = (HasDependencies) binding; assertEquals( ImmutableSet.<Dependency<?>>of(Dependency.get(Key.get(double.class))), hasDependencies.getDependencies()); }
/** Safely gets the dependencies of possibly not initialized bindings. */ @SuppressWarnings("unchecked") private Set<Dependency<?>> getInternalDependencies(BindingImpl<?> binding) { if (binding instanceof ConstructorBindingImpl) { return ((ConstructorBindingImpl) binding).getInternalDependencies(); } else if (binding instanceof HasDependencies) { return ((HasDependencies) binding).getDependencies(); } else { return ImmutableSet.of(); } }
/** * Returns a new instance node for the given {@link Binding}. * * @param binding binding for the node to create * @param instance value of the instance * @return instance node for the given binding */ private <T extends Binding<?> & HasDependencies> InstanceNode newInstanceNode( T binding, Object instance) { Collection<Member> members = Lists.newArrayList(); for (Dependency<?> dependency : binding.getDependencies()) { InjectionPoint injectionPoint = dependency.getInjectionPoint(); if (injectionPoint != null) { members.add(injectionPoint.getMember()); } } return new InstanceNode( NodeId.newInstanceId(binding.getKey()), binding.getSource(), instance, members); }
@Override public <T> Void visit(Binding<T> binding) { LOGGER.debug("visiting binding " + binding.toString()); if (binding instanceof HasDependencies) { HasDependencies deps = (HasDependencies) binding; for (Dependency<?> d : deps.getDependencies()) { collectDependencies(d.getKey(), dependencies); } } else { collectDependencies(binding.getKey(), dependencies); dependencies.addAll(getDependencies(binding.getKey())); } return null; } });
@Override public Set<Dependency<?>> getDependencies() { return ((HasDependencies) provider).getDependencies(); }
@Override public <T> Void visit(Binding<T> binding) { LOGGER.debug("visiting binding " + binding.toString()); if (binding instanceof HasDependencies) { HasDependencies deps = (HasDependencies) binding; for (Dependency<?> d : deps.getDependencies()) { collectDependencies(d.getKey(), dependencies); } } else { collectDependencies(binding.getKey(), dependencies); dependencies.addAll(getDependencies(binding.getKey())); } return null; } });
@Override public Set<Dependency<?>> getDependencies() { return providerInstance instanceof HasDependencies ? ImmutableSet.copyOf(((HasDependencies) providerInstance).getDependencies()) : Dependency.forInjectionPoints(injectionPoints); }
@Override public Boolean visitOther( final Binding<?> binding ) { if ( binding instanceof HasDependencies ) { return Boolean.valueOf( analyzeDependencies( ( (HasDependencies) binding ).getDependencies() ) ); } return Boolean.TRUE; }
private void validateDependencies(Set<Key<?>> expectedKeys, Binding<?> binding) { Set<Dependency<?>> dependencies = ((HasDependencies) binding).getDependencies(); Set<Key<?>> actualKeys = new HashSet<>(); for (Dependency<?> dependency : dependencies) { actualKeys.add(dependency.getKey()); } assertEquals(expectedKeys, actualKeys); }
@Override public Set<Dependency<?>> getDependencies() { return providerInstance instanceof HasDependencies ? ImmutableSet.copyOf(((HasDependencies) providerInstance).getDependencies()) : Dependency.forInjectionPoints(injectionPoints); }
/** Safely gets the dependencies of possibly not initialized bindings. */ @SuppressWarnings("unchecked") private Set<Dependency<?>> getInternalDependencies(BindingImpl<?> binding) { if (binding instanceof ConstructorBindingImpl) { return ((ConstructorBindingImpl) binding).getInternalDependencies(); } else if (binding instanceof HasDependencies) { return ((HasDependencies) binding).getDependencies(); } else { return ImmutableSet.of(); } }
@Override public void onInjectorClosing() { Map<Key<?>, Binding<?>> bindings = injector.getAllBindings(); Multimap<Binding<?>, Binding<?>> dependants = Multimaps.newSetMultimap(new IdentityHashMap<Binding<?>, Collection<Binding<?>>>(), new Supplier<Set<Binding<?>>>() { @Override public Set<Binding<?>> get() { return new HashSet<Binding<?>>(); } }); for (Binding<?> binding : bindings.values()) { if (binding instanceof HasDependencies) { for (Dependency<?> dependency : ((HasDependencies) binding).getDependencies()) { if (bindings.containsKey(dependency.getKey())) { dependants.put(injector.getBinding(dependency.getKey()), binding); } } } } Map<Object, Object> done = new IdentityHashMap<Object, Object>(bindings.size()); for (final Binding<?> binding : bindings.values()) if (Scopes.isSingleton(binding)) { close(binding, done, dependants); } for (Scope scope : injector.getScopeBindings().values()) preDestroy(scope); }
@Override public Set<Dependency<?>> getDependencies() { return instance instanceof HasDependencies ? ImmutableSet.copyOf(((HasDependencies) instance).getDependencies()) : Dependency.forInjectionPoints(injectionPoints); }
/** Safely gets the dependencies of possibly not initialized bindings. */ @SuppressWarnings("unchecked") private Set<Dependency<?>> getInternalDependencies(BindingImpl<?> binding) { if (binding instanceof ConstructorBindingImpl) { return ((ConstructorBindingImpl) binding).getInternalDependencies(); } else if (binding instanceof HasDependencies) { return ((HasDependencies) binding).getDependencies(); } else { return ImmutableSet.of(); } }
@Override public void onInjectorClosing() { Map<Key<?>, Binding<?>> bindings = injector.getAllBindings(); Multimap<Binding<?>, Binding<?>> dependants = Multimaps.newSetMultimap(new IdentityHashMap<Binding<?>, Collection<Binding<?>>>(), new Supplier<Set<Binding<?>>>() { @Override public Set<Binding<?>> get() { return new HashSet<Binding<?>>(); } }); for (Binding<?> binding : bindings.values()) { if (binding instanceof HasDependencies) { for (Dependency<?> dependency : ((HasDependencies) binding).getDependencies()) { if (bindings.containsKey(dependency.getKey())) { dependants.put(injector.getBinding(dependency.getKey()), binding); } } } } Map<Object, Object> done = new IdentityHashMap<Object, Object>(bindings.size()); for (final Binding<?> binding : bindings.values()) if (Scopes.isSingleton(binding)) { close(binding, done, dependants); } for (Scope scope : injector.getScopeBindings().values()) preDestroy(scope); }
@Override public Set<Dependency<?>> getDependencies() { return instance instanceof HasDependencies ? ImmutableSet.copyOf(((HasDependencies) instance).getDependencies()) : Dependency.forInjectionPoints(injectionPoints); }
/** * Safely gets the dependencies of possibly not initialized bindings. */ @SuppressWarnings("unchecked") private Set<Dependency<?>> getInternalDependencies(BindingImpl<?> binding) { if (binding instanceof ConstructorBindingImpl) { return ((ConstructorBindingImpl) binding).getInternalDependencies(); } else if (binding instanceof HasDependencies) { return ((HasDependencies) binding).getDependencies(); } else { return ImmutableSet.of(); } }