use of com.google.inject.AbstractModule in project guice by google.
the class ModuleAnnotatedMethodScannerTest method testChildInjectorInheritsScanner.
public void testChildInjectorInheritsScanner() {
Injector parent = Guice.createInjector(NamedMunger.module());
Injector child = parent.createChildInjector(new AbstractModule() {
@Override
protected void configure() {
}
@TestProvides
@Named("foo")
String foo() {
return "foo";
}
});
assertMungedBinding(child, String.class, "foo", "foo");
}
use of com.google.inject.AbstractModule in project guice by google.
the class OverrideModuleTest method testOverrideWhatGetProviderProvided.
public void testOverrideWhatGetProviderProvided() {
Module original = new AbstractModule() {
@Override
protected void configure() {
bind(String.class).toInstance("A");
bind(key2).toProvider(getProvider(String.class));
}
};
Module replacements = newModule("B");
Injector injector = createInjector(Modules.override(original).with(replacements));
assertEquals("B", injector.getInstance(String.class));
assertEquals("B", injector.getInstance(key2));
}
use of com.google.inject.AbstractModule in project guice by google.
the class OverrideModuleTest method testOverrideModuleAndPrivateModule.
public void testOverrideModuleAndPrivateModule() {
Module exposes5 = new PrivateModule() {
@Override
protected void configure() {
bind(Integer.class).toInstance(5);
expose(Integer.class);
}
};
Module binds15 = new AbstractModule() {
@Override
protected void configure() {
bind(Integer.class).toInstance(15);
}
};
Injector injector = Guice.createInjector(Modules.override(exposes5).with(binds15));
assertEquals(15, injector.getInstance(Integer.class).intValue());
Injector reverse = Guice.createInjector(Modules.override(binds15).with(exposes5));
assertEquals(5, reverse.getInstance(Integer.class).intValue());
}
use of com.google.inject.AbstractModule in project guice by google.
the class OverrideModuleTest method testFailsIfOverridenScopeInstanceHasBeenUsed.
public void testFailsIfOverridenScopeInstanceHasBeenUsed() {
final Scope scope = new Scope() {
@Override
public <T> Provider<T> scope(Key<T> key, Provider<T> unscoped) {
return unscoped;
}
@Override
public String toString() {
return "ORIGINAL SCOPE";
}
};
final Module original = new AbstractModule() {
@Override
protected void configure() {
bindScope(TestScopeAnnotation.class, scope);
bind(Date.class).in(scope);
bind(String.class).in(scope);
}
};
Module originalWrapper = new AbstractModule() {
@Override
protected void configure() {
install(original);
}
};
Module replacements = new AbstractModule() {
@Override
protected void configure() {
bindScope(TestScopeAnnotation.class, new SingleUseScope());
}
};
try {
createInjector(Modules.override(originalWrapper).with(replacements));
fail("Exception expected");
} catch (CreationException e) {
assertContains(e.getMessage(), "1) The scope for @TestScopeAnnotation is bound directly and cannot be overridden.", "original binding at " + original.getClass().getName() + ".configure(", asModuleChain(originalWrapper.getClass(), original.getClass()), "bound directly at " + original.getClass().getName() + ".configure(", asModuleChain(originalWrapper.getClass(), original.getClass()), "bound directly at " + original.getClass().getName() + ".configure(", asModuleChain(originalWrapper.getClass(), original.getClass()), "at ", replacements.getClass().getName() + ".configure(", asModuleChain(Modules.OverrideModule.class, replacements.getClass()));
}
}
use of com.google.inject.AbstractModule in project guice by google.
the class OverrideModuleTest method testOverridePrivateModuleOverPrivateModule.
public void testOverridePrivateModuleOverPrivateModule() {
Module exposes5and6 = new AbstractModule() {
@Override
protected void configure() {
install(new PrivateModule() {
@Override
protected void configure() {
bind(Integer.class).toInstance(5);
expose(Integer.class);
bind(Character.class).toInstance('E');
}
});
install(new PrivateModule() {
@Override
protected void configure() {
bind(Long.class).toInstance(6L);
expose(Long.class);
bind(Character.class).toInstance('F');
}
});
}
};
AbstractModule exposes15 = new AbstractModule() {
@Override
protected void configure() {
install(new PrivateModule() {
@Override
protected void configure() {
bind(Integer.class).toInstance(15);
expose(Integer.class);
bind(Character.class).toInstance('G');
}
});
install(new PrivateModule() {
@Override
protected void configure() {
bind(Character.class).toInstance('H');
}
});
}
};
// override forwards
Injector injector = Guice.createInjector(Modules.override(exposes5and6).with(exposes15));
assertEquals(15, injector.getInstance(Integer.class).intValue());
assertEquals(6L, injector.getInstance(Long.class).longValue());
// and in reverse order
Injector reverse = Guice.createInjector(Modules.override(exposes15).with(exposes5and6));
assertEquals(5, reverse.getInstance(Integer.class).intValue());
assertEquals(6L, reverse.getInstance(Long.class).longValue());
}
Aggregations