package org.jooby.issues;
import java.util.concurrent.atomic.AtomicReference;
import org.jooby.test.ServerFeature;
import org.junit.Assert;
import org.junit.Test;
import com.google.inject.Guice;
import com.google.inject.Injector;
/**
* @author Johannes Schneider (<a href="mailto:js@cedarsoft.com">js@cedarsoft.com</a>)
*/
public class PullRequest583WithChildInjectorTest extends ServerFeature {
{
AtomicReference<Injector> ref = new AtomicReference<>();
Injector parentInjector = Guice.createInjector(
binder -> binder.bind(MyInjectedClass.class).toInstance(new MyInjectedClass()));
injector((stage, module) -> {
Injector injector = parentInjector.createChildInjector(module);
ref.set(injector);
return injector;
});
get("/583", () -> {
Injector injector = require(Injector.class);
Assert.assertSame(injector, ref.get());
Assert.assertSame(parentInjector.getInstance(MyInjectedClass.class),
injector.getInstance(MyInjectedClass.class));
return "OK";
});
}
@Test
public void childInjector() throws Exception {
request()
.get("/583")
.expect("OK");
}
private static class MyInjectedClass {
}
}