killbill-aplcache
Changes
subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java 8(+1 -7)
Details
diff --git a/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v1.xml b/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v1.xml
index 11044e6..a8456f3 100644
--- a/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v1.xml
+++ b/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v1.xml
@@ -334,6 +334,8 @@
<plan>pistol-monthly</plan>
<plan>shotgun-monthly</plan>
<plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
<childPriceList name="SpecialDiscount">
diff --git a/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v2.xml b/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v2.xml
index e1bed72..d75891d 100644
--- a/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v2.xml
+++ b/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v2.xml
@@ -295,6 +295,8 @@
<plans>
<plan>shotgun-monthly</plan>
<plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
<childPriceList name="SpecialDiscount">
diff --git a/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v3.xml b/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v3.xml
index f5501e5..8ad8ba4 100644
--- a/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v3.xml
+++ b/beatrix/src/test/resources/retiredCatalogs/WeaponsHireSmall-v3.xml
@@ -215,6 +215,9 @@
<defaultPriceList name="DEFAULT">
<plans>
<plan>shotgun-monthly</plan>
+ <plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
</priceLists>
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 52e02e7..7cedb32 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
@@ -38,6 +38,7 @@ import org.killbill.billing.catalog.api.PhaseType;
import org.killbill.billing.catalog.api.Plan;
import org.killbill.billing.catalog.api.PlanPhase;
import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
+import org.killbill.billing.catalog.api.PriceList;
import org.killbill.billing.catalog.api.Product;
import org.killbill.billing.catalog.api.Recurring;
import org.killbill.xmlloader.ValidatingConfig;
@@ -73,6 +74,7 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
@XmlElement(required = false)
private Integer plansAllowedInBundle = 1;
+ private PriceList priceList;
public DefaultPlan() {
initialPhases = new DefaultPlanPhase[0];
@@ -88,7 +90,7 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
initialPhases[i] = newPhase;
}
this.finalPhase = new DefaultPlanPhase(this, in.getFinalPhase(), overrides[overrides.length - 1]);
-
+ this.priceList = in.getPriceList();
}
/* (non-Javadoc)
* @see org.killbill.billing.catalog.IPlan#getEffectiveDateForExistingSubscriptons()
@@ -113,6 +115,11 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
return product;
}
+ @Override
+ public PriceList getPriceList() {
+ return priceList;
+ }
+
/* (non-Javadoc)
* @see org.killbill.billing.catalog.IPlan#getName()
*/
@@ -189,8 +196,11 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
p.initialize(catalog, sourceURI);
}
}
+ this.priceList = findPriceListForPlan(catalog);
}
+
+
@Override
public ValidationErrors validate(final StandaloneCatalog catalog, final ValidationErrors errors) {
if (effectiveDateForExistingSubscriptons != null &&
@@ -226,6 +236,11 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
return this;
}
+ public DefaultPlan setPriceList(final DefaultPriceList priceList) {
+ this.priceList = priceList;
+ return this;
+ }
+
public DefaultPlan setInitialPhases(final DefaultPlanPhase[] phases) {
this.initialPhases = phases;
return this;
@@ -307,4 +322,15 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
+ Arrays.toString(initialPhases) + ", finalPhase=" + finalPhase + ", plansAllowedInBundle="
+ plansAllowedInBundle + "]";
}
+
+ private DefaultPriceList findPriceListForPlan(final StandaloneCatalog catalog) {
+ for (PriceList cur : catalog.getPriceLists().getAllPriceLists()) {
+ for (Plan p : cur.getPlans()) {
+ if (p.getName().equals(name)) {
+ return (DefaultPriceList) cur;
+ }
+ }
+ }
+ throw new IllegalStateException("Cannot extract pricelist for plan " + name);
+ }
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/io/VersionedCatalogLoader.java b/catalog/src/main/java/org/killbill/billing/catalog/io/VersionedCatalogLoader.java
index 3b5f7de..9b8df53 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/io/VersionedCatalogLoader.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/io/VersionedCatalogLoader.java
@@ -77,7 +77,7 @@ public class VersionedCatalogLoader implements CatalogLoader {
}
return result;
} catch (Exception e) {
- throw new CatalogApiException(ErrorCode.CAT_INVALID_DEFAULT, "Problem encountered loading catalog ", e);
+ throw new CatalogApiException(ErrorCode.CAT_INVALID_DEFAULT, "Problem encountered loading catalog: ", e.getMessage());
}
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/plugin/VersionedCatalogMapper.java b/catalog/src/main/java/org/killbill/billing/catalog/plugin/VersionedCatalogMapper.java
index 39ec3fa..1c6ba8c 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/plugin/VersionedCatalogMapper.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/plugin/VersionedCatalogMapper.java
@@ -17,10 +17,8 @@
package org.killbill.billing.catalog.plugin;
-import java.util.ArrayList;
import java.util.List;
-import javax.annotation.Nullable;
import javax.inject.Inject;
import org.killbill.billing.callcontext.InternalTenantContext;
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 0d02237..9520d62 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/StandaloneCatalog.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/StandaloneCatalog.java
@@ -281,9 +281,9 @@ public class StandaloneCatalog extends ValidatingConfig<StandaloneCatalog> imple
for (final DefaultPlan p : plans) {
p.initialize(catalog, sourceURI);
}
-
}
+
//////////////////////////////////////////////////////////////////////////////
//
// UNIT LIMIT
diff --git a/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-1.xml b/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-1.xml
index 978b238..b2b9276 100644
--- a/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-1.xml
+++ b/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-1.xml
@@ -276,6 +276,8 @@
<plan>pistol-monthly</plan>
<plan>shotgun-monthly</plan>
<plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
</priceLists>
diff --git a/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-2.xml b/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-2.xml
index 9801e42..251678b 100644
--- a/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-2.xml
+++ b/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-2.xml
@@ -278,6 +278,8 @@
<plan>pistol-monthly</plan>
<plan>shotgun-monthly</plan>
<plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
</priceLists>
diff --git a/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-3.xml b/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-3.xml
index 453a143..bdeca61 100644
--- a/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-3.xml
+++ b/catalog/src/test/resources/versionedCatalog/WeaponsHireSmall-3.xml
@@ -277,6 +277,8 @@
<plan>pistol-monthly</plan>
<plan>shotgun-monthly</plan>
<plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
</priceLists>
diff --git a/catalog/src/test/resources/WeaponsHireSmall.xml b/catalog/src/test/resources/WeaponsHireSmall.xml
index c0501d3..5adfb99 100644
--- a/catalog/src/test/resources/WeaponsHireSmall.xml
+++ b/catalog/src/test/resources/WeaponsHireSmall.xml
@@ -310,6 +310,8 @@
<plan>pistol-monthly</plan>
<plan>shotgun-monthly</plan>
<plan>shotgun-annual</plan>
+ <plan>laser-scope-monthly</plan>
+ <plan>extra-ammo-monthly</plan>
</plans>
</defaultPriceList>
</priceLists>
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
index e365246..d1a805b 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBase.java
@@ -569,7 +569,6 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
EntitlementState nextState = null;
String nextPlanName = null;
String nextPhaseName = null;
- String nextPriceListName = null;
UUID prevEventId = null;
DateTime prevCreatedDate = null;
@@ -620,12 +619,10 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
nextState = EntitlementState.ACTIVE;
nextPlanName = userEV.getEventPlan();
nextPhaseName = userEV.getEventPlanPhase();
- nextPriceListName = userEV.getPriceList();
break;
case CHANGE:
nextPlanName = userEV.getEventPlan();
nextPhaseName = userEV.getEventPlanPhase();
- nextPriceListName = userEV.getPriceList();
break;
case CANCEL:
nextState = EntitlementState.CANCELLED;
@@ -650,10 +647,7 @@ public class DefaultSubscriptionBase extends EntityBase implements SubscriptionB
nextPlan = (nextPlanName != null) ? catalog.findPlan(nextPlanName, cur.getEffectiveDate(), getAlignStartDate()) : null;
nextPhase = (nextPhaseName != null) ? catalog.findPhase(nextPhaseName, cur.getEffectiveDate(), getAlignStartDate()) : null;
-
- // See issue https://github.com/killbill/killbill/issues/464
- final DateTime catalogEffectiveDateForPriceList = transitions.isEmpty() ? cur.getEffectiveDate() : transitions.get(0).getEffectiveTransitionTime();
- nextPriceList = (nextPriceListName != null) ? catalog.findPriceList(nextPriceListName, catalogEffectiveDateForPriceList) : null;
+ nextPriceList = (nextPlan != null) ? nextPlan.getPriceList() : null;
final SubscriptionBaseTransitionData transition = new SubscriptionBaseTransitionData(
cur.getId(), id, bundleId, cur.getType(), apiEventType,
diff --git a/subscription/src/test/java/org/killbill/billing/subscription/api/migration/TestMigration.java b/subscription/src/test/java/org/killbill/billing/subscription/api/migration/TestMigration.java
index 322b6ca..9bea4d5 100644
--- a/subscription/src/test/java/org/killbill/billing/subscription/api/migration/TestMigration.java
+++ b/subscription/src/test/java/org/killbill/billing/subscription/api/migration/TestMigration.java
@@ -156,7 +156,6 @@ public class TestMigration extends SubscriptionTestSuiteWithEmbeddedDB {
assertTrue(subscription.getStartDate().compareTo(startDate) == 0);
assertNotNull(subscription.getEndDate());
- assertEquals(subscription.getCurrentPriceList().getName(), PriceListSet.DEFAULT_PRICELIST_NAME);
assertEquals(subscription.getCurrentPhase(), null);
assertEquals(subscription.getState(), EntitlementState.CANCELLED);
assertNull(subscription.getCurrentPlan());
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 0b5e92d..004346e 100644
--- a/util/src/test/java/org/killbill/billing/mock/MockPlan.java
+++ b/util/src/test/java/org/killbill/billing/mock/MockPlan.java
@@ -26,6 +26,7 @@ import org.killbill.billing.catalog.api.CatalogApiException;
import org.killbill.billing.catalog.api.PhaseType;
import org.killbill.billing.catalog.api.Plan;
import org.killbill.billing.catalog.api.PlanPhase;
+import org.killbill.billing.catalog.api.PriceList;
import org.killbill.billing.catalog.api.Product;
public class MockPlan implements Plan {
@@ -52,6 +53,11 @@ public class MockPlan implements Plan {
}
@Override
+ public PriceList getPriceList() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public String getName() {
return name;
}