public <B, V> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if(visitor instanceof ServletModuleTargetVisitor) { if(servletInstance != null) { return ((ServletModuleTargetVisitor<B, V>)visitor).visit( new InstanceServletBindingImpl(initParams, pattern, servletInstance, patternMatcher)); } else { return ((ServletModuleTargetVisitor<B, V>)visitor).visit( new LinkedServletBindingImpl(initParams, pattern, servletKey, patternMatcher)); } } else { return visitor.visit(binding); } }
public <B, V> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if(visitor instanceof ServletModuleTargetVisitor) { if(filterInstance != null) { return ((ServletModuleTargetVisitor<B, V>)visitor).visit( new InstanceFilterBindingImpl(initParams, pattern, filterInstance, patternMatcher)); } else { return ((ServletModuleTargetVisitor<B, V>)visitor).visit( new LinkedFilterBindingImpl(initParams, pattern, filterKey, patternMatcher)); } } else { return visitor.visit(binding); } }
/** * This is needed for 'initialize(injector)' below to be called so the provider * can get the injector after it is instantiated. */ @Override public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { return visitor.visit(binding); }
@SuppressWarnings("unchecked") // The real type of B must be T @Override public <B, V> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof ContextSensitiveBindingVisitor) { return ((ContextSensitiveBindingVisitor<T, V>)visitor).visit(this); } else { return visitor.visit(binding); } }
@SuppressWarnings("unchecked") // B must be Lazy<T> @Override public <B, V> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof LazyBindingVisitor) { return ((LazyBindingVisitor<T, V>)visitor).visit(this); } else { return visitor.visit(binding); } }
@Override public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof ServletModuleTargetVisitor) { if (servletInstance != null) { return ((ServletModuleTargetVisitor<B, V>) visitor) .visit(new InstanceServletBindingImpl(initParams, servletInstance, patternMatcher)); } else { return ((ServletModuleTargetVisitor<B, V>) visitor) .visit(new LinkedServletBindingImpl(initParams, servletKey, patternMatcher)); } } else { return visitor.visit(binding); } }
@Override public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof ServletModuleTargetVisitor) { if (filterInstance != null) { return ((ServletModuleTargetVisitor<B, V>) visitor) .visit(new InstanceFilterBindingImpl(initParams, filterInstance, patternMatcher)); } else { return ((ServletModuleTargetVisitor<B, V>) visitor) .visit(new LinkedFilterBindingImpl(initParams, filterKey, patternMatcher)); } } else { return visitor.visit(binding); } }
@Override @SuppressWarnings("unchecked") public <T, V> V acceptExtensionVisitor( BindingTargetVisitor<T, V> visitor, ProviderInstanceBinding<? extends T> binding) { if (visitor instanceof AssistedInjectTargetVisitor) { return ((AssistedInjectTargetVisitor<T, V>) visitor).visit((AssistedInjectBinding<T>) this); } return visitor.visit(binding); }
@SuppressWarnings("unchecked") @Override public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor<Set<T>, V>) visitor).visit(this); } else { return visitor.visit(binding); } }
@Override @SuppressWarnings("unchecked") // the extension type is always consistent with the provider type public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) { if (providerInstance instanceof ProviderWithExtensionVisitor) { return ((ProviderWithExtensionVisitor<? extends T>) providerInstance) .acceptExtensionVisitor(visitor, this); } else { return visitor.visit(this); } }
@SuppressWarnings("unchecked") @Override public Object acceptExtensionVisitor( BindingTargetVisitor visitor, ProviderInstanceBinding binding) { if (visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor) visitor).visit(this); } else { return visitor.visit(binding); } }
@SuppressWarnings("unchecked") @Override public <B, R> R acceptExtensionVisitor( BindingTargetVisitor<B, R> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor<Optional<T>, R>) visitor).visit(this); } else { return visitor.visit(binding); } }
@Override @SuppressWarnings("unchecked") public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof ProvidesMethodTargetVisitor) { return ((ProvidesMethodTargetVisitor<T, V>) visitor).visit(this); } return visitor.visit(binding); }
@Override @SuppressWarnings("unchecked") public <B, W> W acceptExtensionVisitor( BindingTargetVisitor<B, W> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor<Map<K, V>, W>) visitor).visit(this); } else { return visitor.visit(binding); } }
@SuppressWarnings("unchecked") public <T, V> V acceptExtensionVisitor(BindingTargetVisitor<T, V> visitor, ProviderInstanceBinding<? extends T> binding) { if (visitor instanceof AssistedInjectTargetVisitor) { return ((AssistedInjectTargetVisitor<T, V>)visitor).visit((AssistedInjectBinding<T>)this); } return visitor.visit(binding); }
@SuppressWarnings("unchecked") public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor<Set<T>, V>) visitor).visit(this); } else { return visitor.visit(binding); } }
@SuppressWarnings("unchecked") public <B, R> R acceptExtensionVisitor(BindingTargetVisitor<B, R> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor<Optional<T>, R>) visitor).visit(this); } else { return visitor.visit(binding); } }
@SuppressWarnings("unchecked") // the extension type is always consistent with the provider type public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) { if(providerInstance instanceof ProviderWithExtensionVisitor) { return ((ProviderWithExtensionVisitor<? extends T>) providerInstance) .acceptExtensionVisitor(visitor, this); } else { return visitor.visit(this); } }
@SuppressWarnings("unchecked") public <B, V> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if (visitor instanceof ProvidesMethodTargetVisitor) { return ((ProvidesMethodTargetVisitor<T, V>)visitor).visit(this); } return visitor.visit(binding); }
@SuppressWarnings("unchecked") public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { if(visitor instanceof MultibindingsTargetVisitor) { return ((MultibindingsTargetVisitor<Set<T>, V>)visitor).visit(this); } else { return visitor.visit(binding); } }
private Module getBindings(LogInject<_Logger_> logInject, Class<_Logger_> loggerClass) { TypeLiteral<_Logger_> loggerType = TypeLiteral.get(loggerClass); GuiceLoggerProvider<_Logger_> provider = new GuiceLoggerProvider<>(); Predicate<Dependency<?>> matchesLogger = dependency -> loggerType.equals(dependency.getKey().getTypeLiteral()); return new AbstractModule() { @Override protected void configure() { ProvisionListener provisionListener = new ProvisionListener() { @Override public <_Target_> void onProvision(ProvisionInvocation<_Target_> provision) { Binding<_Target_> binding = provision.getBinding(); if (loggerType.equals(binding.getKey().getTypeLiteral())) { Dependency<?> loggerDependency; Stream<Dependency<?>> stream; stream = provision.getDependencyChain().stream().map(DependencyAndSource::getDependency); Iterator<Dependency<?>> dependencies = reverse(stream.collect(toList())).iterator(); if (dependencies.hasNext() && matchesLogger.test(loggerDependency = dependencies.next())) { InjectionPoint injectionPoint = loggerDependency.getInjectionPoint(); TypeLiteral<?> declaringType = injectionPoint.getDeclaringType(); TypeLiteral<?> targetType = null; if (dependencies.hasNext()) { TypeLiteral<?> typeLiteral = dependencies.next().getKey().getTypeLiteral(); if (declaringType.getRawType().isAssignableFrom(typeLiteral.getRawType())) { targetType = typeLiteral; } } Class<?> logger = (targetType != null? targetType:declaringType).getRawType(); BindingTargetVisitor<_Target_, Void> bindingTargetVisitor; bindingTargetVisitor = new DefaultBindingTargetVisitor<_Target_, Void>() { @Override public Void visit(ProviderInstanceBinding<? extends _Target_> instanceBinding) { if (provider.equals(instanceBinding.getUserSuppliedProvider())) { provider.setLogger(logInject.createLogger(logger)); } return null; } }; binding.acceptTargetVisitor(bindingTargetVisitor); } } } }; bind(loggerClass).toProvider(provider); bindListener(Matchers.any(), provisionListener); } }; }
@Override public <B, V> V acceptExtensionVisitor( BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) { return visitor.visit(binding); }
@Override public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) { return visitor.visit(this); }
@Override public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) { checkState(factory.constructorInjector != null, "not initialized"); return visitor.visit(this); }
@Override public <V> V acceptTargetVisitor(BindingTargetVisitor<? super Provider<T>, V> visitor) { return visitor.visit(this); }
public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) { return visitor.visit(this); }