killbill-uncached

Fixes #200

10/22/2014 10:21:23 PM

Details

diff --git a/catalog/src/main/java/org/killbill/billing/catalog/StandaloneCatalog.java b/catalog/src/main/java/org/killbill/billing/catalog/StandaloneCatalog.java
index 36ddcf8..7b654c7 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/StandaloneCatalog.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/StandaloneCatalog.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import javax.annotation.Nullable;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -352,7 +353,7 @@ public class StandaloneCatalog extends ValidatingConfig<StandaloneCatalog> imple
     }
 
     @Override
-    public List<Listing> getAvailableAddonListings(final String baseProductName) {
+    public List<Listing> getAvailableAddOnListings(final String baseProductName, @Nullable final String priceListName) {
         final List<Listing> availAddons = new ArrayList<Listing>();
 
         try {
@@ -361,9 +362,11 @@ public class StandaloneCatalog extends ValidatingConfig<StandaloneCatalog> imple
                 for ( Product availAddon : product.getAvailable() ) {
                     for ( BillingPeriod billingPeriod : BillingPeriod.values()) {
                         for( PriceList priceList : getPriceLists().getAllPriceLists()) {
-                            Plan addonInList = priceList.findPlan(availAddon, billingPeriod);
-                            if ( (addonInList != null) ) {
-                                availAddons.add(new DefaultListing(addonInList, priceList));
+                            if (priceListName == null || priceListName.equals(priceList.getName())) {
+                                Plan addonInList = priceList.findPlan(availAddon, billingPeriod);
+                                if ( (addonInList != null) ) {
+                                    availAddons.add(new DefaultListing(addonInList, priceList));
+                                }
                             }
                         }
                     }
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java b/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java
index cfc87ad..a06048a 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java
@@ -26,6 +26,7 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.annotation.Nullable;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
@@ -458,8 +459,8 @@ public class VersionedCatalog extends ValidatingConfig<StandaloneCatalog> implem
     }
 
     @Override
-    public List<Listing> getAvailableAddonListings(final String baseProductName) throws CatalogApiException {
-        return versionForDate(clock.getUTCNow()).getAvailableAddonListings(baseProductName);
+    public List<Listing> getAvailableAddOnListings(final String baseProductName, @Nullable final String priceListName) throws CatalogApiException {
+        return versionForDate(clock.getUTCNow()).getAvailableAddOnListings(baseProductName, priceListName);
     }
 
     @Override
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
index d4c7311..aa2458a 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
@@ -19,7 +19,9 @@ package org.killbill.billing.jaxrs.resources;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.annotation.Nullable;
 import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.DefaultValue;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
@@ -115,9 +117,10 @@ public class CatalogResource extends JaxRsResourceBase {
     @ApiOperation(value = "Retrieve available add-ons for a given product", response = PlanDetailJson.class, responseContainer = "List")
     @ApiResponses(value = {})
     public Response getAvailableAddons(@QueryParam("baseProductName") final String baseProductName,
+                                       @Nullable @QueryParam("priceListName") final String priceListName,
                                        @javax.ws.rs.core.Context final HttpServletRequest request) throws CatalogApiException {
         final StaticCatalog catalog = catalogService.getCurrentCatalog();
-        final List<Listing> listings = catalog.getAvailableAddonListings(baseProductName);
+        final List<Listing> listings = catalog.getAvailableAddOnListings(baseProductName, priceListName);
         final List<PlanDetailJson> details = new ArrayList<PlanDetailJson>();
         for (final Listing listing : listings) {
             details.add(new PlanDetailJson(listing));

pom.xml 2(+1 -1)

diff --git a/pom.xml b/pom.xml
index 119e98c..d87b820 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
     <parent>
         <artifactId>killbill-oss-parent</artifactId>
         <groupId>org.kill-bill.billing</groupId>
-        <version>0.8.6</version>
+        <version>0.8.7</version>
     </parent>
     <artifactId>killbill</artifactId>
     <version>0.11.14-SNAPSHOT</version>