/* * Copyright 2022 Anton Tananaev (anton@traccar.org) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.traccar.web; import com.google.inject.Injector; import org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager; import org.glassfish.jersey.server.spi.Container; import org.glassfish.jersey.server.spi.ContainerLifecycleListener; import org.jvnet.hk2.guice.bridge.api.GuiceBridge; import org.jvnet.hk2.guice.bridge.api.GuiceIntoHK2Bridge; public class GuiceBridgeInitializer implements ContainerLifecycleListener { private final Injector injector; public GuiceBridgeInitializer(Injector injector) { this.injector = injector; } @Override public void onStartup(Container container) { var injectionManager = container.getApplicationHandler().getInjectionManager(); var serviceLocator = ((ImmediateHk2InjectionManager) injectionManager).getServiceLocator(); GuiceBridge.getGuiceBridge().initializeGuiceBridge(serviceLocator); var guiceBridge = serviceLocator.getService(GuiceIntoHK2Bridge.class); guiceBridge.bridgeGuiceInjector(injector); } @Override public void onReload(Container container) { } @Override public void onShutdown(Container container) { } }