Search in sources :

Example 76 with Key

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();
    }
}
Also used : Provides(com.google.inject.Provides) Callable(java.util.concurrent.Callable) AbstractModule(com.google.inject.AbstractModule) Injector(com.google.inject.Injector) ExecutorService(java.util.concurrent.ExecutorService) Key(com.google.inject.Key)

Example 77 with Key

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);
}
Also used : Function(com.google.common.base.Function) Dependency(com.google.inject.spi.Dependency) HasDependencies(com.google.inject.spi.HasDependencies) Key(com.google.inject.Key) AbstractModule(com.google.inject.AbstractModule)

Example 78 with Key

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));
}
Also used : Predicate(java.util.function.Predicate) Inject(com.google.inject.Inject) Key(com.google.inject.Key) Callable(java.util.concurrent.Callable) UUID(java.util.UUID) Injector(com.google.inject.Injector) Provider(com.google.inject.Provider) CreationException(com.google.inject.CreationException) Provides(com.google.inject.Provides) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Guice(com.google.inject.Guice) ProvisionException(com.google.inject.ProvisionException) TestCase(junit.framework.TestCase) TypeLiteral(com.google.inject.TypeLiteral) Collections(java.util.Collections) AbstractModule(com.google.inject.AbstractModule) Injector(com.google.inject.Injector) AbstractModule(com.google.inject.AbstractModule) Predicate(java.util.function.Predicate)

Example 79 with Key

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);
}
Also used : Function(com.google.common.base.Function) Dependency(com.google.inject.spi.Dependency) HasDependencies(com.google.inject.spi.HasDependencies) Key(com.google.inject.Key) AbstractModule(com.google.inject.AbstractModule)

Example 80 with Key

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>>() {
    }));
}
Also used : Injector(com.google.inject.Injector) List(java.util.List) Key(com.google.inject.Key)

Aggregations

Key (com.google.inject.Key)105 AbstractModule (com.google.inject.AbstractModule)55 Injector (com.google.inject.Injector)51 Binding (com.google.inject.Binding)35 Module (com.google.inject.Module)19 Provider (com.google.inject.Provider)18 Element (com.google.inject.spi.Element)16 Map (java.util.Map)16 HasDependencies (com.google.inject.spi.HasDependencies)14 InstanceBinding (com.google.inject.spi.InstanceBinding)13 List (java.util.List)13 TypeLiteral (com.google.inject.TypeLiteral)12 LinkedKeyBinding (com.google.inject.spi.LinkedKeyBinding)10 ProviderInstanceBinding (com.google.inject.spi.ProviderInstanceBinding)9 PrivateModule (com.google.inject.PrivateModule)8 DefaultBindingTargetVisitor (com.google.inject.spi.DefaultBindingTargetVisitor)8 Dependency (com.google.inject.spi.Dependency)8 ProviderKeyBinding (com.google.inject.spi.ProviderKeyBinding)8 ImmutableList (com.google.common.collect.ImmutableList)7 InjectionPoint (com.google.inject.spi.InjectionPoint)7