killbill-memoizeit

catalog: remove DefaultUsage#getPhase This was causing

2/11/2015 12:15:55 PM

Details

diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlock.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlock.java
index a0d1e07..9159e18 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlock.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlock.java
@@ -1,7 +1,8 @@
 /*
- * Copyright 2014 The Billing Project, LLC
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
  *
- * Ning licenses this file to you under the Apache License, version 2.0
+ * 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:
  *
@@ -27,6 +28,7 @@ import org.killbill.billing.catalog.api.Block;
 import org.killbill.billing.catalog.api.BlockType;
 import org.killbill.billing.catalog.api.CatalogApiException;
 import org.killbill.billing.catalog.api.InternationalPrice;
+import org.killbill.billing.catalog.api.PlanPhase;
 import org.killbill.billing.catalog.api.Unit;
 import org.killbill.xmlloader.ValidatingConfig;
 import org.killbill.xmlloader.ValidationError;
@@ -52,7 +54,7 @@ public class DefaultBlock extends ValidatingConfig<StandaloneCatalog> implements
     private Double minTopUpCredit;
 
     // Not defined in catalog
-    private DefaultUsage usage;
+    private PlanPhase phase;
 
     @Override
     public BlockType getType() {
@@ -77,7 +79,7 @@ public class DefaultBlock extends ValidatingConfig<StandaloneCatalog> implements
     @Override
     public Double getMinTopUpCredit() throws CatalogApiException {
         if (minTopUpCredit != null && type != BlockType.TOP_UP) {
-            throw new CatalogApiException(ErrorCode.CAT_NOT_TOP_UP_BLOCK, usage.getPhase().getName());
+            throw new CatalogApiException(ErrorCode.CAT_NOT_TOP_UP_BLOCK, phase.getName());
         }
         return minTopUpCredit;
     }
@@ -86,7 +88,7 @@ public class DefaultBlock extends ValidatingConfig<StandaloneCatalog> implements
     public ValidationErrors validate(final StandaloneCatalog catalog, final ValidationErrors errors) {
         if (type == BlockType.TOP_UP && minTopUpCredit == null) {
             errors.add(new ValidationError(String.format("TOP_UP block needs to define minTopUpCredit for phase %s",
-                                                         usage.getPhase().toString()), catalog.getCatalogURI(), DefaultUsage.class, ""));
+                                                         phase.getName()), catalog.getCatalogURI(), DefaultUsage.class, ""));
         }
         return errors;
     }
@@ -116,8 +118,8 @@ public class DefaultBlock extends ValidatingConfig<StandaloneCatalog> implements
         return this;
     }
 
-    public DefaultBlock setUsage(final DefaultUsage usage) {
-        this.usage = usage;
+    public DefaultBlock setPhase(final PlanPhase phase) {
+        this.phase = phase;
         return this;
     }
 }
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultLimit.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultLimit.java
index 343202c..4fd6ff9 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultLimit.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultLimit.java
@@ -1,7 +1,9 @@
 /*
  * Copyright 2010-2011 Ning, Inc.
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
  *
- * Ning licenses this file to you under the Apache License, version 2.0
+ * 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:
  *
@@ -28,19 +30,17 @@ import org.killbill.xmlloader.ValidationErrors;
 
 @XmlAccessorType(XmlAccessType.NONE)
 public class DefaultLimit extends ValidatingConfig<StandaloneCatalog> implements Limit {
+
     @XmlElement(required = true)
     @XmlIDREF
     private DefaultUnit unit;
 
     @XmlElement(required = false)
     private Double max;
-    
+
     @XmlElement(required = false)
     private Double min;
 
-    // Not defined in catalog
-    private DefaultUsage usage;
-    
     /* (non-Javadoc)
      * @see org.killbill.billing.catalog.Limit#getUnit()
      */
@@ -67,10 +67,10 @@ public class DefaultLimit extends ValidatingConfig<StandaloneCatalog> implements
 
     @Override
     public ValidationErrors validate(StandaloneCatalog root, ValidationErrors errors) {
-        if(max == null && min == null) {
-            errors.add(new ValidationError("max and min cannot both be ommitted",root.getCatalogURI(), Limit.class, ""));
+        if (max == null && min == null) {
+            errors.add(new ValidationError("max and min cannot both be ommitted", root.getCatalogURI(), Limit.class, ""));
         } else if (max != null && min != null && max.doubleValue() < min.doubleValue()) {
-            errors.add(new ValidationError("max must be greater than min",root.getCatalogURI(), Limit.class, ""));
+            errors.add(new ValidationError("max must be greater than min", root.getCatalogURI(), Limit.class, ""));
         }
 
         return errors;
@@ -105,9 +105,4 @@ public class DefaultLimit extends ValidatingConfig<StandaloneCatalog> implements
         this.min = min;
         return this;
     }
-
-    public DefaultLimit setUsage(final DefaultUsage usage) {
-        this.usage = usage;
-        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 ff0507b..ec69d44 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
@@ -163,7 +163,7 @@ public class DefaultPlanPhase extends ValidatingConfig<StandaloneCatalog> implem
         return this;
     }
 
-    protected DefaultPlanPhase setUsages(final DefaultUsage []  usages) {
+    protected DefaultPlanPhase setUsages(final DefaultUsage[] usages) {
         this.usages = usages;
         return this;
     }
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTier.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTier.java
index 2b4841b..a00ae85 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTier.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTier.java
@@ -1,7 +1,8 @@
 /*
- * Copyright 2014 The Billing Project, LLC
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
  *
- * Ning licenses this file to you under the Apache License, version 2.0
+ * 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:
  *
@@ -22,10 +23,9 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 
 import org.killbill.billing.catalog.api.BillingMode;
-import org.killbill.billing.catalog.api.Block;
 import org.killbill.billing.catalog.api.InternationalPrice;
+import org.killbill.billing.catalog.api.PlanPhase;
 import org.killbill.billing.catalog.api.Tier;
-import org.killbill.billing.catalog.api.TieredBlock;
 import org.killbill.billing.catalog.api.UsageType;
 import org.killbill.xmlloader.ValidatingConfig;
 import org.killbill.xmlloader.ValidationError;
@@ -50,9 +50,10 @@ public class DefaultTier extends ValidatingConfig<StandaloneCatalog> implements 
     @XmlElement(required = false)
     private DefaultInternationalPrice recurringPrice;
 
-
     // Not defined in catalog
-    private DefaultUsage usage;
+    private BillingMode billingMode;
+    private UsageType usageType;
+    private PlanPhase phase;
 
     @Override
     public DefaultLimit[] getLimits() {
@@ -84,8 +85,16 @@ public class DefaultTier extends ValidatingConfig<StandaloneCatalog> implements 
         return this;
     }
 
-    public DefaultTier setUsage(final DefaultUsage usage) {
-        this.usage = usage;
+    public void setBillingMode(final BillingMode billingMode) {
+        this.billingMode = billingMode;
+    }
+
+    public void setUsageType(final UsageType usageType) {
+        this.usageType = usageType;
+    }
+
+    public DefaultTier setPhase(final PlanPhase phase) {
+        this.phase = phase;
         return this;
     }
 
@@ -101,14 +110,13 @@ public class DefaultTier extends ValidatingConfig<StandaloneCatalog> implements 
 
     @Override
     public ValidationErrors validate(final StandaloneCatalog catalog, final ValidationErrors errors) {
-
-        if (usage.getBillingMode() == BillingMode.IN_ARREAR && usage.getUsageType() == UsageType.CAPACITY && limits.length == 0) {
+        if (billingMode == BillingMode.IN_ARREAR && usageType == UsageType.CAPACITY && limits.length == 0) {
             errors.add(new ValidationError(String.format("Usage [IN_ARREAR CAPACITY] section of phase %s needs to define some limits",
-                                                         usage.getPhase().toString()), catalog.getCatalogURI(), DefaultUsage.class, ""));
+                                                         phase.getName()), catalog.getCatalogURI(), DefaultUsage.class, ""));
         }
-        if (usage.getBillingMode() == BillingMode.IN_ARREAR && usage.getUsageType() == UsageType.CONSUMABLE && blocks.length == 0) {
+        if (billingMode == BillingMode.IN_ARREAR && usageType == UsageType.CONSUMABLE && blocks.length == 0) {
             errors.add(new ValidationError(String.format("Usage [IN_ARREAR CONSUMABLE] section of phase %s needs to define some blocks",
-                                                         usage.getPhase().toString()), catalog.getCatalogURI(), DefaultUsage.class, ""));
+                                                         phase.getName()), catalog.getCatalogURI(), DefaultUsage.class, ""));
         }
         validateCollection(catalog, errors, limits);
         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 0a15162..fefc3ef 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
@@ -1,7 +1,8 @@
 /*
- * Copyright 2014 The Billing Project, LLC
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
  *
- * Ning licenses this file to you under the Apache License, version 2.0
+ * 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:
  *
@@ -77,7 +78,6 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
     @XmlElement(required = false)
     private DefaultInternationalPrice recurringPrice;
 
-
     // Not exposed in xml.
     private PlanPhase phase;
 
@@ -159,23 +159,18 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
     public void initialize(final StandaloneCatalog root, final URI uri) {
         for (DefaultLimit limit : limits) {
             limit.initialize(root, uri);
-            limit.setUsage(this);
         }
         for (DefaultBlock block : blocks) {
             block.initialize(root, uri);
-            block.setUsage(this);
+            block.setPhase(phase);
         }
 
         for (DefaultTier tier : tiers) {
             tier.initialize(root, uri);
-            tier.setUsage(this);
+            tier.setPhase(phase);
         }
     }
 
-    public PlanPhase getPhase() {
-        return phase;
-    }
-
     public DefaultUsage setBillingPeriod(final BillingPeriod billingPeriod) {
         this.billingPeriod = billingPeriod;
         return this;
@@ -206,7 +201,6 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
         return this;
     }
 
-
     public DefaultUsage setBlocks(final DefaultBlock[] blocks) {
         this.blocks = blocks;
         return this;