@Override public Indexer.IndexedBinding visit(ConstructorBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.CONSTRUCTOR, scope(binding), binding.getConstructor()); }
/** * Visitor for {@link ConstructorBinding}s. These are for classes that Guice will instantiate to * satisfy injection requests. */ @Override public Collection<Node> visit(ConstructorBinding<?> binding) { Collection<Member> members = Lists.newArrayList(); members.add(binding.getConstructor().getMember()); for (InjectionPoint injectionPoint : binding.getInjectableMembers()) { members.add(injectionPoint.getMember()); } return ImmutableList.<Node>of(newImplementationNode(binding, members)); }
@Override public Void visit(final ConstructorBinding<?> binding) { final IServiceGraphVertex<?> bindingVertex = serviceGraph.findVertex(binding.getKey()).get(); final Map<Dependency<?>, Optional<IServiceGraphVertex<?>>> dependencyVertices = binding.getConstructor().getDependencies().stream() .collect(Collectors.toMap(Function.identity(), dependency -> serviceGraph.findVertex(dependency.getKey()))); dependencyVertices.forEach((dependency, vertex) -> { // If the dependency vertex already exists in the graph, then just add an edge between the two... if(vertex.isPresent()) { serviceGraph.addEdge(vertex.get(), bindingVertex); // ...otherwise, we have a key mismatch. This happens when the dependency uses an interface // but the Guice binding uses the implementing singleton class. In that case, we'll create // a vertex ad-hoc here for the interface and provide the edge. This will be merged in the DAG. } else { final Key<Object> dependencyKey = (Key<Object>)dependency.getKey(); final Injector injector = ((BindingImpl) binding).getInjector(); final Object dependencyInstance = injector.getInstance(dependencyKey); final IServiceGraphVertex<?> dependencyVertex = createGraphVertex(dependencyKey, dependencyInstance); serviceGraph.addVertex(dependencyVertex); serviceGraph.addEdge(dependencyVertex, bindingVertex); } }); return null; }
/** * Visitor for {@link ConstructorBinding}s. These are for classes that Guice will instantiate to * satisfy injection requests. */ @Override public Collection<Edge> visit(ConstructorBinding<?> binding) { return newDependencyEdges(NodeId.newTypeId(binding.getKey()), binding); }
@Override public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create( injector, key, binding.getConstructor(), source, scoping, errors, false, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
@Override public Class<?> visit( final ConstructorBinding<?> binding ) { return binding.getConstructor().getDeclaringType().getRawType(); }
@SuppressWarnings("unchecked") @Override public Void visit(ConstructorBinding<? extends T> binding) { builder.toConstructor((Constructor<T>) binding.getConstructor().getMember()).in(Scopes.SINGLETON); return null; }
@Override public Indexer.IndexedBinding visit(ConstructorBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.CONSTRUCTOR, scope(binding), binding.getConstructor()); }
@Override public Indexer.IndexedBinding visit(ConstructorBinding<? extends Object> binding) { return new Indexer.IndexedBinding( binding, BindingType.CONSTRUCTOR, scope(binding), binding.getConstructor()); }
@Override public IndexedBinding visit(ConstructorBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.CONSTRUCTOR, scope(binding), binding.getConstructor()); }
public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
@Override public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create(injector, key, binding.getConstructor(), source, scoping, errors, false, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
@Override public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create( injector, key, binding.getConstructor(), source, scoping, errors, false, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }
@Override public Boolean visit(ConstructorBinding<? extends T> binding) { prepareBinding(); try { ConstructorBindingImpl<T> onInjector = ConstructorBindingImpl.create( injector, key, binding.getConstructor(), source, scoping, errors, false, false); scheduleInitialization(onInjector); putBinding(onInjector); } catch (ErrorsException e) { errors.merge(e.getErrors()); putBinding(invalidBinding(injector, key, source)); } return true; }