killbill-aplcache

jaxrs: Remove DefaultVersionedCatalog cast in CatalogResource

12/1/2015 11:34:01 PM

Details

diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceListSet.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceListSet.java
index 3dfbe13..8c01b12 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceListSet.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceListSet.java
@@ -26,6 +26,7 @@ import java.util.List;
 import org.killbill.billing.ErrorCode;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.CatalogApiException;
+import org.killbill.billing.catalog.api.Plan;
 import org.killbill.billing.catalog.api.PriceList;
 import org.killbill.billing.catalog.api.PriceListSet;
 import org.killbill.billing.catalog.api.Product;
@@ -34,7 +35,7 @@ import org.killbill.xmlloader.ValidationError;
 import org.killbill.xmlloader.ValidationErrors;
 
 @XmlAccessorType(XmlAccessType.NONE)
-public class DefaultPriceListSet extends ValidatingConfig<StandaloneCatalog> {
+public class DefaultPriceListSet extends ValidatingConfig<StandaloneCatalog> implements PriceListSet {
     @XmlElement(required = true, name = "defaultPriceList")
     private PriceListDefault defaultPricelist;
 
@@ -103,6 +104,7 @@ public class DefaultPriceListSet extends ValidatingConfig<StandaloneCatalog> {
         return childPriceLists;
     }
 
+    @Override
     public List<PriceList> getAllPriceLists() {
         final List<PriceList> result = new ArrayList<PriceList>(childPriceLists.length + 1);
         result.add(getDefaultPricelist());
@@ -139,4 +141,9 @@ public class DefaultPriceListSet extends ValidatingConfig<StandaloneCatalog> {
         result = 31 * result + (childPriceLists != null ? Arrays.hashCode(childPriceLists) : 0);
         return result;
     }
+
+    @Override
+    public Plan getPlanListFrom(final String s, final Product product, final BillingPeriod billingPeriod) {
+        return null;
+    }
 }
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java b/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java
index 3841905..b0aa352 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/VersionedCatalog.java
@@ -52,6 +52,7 @@ import org.killbill.billing.catalog.api.PlanPhasePriceOverridesWithCallContext;
 import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
 import org.killbill.billing.catalog.api.PlanSpecifier;
 import org.killbill.billing.catalog.api.PriceList;
+import org.killbill.billing.catalog.api.PriceListSet;
 import org.killbill.billing.catalog.api.Product;
 import org.killbill.billing.catalog.api.StaticCatalog;
 import org.killbill.billing.catalog.api.Unit;
@@ -253,7 +254,8 @@ public class VersionedCatalog extends ValidatingConfig<StandaloneCatalogWithPric
         return versionForDate(requestedDate).getCurrentPlans();
     }
 
-    public DefaultPriceListSet getPriceLists(final DateTime requestedDate) throws CatalogApiException {
+    @Override
+    public PriceListSet getPriceLists(final DateTime requestedDate) throws CatalogApiException {
         return versionForDate(requestedDate).getStandaloneCatalog().getPriceLists();
     }
 
@@ -400,7 +402,8 @@ public class VersionedCatalog extends ValidatingConfig<StandaloneCatalogWithPric
         return versionForDate(clock.getUTCNow()).getEffectiveDate();
     }
 
-    public Date getEffectiveDate(final DateTime requestedDate) throws CatalogApiException {
+    @Override
+    public Date getStandaloneCatalogEffectiveDate(final DateTime requestedDate) throws CatalogApiException {
         return versionForDate(requestedDate).getEffectiveDate();
     }
 
diff --git a/catalog/src/test/java/org/killbill/billing/catalog/MockCatalog.java b/catalog/src/test/java/org/killbill/billing/catalog/MockCatalog.java
index 381749e..f4a20e3 100644
--- a/catalog/src/test/java/org/killbill/billing/catalog/MockCatalog.java
+++ b/catalog/src/test/java/org/killbill/billing/catalog/MockCatalog.java
@@ -35,6 +35,7 @@ import org.killbill.billing.catalog.api.PlanPhasePriceOverridesWithCallContext;
 import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
 import org.killbill.billing.catalog.api.PlanSpecifier;
 import org.killbill.billing.catalog.api.PriceList;
+import org.killbill.billing.catalog.api.PriceListSet;
 import org.killbill.billing.catalog.api.Product;
 import org.killbill.billing.catalog.rules.DefaultCaseCancelPolicy;
 import org.killbill.billing.catalog.rules.DefaultCaseChangePlanAlignment;
@@ -88,6 +89,11 @@ public class MockCatalog extends StandaloneCatalog implements Catalog {
     }
 
     @Override
+    public Date getStandaloneCatalogEffectiveDate(final DateTime dateTime) throws CatalogApiException {
+        return getEffectiveDate();
+    }
+
+    @Override
     public Currency[] getSupportedCurrencies(final DateTime requestedDate) throws CatalogApiException {
         return getCurrentSupportedCurrencies();
     }
@@ -103,6 +109,11 @@ public class MockCatalog extends StandaloneCatalog implements Catalog {
     }
 
     @Override
+    public PriceListSet getPriceLists(final DateTime dateTime) throws CatalogApiException {
+        return getPriceLists();
+    }
+
+    @Override
     public Plan findPlan(final String name, final DateTime requestedDate) throws CatalogApiException {
         return findCurrentPlan(name);
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/CatalogJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/CatalogJson.java
index 44eef61..541860c 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/CatalogJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/CatalogJson.java
@@ -30,6 +30,7 @@ import org.joda.time.DateTime;
 import org.killbill.billing.catalog.DefaultPriceListSet;
 import org.killbill.billing.catalog.VersionedCatalog;
 import org.killbill.billing.catalog.api.BillingPeriod;
+import org.killbill.billing.catalog.api.Catalog;
 import org.killbill.billing.catalog.api.CatalogApiException;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.catalog.api.CurrencyValueNull;
@@ -37,6 +38,7 @@ import org.killbill.billing.catalog.api.Plan;
 import org.killbill.billing.catalog.api.PlanPhase;
 import org.killbill.billing.catalog.api.Price;
 import org.killbill.billing.catalog.api.PriceList;
+import org.killbill.billing.catalog.api.PriceListSet;
 import org.killbill.billing.catalog.api.Product;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -67,9 +69,9 @@ public class CatalogJson {
     }
 
 
-    public CatalogJson(final VersionedCatalog catalog, final DateTime requestedDate) throws CatalogApiException {
+    public CatalogJson(final Catalog catalog, final DateTime requestedDate) throws CatalogApiException {
         name = catalog.getCatalogName();
-        effectiveDate = catalog.getEffectiveDate(requestedDate);
+        effectiveDate = catalog.getStandaloneCatalogEffectiveDate(requestedDate);
         currencies = Arrays.asList(catalog.getSupportedCurrencies(requestedDate));
         priceLists = new ArrayList<PriceListJson>();
 
@@ -107,7 +109,7 @@ public class CatalogJson {
 
         products = ImmutableList.<ProductJson>copyOf(productMap.values());
 
-        final DefaultPriceListSet priceLists = catalog.getPriceLists(requestedDate);
+        final PriceListSet priceLists = catalog.getPriceLists(requestedDate);
         for (PriceList childPriceList : priceLists.getAllPriceLists()) {
             this.priceLists.add(new PriceListJson(childPriceList));
         }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
index 31e33a1..35db125 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
@@ -137,7 +137,7 @@ public class CatalogResource extends JaxRsResourceBase {
 
         final TenantContext tenantContext = context.createContext(request);
         final Catalog catalog = catalogUserApi.getCatalog(catalogName, tenantContext);
-        final CatalogJson json = new CatalogJson((VersionedCatalog) catalog, catalogDateVersion);
+        final CatalogJson json = new CatalogJson(catalog, catalogDateVersion);
         return Response.status(Status.OK).entity(json).build();
     }