Search in sources :

Example 1 with METHOD

use of java.lang.annotation.ElementType.METHOD 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