diff --git a/.idea/misc.xml b/.idea/misc.xml index c1d5038..8dc5c6c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,6 @@ + diff --git a/pom.xml b/pom.xml index 63177f5..d9f9b95 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.kill-bill.billing killbill-oss-parent - 0.146.30 + 0.146.51-SNAPSHOT org.kill-bill.billing.plugin.java hello-world-plugin diff --git a/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldActivator.java b/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldActivator.java index 1f3ca97..4ecaa5e 100644 --- a/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldActivator.java +++ b/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldActivator.java @@ -25,6 +25,7 @@ import javax.servlet.Servlet; import javax.servlet.http.HttpServlet; +import org.killbill.billing.invoice.plugin.api.InvoiceFormatterFactory; import org.killbill.billing.invoice.plugin.api.InvoicePluginApi; import org.killbill.billing.osgi.api.Healthcheck; import org.killbill.billing.osgi.api.OSGIPluginProperties; @@ -36,9 +37,12 @@ import org.killbill.billing.plugin.core.config.PluginEnvironmentConfig; import org.killbill.billing.plugin.core.resources.jooby.PluginApp; import org.killbill.billing.plugin.core.resources.jooby.PluginAppBuilder; +import org.killbill.commons.health.api.HealthCheckRegistry; import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTracker; -import org.killbill.billing.invoice.plugin.api.InvoiceFormatterFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class HelloWorldActivator extends KillbillActivatorBase { @@ -48,16 +52,18 @@ public class HelloWorldActivator extends KillbillActivatorBase { // public static final String PLUGIN_NAME = "hello-world-plugin"; + private static final Logger logger = LoggerFactory.getLogger(HelloWorldActivator.class); + private HelloWorldConfigurationHandler helloWorldConfigurationHandler; private OSGIKillbillEventDispatcher.OSGIKillbillEventHandler killbillEventHandler; private MetricsGeneratorExample metricsGenerator; private ServiceTracker invoiceFormatterTracker; + @Override public void start(final BundleContext context) throws Exception { super.start(context); - final String region = PluginEnvironmentConfig.getRegion(configProperties.getProperties()); // Register an event listener for plugin configuration (optional) @@ -72,7 +78,7 @@ public void start(final BundleContext context) throws Exception { // Register an event listener (optional) - killbillEventHandler = new HelloWorldListener(killbillAPI, invoiceFormatterTracker, configProperties.getProperties()); + killbillEventHandler = new HelloWorldListener(killbillAPI, invoiceFormatterTracker, healthCheckRegistry, configProperties.getProperties()); // As an example, this plugin registers a PaymentPluginApi (this could be // changed to any other plugin api) @@ -99,6 +105,7 @@ public void start(final BundleContext context) throws Exception { registerServlet(context, httpServlet); registerHandlers(); + // HealthCheck aviateHealthCheck = hea } @Override diff --git a/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldListener.java b/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldListener.java index fe2864a..87fdf18 100644 --- a/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldListener.java +++ b/src/main/java/org/killbill/billing/plugin/helloworld/HelloWorldListener.java @@ -21,11 +21,17 @@ import java.util.List; import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; import java.util.Properties; +import java.util.Set; +import java.util.UUID; -import org.joda.time.LocalDate; import org.killbill.billing.account.api.Account; import org.killbill.billing.account.api.AccountApiException; +import org.killbill.billing.entitlement.api.Subscription; +import org.killbill.billing.entitlement.api.SubscriptionApiException; +import org.killbill.billing.entitlement.api.SubscriptionEvent; import org.killbill.billing.invoice.api.Invoice; import org.killbill.billing.invoice.api.InvoiceItem; import org.killbill.billing.invoice.api.formatters.InvoiceFormatter; @@ -36,6 +42,8 @@ import org.killbill.billing.osgi.libs.killbill.OSGIKillbillEventDispatcher; import org.killbill.billing.plugin.api.PluginTenantContext; import org.killbill.billing.util.callcontext.TenantContext; +import org.killbill.commons.health.api.HealthCheckRegistry; +import org.killbill.commons.health.api.Result; import org.osgi.util.tracker.ServiceTracker; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,9 +58,12 @@ public class HelloWorldListener implements OSGIKillbillEventDispatcher.OSGIKillb private final Properties configProperties; - public HelloWorldListener(final OSGIKillbillAPI killbillAPI, final ServiceTracker invoiceFormatterTracker, Properties configProperties) { + private final HealthCheckRegistry healthCheckRegistry; + + public HelloWorldListener(final OSGIKillbillAPI killbillAPI, final ServiceTracker invoiceFormatterTracker, final HealthCheckRegistry healthCheckRegistry, final Properties configProperties) { this.osgiKillbillAPI = killbillAPI; this.invoiceFormatterTracker = invoiceFormatterTracker; + this.healthCheckRegistry = healthCheckRegistry; this.configProperties = configProperties; } @@ -66,6 +77,7 @@ public void handleKillbillEvent(final ExtBusEvent killbillEvent) { killbillEvent.getObjectType()); final TenantContext context = new PluginTenantContext(killbillEvent.getAccountId(), killbillEvent.getTenantId()); + // HealthCheck aviateHealthCheck = hea switch (killbillEvent.getEventType()) { // // Handle ACCOUNT_CREATION and ACCOUNT_CHANGE only for demo purpose and just print the account @@ -78,7 +90,27 @@ public void handleKillbillEvent(final ExtBusEvent killbillEvent) { } catch (final AccountApiException e) { logger.warn("Unable to find account", e); } + final Set names = healthCheckRegistry.getNames(); + logger.info("names {}", names); + Result result = healthCheckRegistry.runHealthCheck("org.killbill.billing.server.healthchecks.KillbillHealthcheck"); + logger.info("KB healthcheck result: {}", result.isHealthy()); + result = healthCheckRegistry.runHealthCheck("org.killbill.billing.server.healthchecks.KillbillPluginsHealthcheck"); + logger.info("Plugins healthcheck result: {}", result.isHealthy()); + Map pluginHealthDetails = result.getDetails(); + for(Entry entry: pluginHealthDetails.entrySet()) { + String pluginKey = entry.getKey(); + Map pluginDetails = (Map)entry.getValue(); + logger.info("Plugin {}, Details {}", entry.getKey(), entry.getValue()); + } break; + case SUBSCRIPTION_CREATION: + try { + Subscription subscription = osgiKillbillAPI.getSubscriptionApi().getSubscriptionForEntitlementId(killbillEvent.getObjectId(), true, context); + List events = subscription.getSubscriptionEvents(); + logger.info("events:"+events); + } catch (SubscriptionApiException e) { + throw new RuntimeException(e); + } case INVOICE_CREATION: final Account account;