killbill-memoizeit

Details

diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
index 0d1757f..c326ace 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
@@ -57,6 +57,9 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements 
     @XmlID
     private String name;
 
+    @XmlAttribute(required = false)
+    private String prettyName;
+
     @XmlElement(required = false)
     private Date effectiveDateForExistingSubscriptions;
 
@@ -123,6 +126,11 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements 
     }
 
     @Override
+    public String getPrettyName() {
+        return prettyName;
+    }
+
+    @Override
     public DefaultPlanPhase getFinalPhase() {
         return finalPhase;
     }
@@ -177,6 +185,9 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements 
         super.initialize(catalog, sourceURI);
         CatalogSafetyInitializer.initializeNonRequiredNullFieldsWithDefaultValue(this);
 
+        if (prettyName == null) {
+            this.prettyName = name;
+        }
         if (finalPhase != null) {
             finalPhase.setPlan(this);
             finalPhase.initialize(catalog, sourceURI);
@@ -235,6 +246,11 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements 
         return this;
     }
 
+    public DefaultPlan setPrettyName(final String prettyName) {
+        this.prettyName = prettyName;
+        return this;
+    }
+
     public DefaultPlan setFinalPhase(final DefaultPlanPhase finalPhase) {
         this.finalPhase = finalPhase;
         return this;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
index b2bd6cb..b2508a5 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
@@ -49,6 +49,9 @@ import com.google.common.collect.Iterables;
 @XmlAccessorType(XmlAccessType.NONE)
 public class DefaultPlanPhase extends ValidatingConfig<StandaloneCatalog> implements PlanPhase {
 
+    @XmlAttribute(required = false)
+    private String prettyName;
+
     @XmlAttribute(required = true)
     private PhaseType type;
 
@@ -147,6 +150,11 @@ public class DefaultPlanPhase extends ValidatingConfig<StandaloneCatalog> implem
     }
 
     @Override
+    public String getPrettyName() {
+        return prettyName != null ? prettyName : getName();
+    }
+
+    @Override
     public Duration getDuration() {
         return duration;
     }
@@ -196,6 +204,11 @@ public class DefaultPlanPhase extends ValidatingConfig<StandaloneCatalog> implem
         duration.initialize(root, uri);
     }
 
+    public DefaultPlanPhase setPrettyName(final String prettyName) {
+        this.prettyName = prettyName;
+        return this;
+    }
+
     public DefaultPlanPhase setFixed(final DefaultFixed fixed) {
         this.fixed = fixed;
         return this;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java
index a67783a..7e686b2 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java
@@ -43,6 +43,9 @@ public class DefaultPriceList extends ValidatingConfig<StandaloneCatalog> implem
     @XmlID
     private String name;
 
+    @XmlAttribute(required = false)
+    private String prettyName;
+
     @XmlElementWrapper(name = "plans", required = true)
     @XmlIDREF
     @XmlElement(type=DefaultPlan.class, name = "plan", required = false)
@@ -74,6 +77,11 @@ public class DefaultPriceList extends ValidatingConfig<StandaloneCatalog> implem
         return name;
     }
 
+    @Override
+    public String getPrettyName() {
+        return prettyName;
+    }
+
     /* (non-Javadoc)
       * @see org.killbill.billing.catalog.IPriceList#findPlan(org.killbill.billing.catalog.api.IProduct, org.killbill.billing.catalog.api.BillingPeriod)
       */
@@ -103,6 +111,10 @@ public class DefaultPriceList extends ValidatingConfig<StandaloneCatalog> implem
     public void initialize(final StandaloneCatalog catalog, final URI sourceURI) {
         super.initialize(catalog, sourceURI);
         CatalogSafetyInitializer.initializeNonRequiredNullFieldsWithDefaultValue(this);
+
+        if (prettyName == null) {
+            this.prettyName = name;
+        }
     }
 
     public DefaultPriceList setName(final String name) {
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultProduct.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultProduct.java
index af95ceb..1af8c29 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultProduct.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultProduct.java
@@ -42,6 +42,9 @@ public class DefaultProduct extends ValidatingConfig<StandaloneCatalog> implemen
     @XmlID
     private String name;
 
+    @XmlAttribute(required = false)
+    private String prettyName;
+
     @XmlElement(required = true)
     private ProductCategory category;
 
@@ -105,6 +108,11 @@ public class DefaultProduct extends ValidatingConfig<StandaloneCatalog> implemen
         return name;
     }
 
+    @Override
+    public String getPrettyName() {
+        return prettyName;
+    }
+
     public boolean isIncluded(final DefaultProduct addon) {
         for (final Product p : included.getEntries()) {
             if (addon == p) {
@@ -156,6 +164,9 @@ public class DefaultProduct extends ValidatingConfig<StandaloneCatalog> implemen
         for (DefaultLimit cur : limits) {
             cur.initialize(catalog, sourceURI);
         }
+        if (prettyName == null) {
+            this.prettyName = name;
+        }
         catalogName = catalog.getCatalogName();
     }
 
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java
index f82499d..9d3f148 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java
@@ -43,6 +43,11 @@ public class DefaultUnit extends ValidatingConfig<StandaloneCatalog> implements 
     }
 
     @Override
+    public String getPrettyName() {
+        return name;
+    }
+
+    @Override
     public ValidationErrors validate(StandaloneCatalog root, ValidationErrors errors) {
         return errors;
     }
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
index 3786ce7..ce2a92a 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
@@ -59,6 +59,9 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
     @XmlID
     private String name;
 
+    @XmlAttribute(required = false)
+    private String prettyName;
+
     @XmlAttribute(required = true)
     private BillingMode billingMode;
 
@@ -150,6 +153,11 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
     }
 
     @Override
+    public String getPrettyName() {
+        return prettyName;
+    }
+
+    @Override
     public BillingMode getBillingMode() {
         return billingMode;
     }
@@ -228,6 +236,10 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
         super.initialize(root, uri);
         CatalogSafetyInitializer.initializeNonRequiredNullFieldsWithDefaultValue(this);
 
+        if (prettyName == null) {
+            this.prettyName = name;
+        }
+
         for (DefaultLimit limit : limits) {
             limit.initialize(root, uri);
         }
diff --git a/catalog/src/test/java/org/killbill/billing/catalog/TestCatalogUpdater.java b/catalog/src/test/java/org/killbill/billing/catalog/TestCatalogUpdater.java
index af11ffe..f0707ed 100644
--- a/catalog/src/test/java/org/killbill/billing/catalog/TestCatalogUpdater.java
+++ b/catalog/src/test/java/org/killbill/billing/catalog/TestCatalogUpdater.java
@@ -281,25 +281,25 @@ public class TestCatalogUpdater extends CatalogTestSuiteNoDB {
                                    "    </currencies>\n" +
                                    "    <units/>\n" +
                                    "    <products>\n" +
-                                   "        <product name=\"Dynamic\">\n" +
+                                   "        <product name=\"Dynamic\" prettyName=\"Dynamic\">\n" +
                                    "            <category>BASE</category>\n" +
                                    "            <included/>\n" +
                                    "            <available/>\n" +
                                    "            <limits/>\n" +
                                    "        </product>\n" +
-                                   "        <product name=\"Sports\">\n" +
+                                   "        <product name=\"Sports\" prettyName=\"Sports\">\n" +
                                    "            <category>BASE</category>\n" +
                                    "            <included/>\n" +
                                    "            <available/>\n" +
                                    "            <limits/>\n" +
                                    "        </product>\n" +
-                                   "        <product name=\"Standard\">\n" +
+                                   "        <product name=\"Standard\" prettyName=\"Standard\">\n" +
                                    "            <category>BASE</category>\n" +
                                    "            <included/>\n" +
                                    "            <available/>\n" +
                                    "            <limits/>\n" +
                                    "        </product>\n" +
-                                   "        <product name=\"Super\">\n" +
+                                   "        <product name=\"Super\" prettyName=\"Super\">\n" +
                                    "            <category>BASE</category>\n" +
                                    "            <included/>\n" +
                                    "            <available/>\n" +
@@ -339,7 +339,7 @@ public class TestCatalogUpdater extends CatalogTestSuiteNoDB {
                                    "        </priceList>\n" +
                                    "    </rules>\n" +
                                    "    <plans>\n" +
-                                   "        <plan name=\"dynamic-annual\">\n" +
+                                   "        <plan name=\"dynamic-annual\" prettyName=\"dynamic-annual\">\n" +
                                    "            <product>Dynamic</product>\n" +
                                    "            <initialPhases>\n" +
                                    "                <phase type=\"TRIAL\">\n" +
@@ -376,7 +376,7 @@ public class TestCatalogUpdater extends CatalogTestSuiteNoDB {
                                    "            </finalPhase>\n" +
                                    "            <plansAllowedInBundle>-1</plansAllowedInBundle>\n" +
                                    "        </plan>\n" +
-                                   "        <plan name=\"sports-monthly\">\n" +
+                                   "        <plan name=\"sports-monthly\" prettyName=\"sports-monthly\">\n" +
                                    "            <product>Sports</product>\n" +
                                    "            <initialPhases>\n" +
                                    "                <phase type=\"TRIAL\">\n" +
@@ -412,7 +412,7 @@ public class TestCatalogUpdater extends CatalogTestSuiteNoDB {
                                    "            </finalPhase>\n" +
                                    "            <plansAllowedInBundle>-1</plansAllowedInBundle>\n" +
                                    "        </plan>\n" +
-                                   "        <plan name=\"standard-monthly\">\n" +
+                                   "        <plan name=\"standard-monthly\" prettyName=\"standard-monthly\">\n" +
                                    "            <product>Standard</product>\n" +
                                    "            <initialPhases>\n" +
                                    "                <phase type=\"TRIAL\">\n" +
@@ -448,7 +448,7 @@ public class TestCatalogUpdater extends CatalogTestSuiteNoDB {
                                    "            </finalPhase>\n" +
                                    "            <plansAllowedInBundle>-1</plansAllowedInBundle>\n" +
                                    "        </plan>\n" +
-                                   "        <plan name=\"super-monthly\">\n" +
+                                   "        <plan name=\"super-monthly\" prettyName=\"super-monthly\">\n" +
                                    "            <product>Super</product>\n" +
                                    "            <initialPhases>\n" +
                                    "                <phase type=\"TRIAL\">\n" +
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
new file mode 100644
index 0000000..4066e5f
--- /dev/null
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
@@ -0,0 +1,4 @@
+package org.killbill.billing.invoice.model;
+
+public class InvoiceItemCatalogBase {
+}
diff --git a/util/src/test/java/org/killbill/billing/mock/MockPlan.java b/util/src/test/java/org/killbill/billing/mock/MockPlan.java
index 09b4e88..dc78dea 100644
--- a/util/src/test/java/org/killbill/billing/mock/MockPlan.java
+++ b/util/src/test/java/org/killbill/billing/mock/MockPlan.java
@@ -63,6 +63,11 @@ public class MockPlan implements Plan {
     }
 
     @Override
+    public String getPrettyName() {
+        return name;
+    }
+
+    @Override
     public Date getEffectiveDateForExistingSubscriptions() {
         return new Date();
     }
diff --git a/util/src/test/java/org/killbill/billing/mock/MockPriceList.java b/util/src/test/java/org/killbill/billing/mock/MockPriceList.java
index 9722cb2..0d2398c 100644
--- a/util/src/test/java/org/killbill/billing/mock/MockPriceList.java
+++ b/util/src/test/java/org/killbill/billing/mock/MockPriceList.java
@@ -45,6 +45,11 @@ public class MockPriceList implements PriceList {
     }
 
     @Override
+    public String getPrettyName() {
+        return name;
+    }
+
+    @Override
     public Collection<Plan> findPlans(final Product product, final BillingPeriod period) {
         return ImmutableList.of(plan);
     }
diff --git a/util/src/test/java/org/killbill/billing/mock/MockProduct.java b/util/src/test/java/org/killbill/billing/mock/MockProduct.java
index 3e3ad3e..19eb407 100644
--- a/util/src/test/java/org/killbill/billing/mock/MockProduct.java
+++ b/util/src/test/java/org/killbill/billing/mock/MockProduct.java
@@ -64,6 +64,11 @@ public class MockProduct implements Product {
     }
 
     @Override
+    public String getPrettyName() {
+        return name;
+    }
+
+    @Override
     public Collection<Product> getAvailable() {
         return available;
     }