package com.englishtown.vertx.jersey.integration;
import com.englishtown.promises.Promise;
import com.englishtown.vertx.guice.GuiceVertxBinder;
import com.englishtown.vertx.guice.WhenGuiceJerseyBinder;
import com.englishtown.vertx.jersey.JerseyVerticle;
import com.englishtown.vertx.promises.guice.GuiceWhenBinder;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import io.vertx.core.Vertx;
import java.util.Arrays;
import java.util.List;
/**
* Guice implementation of {@link TestServiceLocator}
*/
public class GuiceTestServiceLocator implements TestServiceLocator {
protected Injector injector;
@Override
public void init(Vertx vertx) {
injector = Guice.createInjector(getModules(vertx));
}
protected List<Module> getModules(Vertx vertx) {
return Arrays.asList(
new GuiceVertxBinder(vertx),
new WhenGuiceJerseyBinder(),
new GuiceWhenBinder());
}
@Override
public void tearDown() {
injector = null;
}
@Override
public <T> T getService(Class<T> clazz) {
return injector.getInstance(clazz);
}
@Override
public Promise<String> deployJerseyVerticle() {
return deployJerseyVerticle("java-guice:" + JerseyVerticle.class.getName());
}
}