Search in sources :

Example 1 with Connector

use of se.jbee.inject.config.Connector in project silk by jbee.

the class TestFeatureConnectorBinds method injectingIntoCanBeUsedToLimitTheSetOfAffectedInstances.

@Test
void injectingIntoCanBeUsedToLimitTheSetOfAffectedInstances() {
    List<Object> acceptedInstances = new ArrayList<>();
    List<Method> acceptedMethods = new ArrayList<>();
    Connector verifier = (instance, as, method) -> {
        acceptedInstances.add(instance);
        acceptedMethods.add(method);
    };
    Env env = Bootstrap.DEFAULT_ENV.with(Connector.class, verifier);
    Injector context = Bootstrap.injector(env, TestFeatureConnectorBindsModule.class);
    Bean expected = context.resolve("marked", Bean.class);
    assertEquals("marked", expected.name);
    assertEquals("unmarked", context.resolve("unmarked", Bean.class).name);
    assertEquals(singletonList(expected), acceptedInstances);
    assertEquals(1, acceptedMethods.size());
    assertEquals("myMethod", acceptedMethods.get(0).getName());
}
Also used : Injector(se.jbee.inject.Injector) Hint(se.jbee.inject.Hint) Connector(se.jbee.inject.config.Connector) Target(java.lang.annotation.Target) RUNTIME(java.lang.annotation.RetentionPolicy.RUNTIME) Env(se.jbee.inject.Env) Retention(java.lang.annotation.Retention) ArrayList(java.util.ArrayList) Collections.singletonList(java.util.Collections.singletonList) Test(org.junit.jupiter.api.Test) METHOD(java.lang.annotation.ElementType.METHOD) Bootstrap(se.jbee.inject.bootstrap.Bootstrap) List(java.util.List) BinderModuleWith(se.jbee.inject.binder.BinderModuleWith) ProducesBy(se.jbee.inject.config.ProducesBy) Assertions(org.junit.jupiter.api.Assertions) Method(java.lang.reflect.Method) Name.named(se.jbee.inject.Name.named) Connector(se.jbee.inject.config.Connector) Injector(se.jbee.inject.Injector) ArrayList(java.util.ArrayList) Method(java.lang.reflect.Method) Env(se.jbee.inject.Env) Test(org.junit.jupiter.api.Test)

Aggregations

METHOD (java.lang.annotation.ElementType.METHOD)1 Retention (java.lang.annotation.Retention)1 RUNTIME (java.lang.annotation.RetentionPolicy.RUNTIME)1 Target (java.lang.annotation.Target)1 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 Collections.singletonList (java.util.Collections.singletonList)1 List (java.util.List)1 Assertions (org.junit.jupiter.api.Assertions)1 Test (org.junit.jupiter.api.Test)1 Env (se.jbee.inject.Env)1 Hint (se.jbee.inject.Hint)1 Injector (se.jbee.inject.Injector)1 Name.named (se.jbee.inject.Name.named)1 BinderModuleWith (se.jbee.inject.binder.BinderModuleWith)1 Bootstrap (se.jbee.inject.bootstrap.Bootstrap)1 Connector (se.jbee.inject.config.Connector)1 ProducesBy (se.jbee.inject.config.ProducesBy)1