Java 类com.google.inject.spi.DefaultElementVisitor 实例源码

项目:guice    文件:Modules.java   
private static Module extractScanners(Iterable<Element> elements) {
  final List<ModuleAnnotatedMethodScannerBinding> scanners = Lists.newArrayList();
  ElementVisitor<Void> visitor =
      new DefaultElementVisitor<Void>() {
        @Override
        public Void visit(ModuleAnnotatedMethodScannerBinding binding) {
          scanners.add(binding);
          return null;
        }
      };
  for (Element element : elements) {
    element.acceptVisitor(visitor);
  }
  return new AbstractModule() {
    @Override
    protected void configure() {
      for (ModuleAnnotatedMethodScannerBinding scanner : scanners) {
        scanner.applyTo(binder());
      }
    }
  };
}
项目:guice    文件:MapBinderTest.java   
/**
 * Given an {@link Iterable} of elements, return the one that is a {@link MapBinderBinding}, or
 * {@code null} if it cannot be found.
 */
private static MapBinderBinding<?> getMapBinderBinding(
    Iterable<com.google.inject.spi.Element> elements) {
  final Collector collector = new Collector();
  for (com.google.inject.spi.Element element : elements) {
    element.acceptVisitor(
        new DefaultElementVisitor<Void>() {
          @Override
          public <T> Void visit(Binding<T> binding) {
            binding.acceptTargetVisitor(collector);
            return null;
          }
        });
  }
  return collector.mapbinding;
}
项目:mail-importer    文件:ModuleTester.java   
public void assertAllDependenciesDeclared() {
  List<Key> requiredKeys = new ArrayList<>();

  List<Element> elements = Elements.getElements(module);
  for (Element element : elements) {
    element.acceptVisitor(new DefaultElementVisitor<Void>() {
      @Override
      public <T> Void visit(ProviderLookup<T> providerLookup) {
        // Required keys are the only ones with null injection points.
        if (providerLookup.getDependency().getInjectionPoint() == null) {
          requiredKeys.add(providerLookup.getKey());
        }
        return null;
      }
    });
  }

  Injector injector = Guice.createInjector(module,
      new AbstractModule() {
        @Override
        @SuppressWarnings("unchecked")
        protected void configure() {
          binder().disableCircularProxies();
          binder().requireAtInjectOnConstructors();
          binder().requireExactBindingAnnotations();

          for (Key<?> key : requiredKeys) {
            bind((Key) key).toProvider(Providers.of(null));
          }
        }
      });

  injector.getAllBindings();
}