package ru.vyarus.dropwizard.guice.module.jersey.hk2;
import com.google.inject.Injector;
import org.glassfish.hk2.api.ServiceLocator;
import org.jvnet.hk2.guice.bridge.api.GuiceBridge;
import org.jvnet.hk2.guice.bridge.api.GuiceIntoHK2Bridge;
/**
* Enables hk guice bridge to allow hk services to see guice beans. Bridge installation is enabled by
* {@link ru.vyarus.dropwizard.guice.GuiceyOptions#UseHkBridge} option.
* <p>
* Installation extracted to separate class to isolate bridge dependency usage: when bridge is enabled.
* extra 'org.glassfish.hk2:guice-bridge:2.5.0-b32' dependency is required.
*
* @author Vyacheslav Rusakov
* @since 26.03.2017
*/
public class GuiceBridgeActivator {
private final ServiceLocator locator;
private final Injector injector;
public GuiceBridgeActivator(final ServiceLocator locator, final Injector injector) {
this.locator = locator;
this.injector = injector;
}
/**
* Activate hk guice bridge.
*/
public void activate() {
GuiceBridge.getGuiceBridge().initializeGuiceBridge(locator);
final GuiceIntoHK2Bridge guiceBridge = locator.getService(GuiceIntoHK2Bridge.class);
guiceBridge.bridgeGuiceInjector(injector);
}
}