Search in sources :

Example 26 with Module

use of com.google.inject.Module in project druid by druid-io.

the class MetadataStorageTablesConfigTest method testSerdeMetadataStorageTablesConfig.

@Test
public void testSerdeMetadataStorageTablesConfig() throws Exception {
    Injector injector = Guice.createInjector(new Module() {

        @Override
        public void configure(Binder binder) {
            binder.install(new PropertiesModule(Arrays.asList("test.runtime.properties")));
            binder.install(new ConfigModule());
            binder.install(new DruidGuiceExtensions());
            JsonConfigProvider.bind(binder, "druid.metadata.storage.tables", MetadataStorageTablesConfig.class);
        }

        @Provides
        @LazySingleton
        public ObjectMapper jsonMapper() {
            return new DefaultObjectMapper();
        }
    });
    Properties props = injector.getInstance(Properties.class);
    MetadataStorageTablesConfig config = injector.getInstance(MetadataStorageTablesConfig.class);
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.base"), config.getBase());
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.segments"), config.getSegmentsTable());
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.rules"), config.getRulesTable());
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.config"), config.getConfigTable());
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.tasks"), config.getEntryTable(MetadataStorageTablesConfig.TASK_ENTRY_TYPE));
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.taskLog"), config.getLogTable(MetadataStorageTablesConfig.TASK_ENTRY_TYPE));
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.taskLock"), config.getLockTable(MetadataStorageTablesConfig.TASK_ENTRY_TYPE));
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.dataSource"), config.getDataSourceTable());
    Assert.assertEquals(props.getProperty("druid.metadata.storage.tables.supervisors"), config.getSupervisorTable());
}
Also used : Provides(com.google.inject.Provides) Properties(java.util.Properties) Binder(com.google.inject.Binder) MetadataStorageTablesConfig(io.druid.metadata.MetadataStorageTablesConfig) Injector(com.google.inject.Injector) DefaultObjectMapper(io.druid.jackson.DefaultObjectMapper) Module(com.google.inject.Module) DefaultObjectMapper(io.druid.jackson.DefaultObjectMapper) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 27 with Module

use of com.google.inject.Module in project che by eclipse.

the class CheBootstrap method getModules.

@Override
protected List<Module> getModules() {
    // based on logic that getServletModule() is called BEFORE getModules() in the EverrestGuiceContextListener
    modules.add(new InitModule(PostConstruct.class));
    modules.add(new DestroyModule(PreDestroy.class, LOG_HANDLER));
    modules.add(new URIConverter());
    modules.add(new URLConverter());
    modules.add(new FileConverter());
    modules.add(new PathConverter());
    modules.add(new StringArrayConverter());
    modules.add(new PairConverter());
    modules.add(new PairArrayConverter());
    modules.addAll(ModuleScanner.findModules());
    Map<String, Set<String>> aliases = readConfigurationAliases();
    Module firstConfigurationPermutation = Modules.override(new WebInfConfiguration(aliases)).with(new ExtConfiguration(aliases));
    Module secondConfigurationPermutation = Modules.override(firstConfigurationPermutation).with(new CheSystemPropertiesConfigurationModule(aliases));
    Module lastConfigurationPermutation = Modules.override(secondConfigurationPermutation).with(new CheEnvironmentVariablesConfigurationModule(aliases));
    modules.add(lastConfigurationPermutation);
    return modules;
}
Also used : DestroyModule(org.eclipse.che.inject.lifecycle.DestroyModule) Collectors.toSet(java.util.stream.Collectors.toSet) Set(java.util.Set) InitModule(org.eclipse.che.inject.lifecycle.InitModule) PreDestroy(javax.annotation.PreDestroy) Module(com.google.inject.Module) DestroyModule(org.eclipse.che.inject.lifecycle.DestroyModule) InitModule(org.eclipse.che.inject.lifecycle.InitModule) ServletModule(com.google.inject.servlet.ServletModule) AbstractModule(com.google.inject.AbstractModule) PostConstruct(javax.annotation.PostConstruct)

Example 28 with Module

use of com.google.inject.Module in project druid by druid-io.

the class PolyBindTest method testSanity.

@Test
public void testSanity() throws Exception {
    setUp(new Module() {

        @Override
        public void configure(Binder binder) {
            final MapBinder<String, Gogo> gogoBinder = PolyBind.optionBinder(binder, Key.get(Gogo.class));
            gogoBinder.addBinding("a").to(GoA.class);
            gogoBinder.addBinding("b").to(GoB.class);
            final MapBinder<String, GogoSally> gogoSallyBinder = PolyBind.optionBinder(binder, Key.get(GogoSally.class));
            gogoSallyBinder.addBinding("a").to(GoA.class);
            gogoSallyBinder.addBinding("b").to(GoB.class);
            PolyBind.createChoice(binder, "billy", Key.get(Gogo.class, Names.named("reverse")), Key.get(GoB.class));
            final MapBinder<String, Gogo> annotatedGogoBinder = PolyBind.optionBinder(binder, Key.get(Gogo.class, Names.named("reverse")));
            annotatedGogoBinder.addBinding("a").to(GoB.class);
            annotatedGogoBinder.addBinding("b").to(GoA.class);
        }
    });
    Assert.assertEquals("A", injector.getInstance(Gogo.class).go());
    Assert.assertEquals("B", injector.getInstance(Key.get(Gogo.class, Names.named("reverse"))).go());
    props.setProperty("billy", "b");
    Assert.assertEquals("B", injector.getInstance(Gogo.class).go());
    Assert.assertEquals("A", injector.getInstance(Key.get(Gogo.class, Names.named("reverse"))).go());
    props.setProperty("billy", "a");
    Assert.assertEquals("A", injector.getInstance(Gogo.class).go());
    Assert.assertEquals("B", injector.getInstance(Key.get(Gogo.class, Names.named("reverse"))).go());
    props.setProperty("billy", "b");
    Assert.assertEquals("B", injector.getInstance(Gogo.class).go());
    Assert.assertEquals("A", injector.getInstance(Key.get(Gogo.class, Names.named("reverse"))).go());
    props.setProperty("billy", "c");
    Assert.assertEquals("A", injector.getInstance(Gogo.class).go());
    Assert.assertEquals("B", injector.getInstance(Key.get(Gogo.class, Names.named("reverse"))).go());
    // test default property value
    Assert.assertEquals("B", injector.getInstance(GogoSally.class).go());
    props.setProperty("sally", "a");
    Assert.assertEquals("A", injector.getInstance(GogoSally.class).go());
    props.setProperty("sally", "b");
    Assert.assertEquals("B", injector.getInstance(GogoSally.class).go());
    props.setProperty("sally", "c");
    try {
        injector.getInstance(GogoSally.class).go();
        // should never be reached
        Assert.fail();
    } catch (Exception e) {
        Assert.assertTrue(e instanceof ProvisionException);
        Assert.assertTrue(e.getMessage().contains("Unknown provider[c] of Key[type=io.druid.guice.PolyBindTest$GogoSally"));
    }
}
Also used : Binder(com.google.inject.Binder) MapBinder(com.google.inject.multibindings.MapBinder) ProvisionException(com.google.inject.ProvisionException) MapBinder(com.google.inject.multibindings.MapBinder) Module(com.google.inject.Module) ProvisionException(com.google.inject.ProvisionException) Test(org.junit.Test)

Example 29 with Module

use of com.google.inject.Module in project druid by druid-io.

the class PolyBindTest method setUp.

public void setUp(Module... modules) throws Exception {
    props = new Properties();
    injector = Guice.createInjector(Iterables.concat(Arrays.asList(new Module() {

        @Override
        public void configure(Binder binder) {
            binder.bind(Properties.class).toInstance(props);
            PolyBind.createChoice(binder, "billy", Key.get(Gogo.class), Key.get(GoA.class));
            PolyBind.createChoiceWithDefault(binder, "sally", Key.get(GogoSally.class), null, "b");
        }
    }), Arrays.asList(modules)));
}
Also used : Binder(com.google.inject.Binder) MapBinder(com.google.inject.multibindings.MapBinder) Properties(java.util.Properties) Module(com.google.inject.Module)

Example 30 with Module

use of com.google.inject.Module in project druid by druid-io.

the class ConditionalMultibindTest method testMultiConditionalBind_cat_dog_non_continuous_syntax.

@Test
public void testMultiConditionalBind_cat_dog_non_continuous_syntax() {
    props.setProperty("animal.type", "pets");
    Injector injector = Guice.createInjector(new Module() {

        @Override
        public void configure(Binder binder) {
            ConditionalMultibind.create(props, binder, Animal.class).addConditionBinding(ANIMAL_TYPE, Predicates.equalTo("pets"), Cat.class);
            ConditionalMultibind.create(props, binder, Animal.class).addConditionBinding(ANIMAL_TYPE, Predicates.equalTo("pets"), Dog.class);
        }
    });
    Set<Animal> animalSet = injector.getInstance(Key.get(new TypeLiteral<Set<Animal>>() {
    }));
    Assert.assertEquals(2, animalSet.size());
    Assert.assertEquals(animalSet, ImmutableSet.<Animal>of(new Cat(), new Dog()));
}
Also used : Binder(com.google.inject.Binder) TypeLiteral(com.google.inject.TypeLiteral) Injector(com.google.inject.Injector) Module(com.google.inject.Module) Test(org.junit.Test)

Aggregations

Module (com.google.inject.Module)386 Injector (com.google.inject.Injector)253 AbstractModule (com.google.inject.AbstractModule)252 Binder (com.google.inject.Binder)63 Test (org.junit.Test)51 PrivateModule (com.google.inject.PrivateModule)46 Provider (com.google.inject.Provider)44 ArrayList (java.util.ArrayList)30 CreationException (com.google.inject.CreationException)26 Guice.createInjector (com.google.inject.Guice.createInjector)25 Map (java.util.Map)24 Properties (java.util.Properties)22 ImmutableList (com.google.common.collect.ImmutableList)20 HashMap (java.util.HashMap)20 HashSet (java.util.HashSet)20 Key (com.google.inject.Key)19 Set (java.util.Set)19 ImmutableSet (com.google.common.collect.ImmutableSet)18 Binding (com.google.inject.Binding)17 List (java.util.List)17