package com.englishtown.vertx.jersey.integration;
import com.englishtown.promises.Promise;
import com.englishtown.vertx.hk2.HK2VertxBinder;
import com.englishtown.vertx.hk2.WhenHK2JerseyBinder;
import com.englishtown.vertx.jersey.JerseyVerticle;
import com.englishtown.vertx.promises.hk2.HK2WhenBinder;
import io.vertx.core.Vertx;
import org.glassfish.hk2.api.ServiceLocator;
import org.glassfish.hk2.utilities.ServiceLocatorUtilities;
/**
* HK2 implementation of {@link TestServiceLocator}
*/
public class HK2TestServiceLocator implements TestServiceLocator {
protected ServiceLocator locator;
@Override
public void init(Vertx vertx) {
locator = ServiceLocatorUtilities.bind(
new HK2VertxBinder(vertx),
new WhenHK2JerseyBinder(),
new HK2WhenBinder());
}
@Override
public void tearDown() {
if (locator != null) {
locator.shutdown();
locator = null;
}
}
@Override
public <T> T getService(Class<T> clazz) {
return locator.getService(clazz);
}
@Override
public Promise<String> deployJerseyVerticle() {
return deployJerseyVerticle("java-hk2:" + JerseyVerticle.class.getName());
}
}