Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<parent>
<groupId>org.kill-bill.billing</groupId>
<artifactId>killbill-oss-parent</artifactId>
<version>0.146.30</version>
<version>0.146.51-SNAPSHOT</version>
</parent>
<groupId>org.kill-bill.billing.plugin.java</groupId>
<artifactId>hello-world-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {

Expand All @@ -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<InvoiceFormatterFactory, InvoiceFormatterFactory> 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)
Expand All @@ -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)
Expand All @@ -99,6 +105,7 @@ public void start(final BundleContext context) throws Exception {
registerServlet(context, httpServlet);

registerHandlers();
// HealthCheck aviateHealthCheck = hea
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -50,9 +58,12 @@ public class HelloWorldListener implements OSGIKillbillEventDispatcher.OSGIKillb

private final Properties configProperties;

public HelloWorldListener(final OSGIKillbillAPI killbillAPI, final ServiceTracker<InvoiceFormatterFactory, InvoiceFormatterFactory> invoiceFormatterTracker, Properties configProperties) {
private final HealthCheckRegistry healthCheckRegistry;

public HelloWorldListener(final OSGIKillbillAPI killbillAPI, final ServiceTracker<InvoiceFormatterFactory, InvoiceFormatterFactory> invoiceFormatterTracker, final HealthCheckRegistry healthCheckRegistry, final Properties configProperties) {
this.osgiKillbillAPI = killbillAPI;
this.invoiceFormatterTracker = invoiceFormatterTracker;
this.healthCheckRegistry = healthCheckRegistry;
this.configProperties = configProperties;
}

Expand All @@ -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
Expand All @@ -78,7 +90,27 @@ public void handleKillbillEvent(final ExtBusEvent killbillEvent) {
} catch (final AccountApiException e) {
logger.warn("Unable to find account", e);
}
final Set<String> 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<String, Object> pluginHealthDetails = result.getDetails();
for(Entry<String, Object> entry: pluginHealthDetails.entrySet()) {
String pluginKey = entry.getKey();
Map<Object, Object> 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<SubscriptionEvent> events = subscription.getSubscriptionEvents();
logger.info("events:"+events);
} catch (SubscriptionApiException e) {
throw new RuntimeException(e);
}
case INVOICE_CREATION:

final Account account;
Expand Down
Loading