diff --git a/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java b/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java index 51a5e3927..d2cdf8e0c 100644 --- a/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java +++ b/osgi-bundles/libs/killbill/src/main/java/org/killbill/billing/osgi/libs/killbill/KillbillActivatorBase.java @@ -28,6 +28,7 @@ import org.killbill.billing.osgi.api.OSGIKillbillRegistrar; import org.killbill.billing.osgi.api.config.PluginConfig; import org.killbill.billing.osgi.api.config.PluginConfigServiceApi; +import org.killbill.commons.health.api.HealthCheckRegistry; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.slf4j.Logger; @@ -55,6 +56,8 @@ public abstract class KillbillActivatorBase implements BundleActivator { protected OSGIConfigPropertiesService configProperties; protected OSGIMetricRegistry metricRegistry; + protected HealthCheckRegistry healthCheckRegistry; + protected File tmpDir = null; private ScheduledFuture restartFuture = null; @@ -73,6 +76,7 @@ public void start(final BundleContext context) throws Exception { configProperties = new OSGIConfigPropertiesService(context); clock = new OSGIKillbillClock(context); metricRegistry = new OSGIMetricRegistry(context); + healthCheckRegistry = context.getServiceReference(HealthCheckRegistry.class) != null ? context.getService(context.getServiceReference(HealthCheckRegistry.class)) : null; // Registrar for bundle registrar = new OSGIKillbillRegistrar(); diff --git a/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java b/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java index 4b9a3964a..de1ea244b 100644 --- a/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java +++ b/osgi/src/main/java/org/killbill/billing/osgi/KillbillActivator.java @@ -55,6 +55,7 @@ import org.killbill.billing.platform.jndi.JNDIManager; import org.killbill.billing.usage.plugin.api.UsagePluginApi; import org.killbill.clock.Clock; +import org.killbill.commons.health.api.HealthCheckRegistry; import org.killbill.commons.metrics.api.MetricRegistry; import org.osgi.framework.AllServiceListener; import org.osgi.framework.BundleActivator; @@ -95,6 +96,8 @@ public class KillbillActivator implements BundleActivator, AllServiceListener { private ServiceTracker logTracker; private OSGIAppender osgiAppender = null; + private HealthCheckRegistry healthCheckRegistry; + @Inject public KillbillActivator(@Named(DefaultOSGIModule.OSGI_DATA_SOURCE_ID) final DataSource dataSource, final OSGIKillbill osgiKillbill, @@ -105,6 +108,7 @@ public KillbillActivator(@Named(DefaultOSGIModule.OSGI_DATA_SOURCE_ID) final Dat final KillbillEventObservable observable, final OSGIConfigProperties configProperties, final MetricRegistry metricsRegistry, + final HealthCheckRegistry healthCheckRegistry, final JNDIManager jndiManager) { this.osgiKillbill = osgiKillbill; this.bundleRegistry = bundleRegistry; @@ -116,6 +120,7 @@ public KillbillActivator(@Named(DefaultOSGIModule.OSGI_DATA_SOURCE_ID) final Dat this.configProperties = configProperties; this.jndiManager = jndiManager; this.metricsRegistry = metricsRegistry; + this.healthCheckRegistry = healthCheckRegistry; this.registrar = new OSGIKillbillRegistrar(); this.allRegistrationHandlers = new LinkedList(); } @@ -209,6 +214,7 @@ public void start(final BundleContext context) throws Exception { registrar.registerService(context, OSGIConfigProperties.class, configProperties, props); registrar.registerService(context, Clock.class, clock, props); registrar.registerService(context, MetricRegistry.class, metricsRegistry, props); + registrar.registerService(context, HealthCheckRegistry.class, healthCheckRegistry, props); context.addServiceListener(this); diff --git a/platform-api/pom.xml b/platform-api/pom.xml index b3ba6fc59..37566ea2d 100644 --- a/platform-api/pom.xml +++ b/platform-api/pom.xml @@ -28,5 +28,5 @@ killbill-platform-api jar killbill-platform-api - + diff --git a/platform-test/pom.xml b/platform-test/pom.xml index 1574bd516..f83e2064a 100644 --- a/platform-test/pom.xml +++ b/platform-test/pom.xml @@ -278,8 +278,8 @@ initialize - - + + diff --git a/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java b/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java index a241449c1..b9893f601 100644 --- a/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java +++ b/platform-test/src/test/java/org/killbill/billing/beatrix/integration/osgi/glue/TestIntegrationModule.java @@ -20,6 +20,7 @@ package org.killbill.billing.beatrix.integration.osgi.glue; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -60,7 +61,9 @@ import org.killbill.billing.util.api.TagUserApi; import org.killbill.clock.Clock; import org.killbill.clock.ClockMock; +import org.killbill.commons.health.api.HealthCheck; import org.killbill.commons.health.api.HealthCheckRegistry; +import org.killbill.commons.health.api.Result; import org.killbill.commons.metrics.api.MetricRegistry; import org.killbill.commons.metrics.impl.NoOpMetricRegistry; @@ -78,7 +81,7 @@ protected void configure() { install(new TestPlatformModuleWithEmbeddedDB(configSource, true, (TestKillbillConfigSource) configSource)); bind(MetricRegistry.class).to(NoOpMetricRegistry.class); - bind(HealthCheckRegistry.class).toProvider(Providers.of(null)); + bind(HealthCheckRegistry.class).to(TestHealthCheckRegistry.class); bind(Clock.class).to(ClockMock.class); // Make sure we have a unique clock if one requests ClockMock explicitly bind(ClockMock.class).asEagerSingleton(); @@ -195,4 +198,22 @@ public T getService() { return this.pluginsByName.values().stream().findFirst().orElse(null); } } + + static final class TestHealthCheckRegistry implements HealthCheckRegistry { + + @Override + public Set getNames() { + return null; + } + + @Override + public Result runHealthCheck(final String name) throws NoSuchElementException { + return null; + } + + @Override + public void register(final String name, final HealthCheck healthCheck) { + + } + } }