killbill-memoizeit

Details

diff --git a/catalog/src/main/java/com/ning/billing/catalog/DefaultPlan.java b/catalog/src/main/java/com/ning/billing/catalog/DefaultPlan.java
index a249289..d624009 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/DefaultPlan.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/DefaultPlan.java
@@ -18,6 +18,7 @@ package com.ning.billing.catalog;
 
 import java.net.URI;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.Iterator;
 
@@ -34,7 +35,6 @@ import org.joda.time.DateTime;
 import com.ning.billing.ErrorCode;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.CatalogApiException;
-import com.ning.billing.catalog.api.PhaseType;
 import com.ning.billing.catalog.api.Plan;
 import com.ning.billing.catalog.api.PlanPhase;
 import com.ning.billing.catalog.api.Product;
@@ -243,6 +243,15 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements 
 		}
 		return result;
 	}
+
+	@Override
+    public String toString() {
+        return "DefaultPlan [name=" + name + ", retired=" + retired + ", effectiveDateForExistingSubscriptons="
+                + effectiveDateForExistingSubscriptons + ", product=" + product + ", initialPhases="
+                + Arrays.toString(initialPhases) + ", finalPhase=" + finalPhase + ", plansAllowedInBundle="
+                + plansAllowedInBundle + "]";
+    }
+	
 	
 	
 }
diff --git a/catalog/src/main/java/com/ning/billing/catalog/DefaultProduct.java b/catalog/src/main/java/com/ning/billing/catalog/DefaultProduct.java
index 6687c75..c9b2619 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/DefaultProduct.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/DefaultProduct.java
@@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlID;
 import javax.xml.bind.annotation.XmlIDREF;
 import java.net.URI;
+import java.util.Arrays;
 
 @XmlAccessorType(XmlAccessType.NONE)
 public class DefaultProduct extends ValidatingConfig<StandaloneCatalog> implements Product {
@@ -158,4 +159,10 @@ public class DefaultProduct extends ValidatingConfig<StandaloneCatalog> implemen
 		return this;
 	}
 
+    @Override
+    public String toString() {
+        return "DefaultProduct [name=" + name + ", retired=" + retired + ", category=" + category + ", included="
+                + Arrays.toString(included) + ", available=" + Arrays.toString(available) + ", catalogName="
+                + catalogName + "]";
+    }
 }
diff --git a/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java b/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java
index 32324f9..a5f6f28 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/StandaloneCatalog.java
@@ -325,13 +325,11 @@ public class StandaloneCatalog extends ValidatingConfig<StandaloneCatalog> imple
             Product product = findCurrentProduct(baseProductName);
             if ( product != null ) {
                 for ( Product availAddon : product.getAvailable() ) {
-                    for ( Plan plan : getCurrentPlans()) {
-                        if( plan.getProduct().equals(availAddon)) {
-                            for( PriceList priceList : getPriceLists().getAllPriceLists()) {
-                                if ( priceList.findPlan(availAddon, plan.getBillingPeriod()) != null &&
-                                     priceList.findPlan(product, plan.getBillingPeriod()).equals(plan)) {
-                                    availAddons.add(new DefaultListing(plan, priceList));
-                                }
+                    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));
                             }
                         }
                     }