@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Void visit(PrivateElements privateElements) { overriddenKeys.addAll(privateElements.getExposedKeys()); return super.visit(privateElements); } }.writeAll(overrideElements);
void rewrite(Binder binder, PrivateElements privateElements, Set<Key<?>> keysToSkip) { PrivateBinder privateBinder = binder.withSource(privateElements.getSource()).newPrivateBinder(); Set<Key<?>> skippedExposes = Sets.newHashSet(); for (Key<?> key : privateElements.getExposedKeys()) { if (keysToSkip.remove(key)) { skippedExposes.add(key); } else { privateBinder.withSource(privateElements.getExposedSource(key)).expose(key); } } for (Element element : privateElements.getElements()) { if (element instanceof Binding && skippedExposes.remove(((Binding) element).getKey())) { continue; } if (element instanceof PrivateElements) { rewrite(privateBinder, (PrivateElements) element, skippedExposes); continue; } element.applyTo(privateBinder); } }
PrivateBinder privateBinder = baseBinder.newPrivateBinder().withSource(privateElements.getSource()); for (Key exposed : privateElements.getExposedKeys()) { privateBinder.withSource(privateElements.getExposedSource(exposed)).expose(exposed);
private ImmutableMap<Key<?>, Binding<?>> indexBindings(Iterable<Element> elements) { ImmutableMap.Builder<Key<?>, Binding<?>> builder = ImmutableMap.builder(); for (Element element : elements) { if (element instanceof Binding) { Binding<?> binding = (Binding<?>) element; builder.put(binding.getKey(), binding); } else if (element instanceof PrivateElements) { PrivateElements privateElements = (PrivateElements) element; Map<Key<?>, Binding<?>> privateBindings = indexBindings(privateElements.getElements()); for (Key<?> exposed : privateElements.getExposedKeys()) { builder.put(exposed, privateBindings.get(exposed)); } } } return builder.build(); } }
@Override public Void visit(PrivateElements privateElements) { overriddenKeys.addAll(privateElements.getExposedKeys()); return super.visit(privateElements); } }.writeAll(overrideElements);
@Override public Void visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindKey(key); } return null; }
@Override public Void visit(PrivateElements privateElements) { overriddenKeys.addAll(privateElements.getExposedKeys()); return super.visit(privateElements); } }.writeAll(overrideElements);
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Void visit(PrivateElements privateElements) { overriddenKeys.addAll(privateElements.getExposedKeys()); return super.visit(privateElements); } }.writeAll(overrideElements);
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Boolean visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { bindExposed(privateElements, key); } return false; // leave the private elements for the PrivateElementsProcessor to handle }
@Override public Void visit(PrivateElements privateElements) { for (Key<?> key : privateElements.getExposedKeys()) { if (key.getAnnotation() != null) { throw new IllegalStateException("Non singleton service " + service.getName() + " cannot expose " + key.toString() + ". Only services marked with @Singleton" + " can expose bindings with annotation."); } } return null; } });
private void extractPrivateElements(Map<Key<?>, Binding<?>> bindings, PrivateElements privateElements) { List<Element> elements = privateElements.getElements(); for (Element e : elements) { if (e instanceof Binding && privateElements.getExposedKeys() .contains(((Binding<?>) e).getKey())) { Binding<?> binding = (Binding<?>) e; bindings.put(binding.getKey(), binding); } else if (e instanceof PrivateElements) { extractPrivateElements(bindings, (PrivateElements) e); } } }
@Override protected void configure() { for (Element element : privateElements.getElements()) { if (element instanceof Binding && ArrayUtils.contains(excludedKeys, ((Binding) element).getKey())) { continue; } element.applyTo(binder()); } for (Key<?> exposedKey : privateElements.getExposedKeys()) { if (ArrayUtils.contains(excludedKeys, exposedKey)) { continue; } expose(exposedKey); } } }
@SuppressWarnings("unchecked") @Override public Void visit(PrivateElements privateElements) { Set<Key<?>> exposedKeys = privateElements.getExposedKeys(); for (Element element : privateElements.getElements()) { if (element instanceof Binding<?>) { Binding<?> bindingElement = (Binding<?>) element; if (exposedKeys.contains(bindingElement.getKey())) { @SuppressWarnings("rawtypes") GuicePrivateBindingVisitor bindingVisitor = new GuicePrivateBindingVisitor(); bindingElement.acceptTargetVisitor(bindingVisitor); } } } return null; }
private static void annotateExposedWithId(final PrivateBinder binder, final PrivateElements elements, final Service service) { final boolean singleton = ReflectionTools.isSingleton(service.getClass()); // rewrite all bindings for (Element element : elements.getElements()) { element.applyTo(binder); } // rewrite all exposed bindings to include id for (Key<?> oldKey : elements.getExposedKeys()) { if (!singleton && !Strings.isNullOrEmpty(service.getId())) { bindKey(binder, oldKey, Names.named(service.getId())); } else { binder.expose(oldKey); } } }