killbill-memoizeit

invoice: rework invoice item base class to isolate those that

3/28/2017 3:11:01 PM

Details

diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/AdjInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/AdjInvoiceItem.java
index e126f90..26b3ef1 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/AdjInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/AdjInvoiceItem.java
@@ -33,7 +33,7 @@ public abstract class AdjInvoiceItem extends InvoiceItemBase {
     AdjInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId,
                    final LocalDate startDate, final LocalDate endDate, @Nullable final String description,
                    final BigDecimal amount, final Currency currency, @Nullable final UUID reversingId) {
-        super(id, createdDate, invoiceId, accountId, null, null, description, null, null, null, startDate, endDate, amount, currency, reversingId);
+        super(id, createdDate, invoiceId, accountId, null, null, description, startDate, endDate, amount, currency, reversingId);
     }
 
     @Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/ExternalChargeInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/ExternalChargeInvoiceItem.java
index f97eeff..d1a7eb9 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/ExternalChargeInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/ExternalChargeInvoiceItem.java
@@ -41,7 +41,7 @@ public class ExternalChargeInvoiceItem extends InvoiceItemBase {
 
     public ExternalChargeInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
                                      @Nullable final String description, final LocalDate date, final BigDecimal amount, final Currency currency) {
-        super(id, createdDate, invoiceId, accountId, bundleId, null, description, null, null, null, date, null, amount, currency);
+        super(id, createdDate, invoiceId, accountId, bundleId, null, description, null, date, null, amount, currency);
     }
 
     @Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/FixedPriceInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/FixedPriceInvoiceItem.java
index 9a29b6f..86e2204 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/FixedPriceInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/FixedPriceInvoiceItem.java
@@ -29,7 +29,7 @@ import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.invoice.api.InvoiceItemType;
 import org.killbill.billing.util.UUIDs;
 
-public class FixedPriceInvoiceItem extends InvoiceItemBase {
+public class FixedPriceInvoiceItem extends InvoiceItemCatalogBase {
 
     public FixedPriceInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId,
                                  final String planName, final String phaseName,
@@ -40,7 +40,7 @@ public class FixedPriceInvoiceItem extends InvoiceItemBase {
     public FixedPriceInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID bundleId,
                                  final UUID subscriptionId, final String planName, final String phaseName,
                                  @Nullable final String description, final LocalDate date, final BigDecimal amount, final Currency currency) {
-        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, null, date, null, amount, currency);
+        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, null, date, null, amount, null, currency, null);
     }
 
     @Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java
index 3f9b13b..26cc59c 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemBase.java
@@ -46,8 +46,6 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
     /* Fixed and recurring specific */
     protected final UUID subscriptionId;
     protected final UUID bundleId;
-    protected final String planName;
-    protected final String phaseName;
 
     /* Recurring specific */
     protected final BigDecimal rate;
@@ -55,57 +53,27 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
     /* RepairAdjInvoiceItem */
     protected final UUID linkedItemId;
 
-    /* Usage specific */
-    protected final String usageName;
 
-    @Override
-    public String toString() {
-        // Note: we don't use all fields here, as the output would be overwhelming
-        // (we output all invoice items as they are generated).
-        final StringBuilder sb = new StringBuilder();
-        sb.append(getInvoiceItemType());
-        sb.append("{startDate=").append(startDate);
-        sb.append(", endDate=").append(endDate);
-        sb.append(", amount=").append(amount);
-        sb.append(", rate=").append(rate);
-        sb.append(", subscriptionId=").append(subscriptionId);
-        sb.append(", linkedItemId=").append(linkedItemId);
-        sb.append('}');
-        return sb.toString();
-    }
-
-    /*
-    * CTORs with ID; called from DAO when rehydrating
-    */
-    // No rate and no reversing item
-    public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
-                           @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
-                           final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency) {
-        this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, planName, phaseName, usageName, startDate, endDate, amount, null, currency, null);
-    }
-
-    // With rate but no reversing item
     public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
-                           @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
+                           @Nullable final UUID subscriptionId, @Nullable final String description,
                            final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency) {
-        this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, planName, phaseName, usageName, startDate, endDate, amount, rate, currency, null);
+        this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency, null);
     }
 
-    // With  reversing item, no rate
     public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
-                           @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
+                           @Nullable final UUID subscriptionId, @Nullable final String description,
                            final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final UUID reversedItemId) {
-        this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, planName, phaseName, usageName, startDate, endDate, amount, null, currency, reversedItemId);
+        this(id, createdDate, invoiceId, accountId, null, bundleId, subscriptionId, description, startDate, endDate, amount, null, currency, reversedItemId);
     }
 
     // For parent invoices
     public InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID childAccountId,
                              final BigDecimal amount, final Currency currency, final String description) {
-        this(id, createdDate, invoiceId, accountId, childAccountId, null, null, description, null, null, null, null, null, amount, null, currency, null);
+        this(id, createdDate, invoiceId, accountId, childAccountId, null, null, description, null, null, amount, null, currency, null);
     }
 
     private InvoiceItemBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID childAccountId, @Nullable final UUID bundleId,
-                            @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
+                            @Nullable final UUID subscriptionId, @Nullable final String description,
                             @Nullable final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency,
                             final UUID reversedItemId) {
         super(id, createdDate, createdDate);
@@ -115,9 +83,6 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
         this.subscriptionId = subscriptionId;
         this.bundleId = bundleId;
         this.description = description;
-        this.planName = planName;
-        this.phaseName = phaseName;
-        this.usageName = usageName;
         this.startDate = startDate;
         this.endDate = endDate;
         this.amount = amount == null || currency == null ? amount : KillBillMoney.of(amount, currency);
@@ -147,16 +112,6 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
     }
 
     @Override
-    public String getPlanName() {
-        return planName;
-    }
-
-    @Override
-    public String getPhaseName() {
-        return phaseName;
-    }
-
-    @Override
     public BigDecimal getAmount() {
         return amount;
     }
@@ -186,16 +141,44 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
         return linkedItemId;
     }
 
+
+    @Override
+    public UUID getChildAccountId() {
+        return childAccountId;
+    }
+
+
+    @Override
+    public String getPlanName() {
+        return null;
+    }
+
+    @Override
+    public String getPrettyPlanName() {
+        return null;
+    }
+
+    @Override
+    public String getPhaseName() {
+        return null;
+    }
+
+    @Override
+    public String getPrettyPhaseName() {
+        return null;
+    }
+
     @Override
     public String getUsageName() {
-        return usageName;
+        return null;
     }
 
     @Override
-    public UUID getChildAccountId() {
-        return childAccountId;
+    public String getPrettyUsageName() {
+        return null;
     }
 
+
     @Override
     public boolean equals(final Object o) {
 
@@ -256,12 +239,6 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
         if (currency != that.currency) {
             return false;
         }
-        if (phaseName != null ? !phaseName.equals(that.phaseName) : that.phaseName != null) {
-            return false;
-        }
-        if (planName != null ? !planName.equals(that.planName) : that.planName != null) {
-            return false;
-        }
         return true;
     }
 
@@ -278,14 +255,41 @@ public abstract class InvoiceItemBase extends EntityBase implements InvoiceItem 
         result = 31 * result + (subscriptionId != null ? subscriptionId.hashCode() : 0);
         result = 31 * result + (bundleId != null ? bundleId.hashCode() : 0);
         result = 31 * result + (description != null ? description.hashCode() : 0);
-        result = 31 * result + (planName != null ? planName.hashCode() : 0);
-        result = 31 * result + (phaseName != null ? phaseName.hashCode() : 0);
         result = 31 * result + (rate != null ? rate.hashCode() : 0);
         result = 31 * result + (linkedItemId != null ? linkedItemId.hashCode() : 0);
         return result;
     }
 
     @Override
+    public String toString() {
+        // Note: we don't use all fields here, as the output would be overwhelming
+        // (we output all invoice items as they are generated).
+        final StringBuilder sb = new StringBuilder();
+        sb.append(getInvoiceItemType());
+        sb.append("{");
+        if (startDate != null) {
+            sb.append("startDate=").append(startDate);
+        }
+        if (endDate != null) {
+            sb.append("endDate=").append(endDate);
+        }
+        if (amount != null) {
+            sb.append("amount=").append(amount);
+        }
+        if (rate != null) {
+            sb.append("rate=").append(rate);
+        }
+        if (subscriptionId != null) {
+            sb.append("subscriptionId=").append(subscriptionId);
+        }
+        if (linkedItemId != null) {
+            sb.append("linkedItemId=").append(linkedItemId);
+        }
+        sb.append('}');
+        return sb.toString();
+    }
+
+    @Override
     public abstract InvoiceItemType getInvoiceItemType();
 
     @Override
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
index 4066e5f..421aebe 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemCatalogBase.java
@@ -1,4 +1,141 @@
+/*
+ * Copyright 2014-2017 Groupon, Inc
+ * Copyright 2014-2017 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.invoice.model;
 
-public class InvoiceItemCatalogBase {
+import java.math.BigDecimal;
+import java.util.UUID;
+
+import javax.annotation.Nullable;
+
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+import org.killbill.billing.catalog.api.Currency;
+import org.killbill.billing.invoice.api.InvoiceItem;
+
+public abstract class InvoiceItemCatalogBase extends InvoiceItemBase implements InvoiceItem {
+
+    protected final String planName;
+    protected final String phaseName;
+    protected final String usageName;
+
+    public InvoiceItemCatalogBase(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
+                                  @Nullable final UUID subscriptionId, @Nullable final String description, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
+                                  final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final BigDecimal rate, final Currency currency, @Nullable final UUID linkedItemId) {
+        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, startDate, endDate, amount, rate, currency);
+        this.planName = planName;
+        this.phaseName = phaseName;
+        this.usageName = usageName;
+    }
+
+
+    @Override
+    public String getPlanName() {
+        return planName;
+    }
+
+    @Override
+    public String getPhaseName() {
+        return phaseName;
+    }
+
+    @Override
+    public String getUsageName() {
+        return usageName;
+    }
+
+
+    @Override
+    public String getPrettyPlanName() {
+        return null;
+    }
+
+    @Override
+    public String getPrettyPhaseName() {
+        return null;
+    }
+
+    @Override
+    public String getPrettyUsageName() {
+        return null;
+    }
+
+
+    @Override
+    public boolean matches(final Object o) {
+
+        if (!super.matches(o)) {
+            return  false;
+        }
+        final InvoiceItemCatalogBase that = (InvoiceItemCatalogBase) o;
+        if (phaseName != null ? !phaseName.equals(that.phaseName) : that.phaseName != null) {
+            return false;
+        }
+        if (planName != null ? !planName.equals(that.planName) : that.planName != null) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = super.hashCode();
+        result = 31 * result + (planName != null ? planName.hashCode() : 0);
+        result = 31 * result + (phaseName != null ? phaseName.hashCode() : 0);
+        result = 31 * result + (usageName != null ? usageName.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        // Note: we don't use all fields here, as the output would be overwhelming
+        // (we output all invoice items as they are generated).
+        final StringBuilder sb = new StringBuilder();
+        sb.append(getInvoiceItemType());
+        sb.append("{");
+        if (planName != null) {
+            sb.append("planName=").append(planName);
+        }
+        if (phaseName != null) {
+            sb.append("phaseName=").append(phaseName);
+        }
+        if (usageName != null) {
+            sb.append("usageName=").append(usageName);
+        }
+        if (startDate != null) {
+            sb.append("startDate=").append(startDate);
+        }
+        if (endDate != null) {
+            sb.append("endDate=").append(endDate);
+        }
+        if (amount != null) {
+            sb.append("amount=").append(amount);
+        }
+        if (rate != null) {
+            sb.append("rate=").append(rate);
+        }
+        if (subscriptionId != null) {
+            sb.append("subscriptionId=").append(subscriptionId);
+        }
+        if (linkedItemId != null) {
+            sb.append("linkedItemId=").append(linkedItemId);
+        }
+        sb.append('}');
+        return sb.toString();
+    }
+
 }
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/RecurringInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/RecurringInvoiceItem.java
index f2a4b87..685b8a7 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/RecurringInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/RecurringInvoiceItem.java
@@ -31,7 +31,7 @@ import org.killbill.billing.util.UUIDs;
 
 import com.google.common.base.MoreObjects;
 
-public class RecurringInvoiceItem extends InvoiceItemBase {
+public class RecurringInvoiceItem extends InvoiceItemCatalogBase {
 
     public RecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
                                 final String planName, final String phaseName, final LocalDate startDate, final LocalDate endDate,
@@ -48,7 +48,7 @@ public class RecurringInvoiceItem extends InvoiceItemBase {
     public RecurringInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
                                 final String planName, final String phaseName, @Nullable final String description, final LocalDate startDate, final LocalDate endDate,
                                 final BigDecimal amount, final BigDecimal rate, final Currency currency) {
-        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, null, startDate, endDate, amount, rate, currency);
+        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, null, startDate, endDate, amount, rate, currency, null);
     }
 
     @Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java
index 0b1396f..6009321 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java
@@ -27,7 +27,7 @@ import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.invoice.api.InvoiceItemType;
 import org.killbill.billing.util.UUIDs;
 
-public class TaxInvoiceItem extends InvoiceItemBase {
+public class TaxInvoiceItem extends InvoiceItemCatalogBase {
 
     public TaxInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final String description,
                           final LocalDate date, final BigDecimal amount, final Currency currency) {
@@ -42,7 +42,7 @@ public class TaxInvoiceItem extends InvoiceItemBase {
     public TaxInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
                           @Nullable final UUID subscriptionId, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
                           final LocalDate date, @Nullable final String description, final BigDecimal amount, final Currency currency, @Nullable final UUID linkedItemId) {
-        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, date, null, amount, currency, linkedItemId);
+        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, date, null, amount, null, currency, linkedItemId);
     }
 
     @Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java
index 15591d0..8fc7e8c 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/UsageInvoiceItem.java
@@ -30,7 +30,7 @@ import org.killbill.billing.util.UUIDs;
 
 import com.google.common.base.MoreObjects;
 
-public class UsageInvoiceItem extends InvoiceItemBase {
+public class UsageInvoiceItem extends InvoiceItemCatalogBase {
 
     public UsageInvoiceItem(final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId, @Nullable final UUID subscriptionId,
                             final String planName, final String phaseName, final String usageName,
@@ -41,7 +41,7 @@ public class UsageInvoiceItem extends InvoiceItemBase {
     public UsageInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, final UUID bundleId,
                             final UUID subscriptionId, final String planName, final String phaseName, final String usageName,
                             final LocalDate startDate, final LocalDate endDate, @Nullable final String description, final BigDecimal amount, final Currency currency) {
-        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, startDate, endDate, amount, currency);
+        super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, planName, phaseName, usageName, startDate, endDate, amount, null, currency, null);
     }
 
     @Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
index 47e18a3..3869400 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
@@ -143,16 +143,31 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
     }
 
     @Override
+    public String getPrettyPlanName() {
+        return getPlanName();
+    }
+
+    @Override
     public String getPhaseName() {
         return Strings.nullToEmpty(translator.getTranslation(item.getPhaseName()));
     }
 
     @Override
+    public String getPrettyPhaseName() {
+        return getPhaseName();
+    }
+
+    @Override
     public String getUsageName() {
         return Strings.nullToEmpty(translator.getTranslation(item.getUsageName()));
     }
 
     @Override
+    public String getPrettyUsageName() {
+        return getUsageName();
+    }
+
+    @Override
     public UUID getId() {
         return item.getId();
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
index 0d9c15c..2bc9ccc 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/InvoiceItemJson.java
@@ -185,16 +185,31 @@ public class InvoiceItemJson extends JsonBase {
             }
 
             @Override
+            public String getPrettyPlanName() {
+                return planName;
+            }
+
+            @Override
             public String getPhaseName() {
                 return phaseName;
             }
 
             @Override
+            public String getPrettyPhaseName() {
+                return phaseName;
+            }
+
+            @Override
             public String getUsageName() {
                 return usageName;
             }
 
             @Override
+            public String getPrettyUsageName() {
+                return usageName;
+            }
+
+            @Override
             public BigDecimal getRate() {
                 return null;
             }
diff --git a/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java b/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java
index 6cb7be3..fa16ee5 100644
--- a/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java
+++ b/payment/src/test/java/org/killbill/billing/payment/MockRecurringInvoiceItem.java
@@ -49,28 +49,6 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem 
         this(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, startDate, endDate, amount, currency, rate, null);
     }
 
-    public MockRecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId,
-                                    final String planName, final String phaseName, final String usageName, final LocalDate startDate, final LocalDate endDate,
-                                    final BigDecimal amount, final BigDecimal rate, final Currency currency, final UUID reversedItemId) {
-        this(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, startDate, endDate,
-             amount, currency, rate, reversedItemId);
-    }
-
-    public MockRecurringInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final UUID bundleId,
-                                    final UUID subscriptionId, final String planName, final String phaseName, final String usageName,
-                                    final LocalDate startDate, final LocalDate endDate, final BigDecimal amount,
-                                    final BigDecimal rate, final Currency currency) {
-        this(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, startDate, endDate, amount, currency, rate, null);
-
-    }
-
-    public MockRecurringInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, final UUID bundleId,
-                                    final UUID subscriptionId, final String planName, final String phaseName, final String usageName,
-                                    final LocalDate startDate, final LocalDate endDate, final BigDecimal amount,
-                                    final BigDecimal rate, final Currency currency, final UUID reversedItemId) {
-        this(id, invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, startDate, endDate, amount, currency, rate, reversedItemId);
-    }
-
     public MockRecurringInvoiceItem(final UUID invoiceId, final UUID accountId, final UUID bundleId, final UUID subscriptionId, final String planName, final String phaseName, final String usageName,
                                     final LocalDate startDate, final LocalDate endDate, final BigDecimal amount, final Currency currency, final BigDecimal rate, final UUID reversedItemId) {
         this(UUID.randomUUID(), invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName,
@@ -127,16 +105,31 @@ public class MockRecurringInvoiceItem extends EntityBase implements InvoiceItem 
     }
 
     @Override
+    public String getPrettyPlanName() {
+        return planName;
+    }
+
+    @Override
     public String getPhaseName() {
         return phaseName;
     }
 
     @Override
+    public String getPrettyPhaseName() {
+        return phaseName;
+    }
+
+    @Override
     public String getUsageName() {
         return usageName;
     }
 
     @Override
+    public String getPrettyUsageName() {
+        return usageName;
+    }
+
+    @Override
     public BigDecimal getAmount() {
         return amount;
     }