@Override public void configure(Binder binder) { configBinder(binder).bindConfig(DriftNettyConnectionFactoryConfig.class); configBinder(binder).bindConfigurationBindingListener((binding, configBinder) -> { if (binding.getConfigClass().equals(DriftClientConfig.class)) { configBinder.bindConfig(DriftNettyClientConfig.class, binding.getKey().getAnnotation(), binding.getPrefix().orElse(null)); } }); binder.bind(ByteBufAllocator.class).toInstance(allocator); binder.bind(new TypeLiteral<MethodInvokerFactory<Annotation>>() {}) .toProvider(MethodInvokerFactoryProvider.class) .in(Scopes.SINGLETON); }
@Override public void configure(Binder binder) { configBinder(binder).bindConfig(DriftNettyConnectionFactoryConfig.class); configBinder(binder).bindConfigurationBindingListener((binding, configBinder) -> { if (binding.getConfigClass().equals(DriftClientConfig.class)) { configBinder.bindConfig(DriftNettyClientConfig.class, binding.getKey().getAnnotation(), binding.getPrefix().orElse(null)); } }); binder.bind(ByteBufAllocator.class).toInstance(allocator); binder.bind(new TypeLiteral<MethodInvokerFactory<Annotation>>() {}) .toProvider(MethodInvokerFactoryProvider.class) .in(Scopes.SINGLETON); }
@Override public void configure(Binder binder) { configBinder(binder).bindConfig(ApacheThriftConnectionFactoryConfig.class); configBinder(binder).bindConfigurationBindingListener(ApacheThriftClientModule::bindApacheThriftClientConfig); }
@Override public void configure(Binder binder) { configBinder(binder).bindConfig(ApacheThriftConnectionFactoryConfig.class); configBinder(binder).bindConfigurationBindingListener(ApacheThriftClientModule::bindApacheThriftClientConfig); }
@Test public void testConfigurationBindingListener() { List<ConfigurationBinding<?>> seenBindings = new ArrayList<>(); Module module = binder -> { ConfigBinder configBinder = configBinder(binder); configBinder.bindConfig(AnotherConfig.class); configBinder.bindConfigurationBindingListener((configurationBinding, callbackConfigBinder) -> { seenBindings.add(configurationBinding); callbackConfigBinder.bindConfig(Config1.class); callbackConfigBinder.bindConfig(Config1.class, MyAnnotation.class); }); }; Injector injector = createInjector(properties, module); verifyConfig(injector.getInstance(Config1.class)); verifyConfig(injector.getInstance(Key.get(Config1.class, MyAnnotation.class))); assertEquals(seenBindings.size(), 3); assertEquals( ImmutableSet.copyOf(seenBindings), ImmutableSet.of( new ConfigurationBinding<>(Key.get(Config1.class), Config1.class, Optional.empty()), new ConfigurationBinding<>(Key.get(Config1.class, MyAnnotation.class), Config1.class, Optional.empty()), new ConfigurationBinding<>(Key.get(AnotherConfig.class), AnotherConfig.class, Optional.empty()))); }
@Test public void testConfigurationBindingListener() { List<ConfigurationBinding<?>> seenBindings = new ArrayList<>(); Module module = binder -> { ConfigBinder configBinder = configBinder(binder); configBinder.bindConfig(AnotherConfig.class); configBinder.bindConfigurationBindingListener((configurationBinding, callbackConfigBinder) -> { seenBindings.add(configurationBinding); callbackConfigBinder.bindConfig(Config1.class); callbackConfigBinder.bindConfig(Config1.class, MyAnnotation.class); }); }; Injector injector = createInjector(properties, module); verifyConfig(injector.getInstance(Config1.class)); verifyConfig(injector.getInstance(Key.get(Config1.class, MyAnnotation.class))); assertEquals(seenBindings.size(), 3); assertEquals( ImmutableSet.copyOf(seenBindings), ImmutableSet.of( new ConfigurationBinding<>(Key.get(Config1.class), Config1.class, Optional.empty()), new ConfigurationBinding<>(Key.get(Config1.class, MyAnnotation.class), Config1.class, Optional.empty()), new ConfigurationBinding<>(Key.get(AnotherConfig.class), AnotherConfig.class, Optional.empty()))); }