killbill-memoizeit
Changes
beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java 5(+5 -0)
invoice/src/main/java/org/killbill/billing/invoice/provider/NoOpInvoiceProviderPluginProvider.java 6(+6 -0)
payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentControlProviderPluginRegistryProvider.java 10(+10 -0)
payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentProviderPluginRegistryProvider.java 6(+6 -0)
payment/src/test/java/org/killbill/billing/payment/api/TestPaymentGatewayApiWithPaymentControl.java 10(+10 -0)
payment/src/test/java/org/killbill/billing/payment/provider/MockPaymentProviderPluginProvider.java 6(+6 -0)
pom.xml 2(+1 -1)
Details
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestPaymentWithControl.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestPaymentWithControl.java
index b3af64a..2a0c774 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestPaymentWithControl.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestPaymentWithControl.java
@@ -74,6 +74,11 @@ public class TestPaymentWithControl extends TestIntegrationBase {
}
@Override
+ public String getPluginName() {
+ return TEST_PAYMENT_WITH_CONTROL;
+ }
+
+ @Override
public String getRegistrationName() {
return TEST_PAYMENT_WITH_CONTROL;
}
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithCatalogPlugin.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithCatalogPlugin.java
index 8559991..7afcb20 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithCatalogPlugin.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithCatalogPlugin.java
@@ -87,6 +87,11 @@ public class TestWithCatalogPlugin extends TestIntegrationBase {
}
@Override
+ public String getPluginName() {
+ return "TestCatalogPluginApi";
+ }
+
+ @Override
public String getRegistrationName() {
return "TestCatalogPluginApi";
}
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java
index 94cd83f..1b7ccbc 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java
@@ -71,6 +71,11 @@ public class TestWithEntilementPlugin extends TestIntegrationBase {
}
@Override
+ public String getPluginName() {
+ return "TestEntitlementPluginApi";
+ }
+
+ @Override
public String getRegistrationName() {
return "TestEntitlementPluginApi";
}
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java
index f71adbf..facb5ef 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java
@@ -73,6 +73,11 @@ public class TestWithTaxItems extends TestIntegrationBase {
}
@Override
+ public String getPluginName() {
+ return "TaxInvoicePluginApi";
+ }
+
+ @Override
public String getRegistrationName() {
return "TaxInvoicePluginApi";
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/provider/NoOpInvoiceProviderPluginProvider.java b/invoice/src/main/java/org/killbill/billing/invoice/provider/NoOpInvoiceProviderPluginProvider.java
index 0b863f4..1901ffb 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/provider/NoOpInvoiceProviderPluginProvider.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/provider/NoOpInvoiceProviderPluginProvider.java
@@ -51,6 +51,12 @@ public class NoOpInvoiceProviderPluginProvider implements Provider<DefaultNoOpIn
public String getPluginSymbolicName() {
return null;
}
+
+ @Override
+ public String getPluginName() {
+ return instanceName;
+ }
+
@Override
public String getRegistrationName() {
return instanceName;
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PluginInfoJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PluginInfoJson.java
new file mode 100644
index 0000000..0e2f116
--- /dev/null
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PluginInfoJson.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you 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.killbill.billing.jaxrs.json;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class PluginInfoJson {
+
+ private final Map<String, Iterable<String>> registeredPlugins;
+
+ public PluginInfoJson() {
+ this.registeredPlugins = new HashMap<String, Iterable<String>>();
+ }
+
+ public void addEntriesForType(final String type, final Set<String> entries) {
+ registeredPlugins.put(type, entries);
+ }
+
+ public Map<String, Iterable<String>> getRegisteredPlugins() {
+ return registeredPlugins;
+ }
+}
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index 0735138..abfe3c7 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -202,8 +202,11 @@ public interface JaxrsResource {
public static final String EXPORT = "export";
public static final String EXPORT_PATH = PREFIX + "/" + EXPORT;
- public static final String PLUGINS = "plugins";
+ public static final String PLUGINS_INFO = "pluginsInfo";
+ public static final String PLUGINS_INFO_PATH = PREFIX + "/" + PLUGINS_INFO;
+
// No PREFIX here!
+ public static final String PLUGINS = "plugins";
public static final String PLUGINS_PATH = "/" + PLUGINS;
public static final String TEST = "test";
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java
new file mode 100644
index 0000000..71293c5
--- /dev/null
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PluginInfoResource.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you 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.killbill.billing.jaxrs.resources;
+
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.killbill.billing.account.api.AccountUserApi;
+import org.killbill.billing.entitlement.api.SubscriptionApiException;
+import org.killbill.billing.jaxrs.json.BundleJson;
+import org.killbill.billing.jaxrs.util.Context;
+import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.osgi.api.PluginsInfoApi;
+import org.killbill.billing.payment.api.PaymentApi;
+import org.killbill.billing.util.api.AuditUserApi;
+import org.killbill.billing.util.api.CustomFieldUserApi;
+import org.killbill.billing.util.api.TagUserApi;
+import org.killbill.clock.Clock;
+
+import com.codahale.metrics.annotation.Timed;
+import com.google.common.collect.ImmutableList;
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+
+@Path(JaxrsResource.PLUGINS_INFO_PATH)
+@Api(value = JaxrsResource.PLUGINS_INFO_PATH, description = "Operations on plugins (info)")
+public class PluginInfoResource extends JaxRsResourceBase {
+
+ private final PluginsInfoApi pluginsInfoApi;
+
+ @Inject
+ public PluginInfoResource(final JaxrsUriBuilder uriBuilder,
+ final TagUserApi tagUserApi,
+ final CustomFieldUserApi customFieldUserApi,
+ final AuditUserApi auditUserApi,
+ final AccountUserApi accountUserApi,
+ final PaymentApi paymentApi,
+ final PluginsInfoApi pluginsInfoApi,
+ final Clock clock,
+ final Context context) {
+ super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
+ this.pluginsInfoApi = pluginsInfoApi;
+ }
+
+ @Timed
+ @GET
+ @Produces(APPLICATION_JSON)
+ @ApiOperation(value = "Retrieve the list of registered plugins", response = BundleJson.class)
+ public Response getBundle(@PathParam("bundleId") final String bundleId,
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws SubscriptionApiException {
+ return Response.status(Status.OK).entity(ImmutableList.copyOf(pluginsInfoApi.getPluginsInfo())).build();
+ }
+
+}
diff --git a/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentControlProviderPluginRegistryProvider.java b/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentControlProviderPluginRegistryProvider.java
index e8db2a9..9e05e5b 100644
--- a/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentControlProviderPluginRegistryProvider.java
+++ b/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentControlProviderPluginRegistryProvider.java
@@ -51,6 +51,11 @@ public class DefaultPaymentControlProviderPluginRegistryProvider implements Prov
}
@Override
+ public String getPluginName() {
+ return DefaultPaymentControlProviderPlugin.PLUGIN_NAME;
+ }
+
+ @Override
public String getRegistrationName() {
return DefaultPaymentControlProviderPlugin.PLUGIN_NAME;
}
@@ -65,6 +70,11 @@ public class DefaultPaymentControlProviderPluginRegistryProvider implements Prov
}
@Override
+ public String getPluginName() {
+ return InvoicePaymentControlPluginApi.PLUGIN_NAME;
+ }
+
+ @Override
public String getRegistrationName() {
return InvoicePaymentControlPluginApi.PLUGIN_NAME;
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentProviderPluginRegistryProvider.java b/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentProviderPluginRegistryProvider.java
index 9d0f51b..dc4cd18 100644
--- a/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentProviderPluginRegistryProvider.java
+++ b/payment/src/main/java/org/killbill/billing/payment/glue/DefaultPaymentProviderPluginRegistryProvider.java
@@ -47,6 +47,12 @@ public class DefaultPaymentProviderPluginRegistryProvider implements Provider<OS
public String getPluginSymbolicName() {
return null;
}
+
+ @Override
+ public String getPluginName() {
+ return ExternalPaymentProviderPlugin.PLUGIN_NAME;
+ }
+
@Override
public String getRegistrationName() {
return ExternalPaymentProviderPlugin.PLUGIN_NAME;
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java
index 34f146d..aaffeda 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java
@@ -65,6 +65,11 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
}
@Override
+ public String getPluginName() {
+ return TestPaymentControlPluginApi.PLUGIN_NAME;
+ }
+
+ @Override
public String getRegistrationName() {
return TestPaymentControlPluginApi.PLUGIN_NAME;
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentGatewayApiWithPaymentControl.java b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentGatewayApiWithPaymentControl.java
index fb29bff..356e566 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentGatewayApiWithPaymentControl.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentGatewayApiWithPaymentControl.java
@@ -83,6 +83,11 @@ public class TestPaymentGatewayApiWithPaymentControl extends PaymentTestSuiteNoD
}
@Override
+ public String getPluginName() {
+ return TestPaymentGatewayApiControlPlugin.PLUGIN_NAME;
+ }
+
+ @Override
public String getRegistrationName() {
return TestPaymentGatewayApiControlPlugin.PLUGIN_NAME;
}
@@ -96,6 +101,11 @@ public class TestPaymentGatewayApiWithPaymentControl extends PaymentTestSuiteNoD
}
@Override
+ public String getPluginName() {
+ return TestPaymentGatewayApiValidationPlugin.VALIDATION_PLUGIN_NAME;
+ }
+
+ @Override
public String getRegistrationName() {
return TestPaymentGatewayApiValidationPlugin.VALIDATION_PLUGIN_NAME;
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryablePayment.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryablePayment.java
index a64c15a..5b74e38 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryablePayment.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestRetryablePayment.java
@@ -142,6 +142,11 @@ public class TestRetryablePayment extends PaymentTestSuiteNoDB {
}
@Override
+ public String getPluginName() {
+ return MockPaymentControlProviderPlugin.PLUGIN_NAME;
+ }
+
+ @Override
public String getRegistrationName() {
return MockPaymentControlProviderPlugin.PLUGIN_NAME;
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/provider/MockPaymentProviderPluginProvider.java b/payment/src/test/java/org/killbill/billing/payment/provider/MockPaymentProviderPluginProvider.java
index f235ba6..f071fd1 100644
--- a/payment/src/test/java/org/killbill/billing/payment/provider/MockPaymentProviderPluginProvider.java
+++ b/payment/src/test/java/org/killbill/billing/payment/provider/MockPaymentProviderPluginProvider.java
@@ -50,6 +50,12 @@ public class MockPaymentProviderPluginProvider implements Provider<MockPaymentPr
public String getPluginSymbolicName() {
return null;
}
+
+ @Override
+ public String getPluginName() {
+ return instanceName;
+ }
+
@Override
public String getRegistrationName() {
return instanceName;
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index 8bf3ba3..738a30d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.52</version>
+ <version>0.54</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.15.7-SNAPSHOT</version>
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
index 7322ef0..0ac81f7 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
@@ -39,6 +39,7 @@ import org.killbill.billing.jaxrs.resources.InvoiceResource;
import org.killbill.billing.jaxrs.resources.PaymentGatewayResource;
import org.killbill.billing.jaxrs.resources.PaymentMethodResource;
import org.killbill.billing.jaxrs.resources.PaymentResource;
+import org.killbill.billing.jaxrs.resources.PluginInfoResource;
import org.killbill.billing.jaxrs.resources.PluginResource;
import org.killbill.billing.jaxrs.resources.SecurityResource;
import org.killbill.billing.jaxrs.resources.SubscriptionResource;
@@ -188,6 +189,7 @@ public class KillbillServerModule extends KillbillPlatformModule {
bind(TransactionResource.class).asEagerSingleton();
bind(UsageResource.class).asEagerSingleton();
bind(AdminResource.class).asEagerSingleton();
+ bind(PluginInfoResource.class).asEagerSingleton();
}
protected void configureFilters() {