package inject; import com.google.inject.Provider; import io.sphere.sdk.client.PlayJavaSphereClient; import io.sphere.sdk.client.SphereClient; import play.Logger; import play.inject.ApplicationLifecycle; import play.libs.F; import javax.inject.Inject; public class PlayJavaSphereClientProvider implements Provider<PlayJavaSphereClient> { private final ApplicationLifecycle applicationLifecycle; private final SphereClient sphereClient; @Inject public PlayJavaSphereClientProvider(final ApplicationLifecycle applicationLifecycle, final SphereClient sphereClient) { this.applicationLifecycle = applicationLifecycle; this.sphereClient = sphereClient; } @Override public PlayJavaSphereClient get() { Logger.debug("Provide PlayJavaSphereClient"); final PlayJavaSphereClient playJavaSphereClient = PlayJavaSphereClient.of(sphereClient); applicationLifecycle.addStopHook(() -> F.Promise.promise(() -> { playJavaSphereClient.close(); return null; }) ); return playJavaSphereClient; } }