killbill-memoizeit

Changes

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() {