use of com.google.inject.Key in project guice by google.
the class TransferRequestIntegrationTest method testTransferNonHttpRequest_closeable.
public void testTransferNonHttpRequest_closeable() throws Exception {
final Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bindScope(RequestScoped.class, ServletScopes.REQUEST);
}
@Provides
@RequestScoped
Object provideObject() {
return new Object();
}
});
class Data {
Object object;
RequestScoper scoper;
}
Callable<Data> callable = new Callable<Data>() {
@Override
public Data call() {
Data data = new Data();
data.object = injector.getInstance(Object.class);
data.scoper = ServletScopes.transferRequest();
return data;
}
};
ImmutableMap<Key<?>, Object> seedMap = ImmutableMap.of();
Data data = ServletScopes.scopeRequest(callable, seedMap).call();
ExecutorService executor = Executors.newSingleThreadExecutor();
RequestScoper.CloseableScope scope = data.scoper.open();
try {
assertSame(data.object, injector.getInstance(Object.class));
} finally {
scope.close();
executor.shutdownNow();
}
}
use of com.google.inject.Key in project guice by google.
the class ThrowingProviderTest method testDependencies_Provides.
public void testDependencies_Provides() {
providesInjector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(String.class).toInstance("Foo");
bind(Integer.class).toInstance(5);
bind(Double.class).toInstance(5d);
bind(Long.class).toInstance(5L);
install(ThrowingProviderBinder.forModule(this));
}
@SuppressWarnings("unused")
@CheckedProvides(RemoteProvider.class)
String foo(String s, Integer i, Double d, Long l) {
return null;
}
});
HasDependencies hasDependencies = (HasDependencies) providesInjector.getBinding(Key.get(remoteProviderOfString));
// RemoteProvider<String> is dependent on the provider method..
hasDependencies = (HasDependencies) providesInjector.getBinding(Iterables.getOnlyElement(hasDependencies.getDependencies()).getKey());
// And the provider method has our real dependencies..
hasDependencies = (HasDependencies) providesInjector.getBinding(Iterables.getOnlyElement(hasDependencies.getDependencies()).getKey());
Set<Key<?>> dependencyKeys = ImmutableSet.copyOf(Iterables.transform(hasDependencies.getDependencies(), new Function<Dependency<?>, Key<?>>() {
@Override
public Key<?> apply(Dependency<?> from) {
return from.getKey();
}
}));
assertEquals(ImmutableSet.<Key<?>>of(Key.get(String.class), Key.get(Integer.class), Key.get(Long.class), Key.get(Double.class)), dependencyKeys);
}
use of com.google.inject.Key in project guice by google.
the class Java8LanguageFeatureBindingTest method testBinding_lambdaToInterface.
// Some of these tests are kind of weird.
// See https://github.com/google/guice/issues/757 for more on why they exist.
public void testBinding_lambdaToInterface() {
Injector injector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(new TypeLiteral<Predicate<Object>>() {
}).toInstance(o -> o != null);
}
});
Predicate<Object> predicate = injector.getInstance(new Key<Predicate<Object>>() {
});
assertTrue(predicate.test(new Object()));
assertFalse(predicate.test(null));
}
use of com.google.inject.Key in project guice by google.
the class ThrowingProviderTest method testDependencies_Bind.
public void testDependencies_Bind() {
bindInjector = Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(String.class).toInstance("Foo");
bind(Integer.class).toInstance(5);
bind(Double.class).toInstance(5d);
bind(Long.class).toInstance(5L);
ThrowingProviderBinder.create(binder()).bind(RemoteProvider.class, String.class).to(DependentRemoteProvider.class);
}
});
HasDependencies hasDependencies = (HasDependencies) bindInjector.getBinding(Key.get(remoteProviderOfString));
hasDependencies = (HasDependencies) bindInjector.getBinding(Iterables.getOnlyElement(hasDependencies.getDependencies()).getKey());
// Make sure that that is dependent on DependentRemoteProvider.
assertEquals(Dependency.get(Key.get(DependentRemoteProvider.class)), Iterables.getOnlyElement(hasDependencies.getDependencies()));
// And make sure DependentRemoteProvider has the proper dependencies.
hasDependencies = (HasDependencies) bindInjector.getBinding(DependentRemoteProvider.class);
Set<Key<?>> dependencyKeys = ImmutableSet.copyOf(Iterables.transform(hasDependencies.getDependencies(), new Function<Dependency<?>, Key<?>>() {
@Override
public Key<?> apply(Dependency<?> from) {
return from.getKey();
}
}));
assertEquals(ImmutableSet.<Key<?>>of(Key.get(String.class), Key.get(Integer.class), Key.get(Long.class), Key.get(Double.class)), dependencyKeys);
}
use of com.google.inject.Key in project guice by google.
the class BoundFieldModuleTest method testBindingWithGenerics.
public void testBindingWithGenerics() {
final List<Integer> testIntList = Arrays.asList(new Integer[] { 1, 2, 3 });
final List<Boolean> testBoolList = Arrays.asList(new Boolean[] { true, true, false });
Object instance = new Object() {
@Bind
private List<Integer> anIntList = testIntList;
@Bind
private List<Boolean> aBoolList = testBoolList;
};
BoundFieldModule module = BoundFieldModule.of(instance);
Injector injector = Guice.createInjector(module);
assertEquals(testIntList, injector.getInstance(new Key<List<Integer>>() {
}));
assertEquals(testBoolList, injector.getInstance(new Key<List<Boolean>>() {
}));
}
Aggregations