killbill-aplcache
Changes
catalog/src/main/java/org/killbill/billing/catalog/caching/EhCacheOverriddenPlanCache.java 75(+43 -32)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionModelDao.java 3(+0 -3)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionSqlDao.java 4(+0 -4)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageModelDao.java 3(+0 -3)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageSqlDao.java 4(+0 -4)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockModelDao.java 3(+0 -3)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierDefinitionModelDao.java 3(+0 -3)
catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageDefinitionModelDao.java 3(+0 -3)
Details
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/caching/EhCacheOverriddenPlanCache.java b/catalog/src/main/java/org/killbill/billing/catalog/caching/EhCacheOverriddenPlanCache.java
index dcc41ec..5779460 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/caching/EhCacheOverriddenPlanCache.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/caching/EhCacheOverriddenPlanCache.java
@@ -17,20 +17,33 @@
package org.killbill.billing.catalog.caching;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-
-import javax.annotation.Nullable;
-import javax.inject.Inject;
-
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
import org.killbill.billing.ErrorCode;
import org.killbill.billing.ObjectType;
import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.catalog.*;
-import org.killbill.billing.catalog.api.*;
-import org.killbill.billing.catalog.dao.*;
+import org.killbill.billing.catalog.DefaultPlan;
+import org.killbill.billing.catalog.DefaultPlanPhasePriceOverride;
+import org.killbill.billing.catalog.DefaultTierPriceOverride;
+import org.killbill.billing.catalog.DefaultTieredBlockPriceOverride;
+import org.killbill.billing.catalog.DefaultUsagePriceOverride;
+import org.killbill.billing.catalog.api.CatalogApiException;
+import org.killbill.billing.catalog.api.Currency;
+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.StaticCatalog;
+import org.killbill.billing.catalog.api.Tier;
+import org.killbill.billing.catalog.api.TierPriceOverride;
+import org.killbill.billing.catalog.api.TieredBlock;
+import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.catalog.api.UsagePriceOverride;
+import org.killbill.billing.catalog.dao.CatalogOverrideBlockDefinitionModelDao;
+import org.killbill.billing.catalog.dao.CatalogOverrideDao;
+import org.killbill.billing.catalog.dao.CatalogOverridePhaseDefinitionModelDao;
+import org.killbill.billing.catalog.dao.CatalogOverrideTierDefinitionModelDao;
+import org.killbill.billing.catalog.dao.CatalogOverrideUsageDefinitionModelDao;
import org.killbill.billing.catalog.override.DefaultPriceOverride;
import org.killbill.billing.util.cache.Cachable.CacheType;
import org.killbill.billing.util.cache.CacheController;
@@ -38,8 +51,10 @@ import org.killbill.billing.util.cache.CacheControllerDispatcher;
import org.killbill.billing.util.cache.CacheLoaderArgument;
import org.killbill.billing.util.cache.OverriddenPlanCacheLoader.LoaderCallback;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
@@ -112,11 +127,10 @@ public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
List<UsagePriceOverride> getUsagePriceOverrides(PlanPhase curPhase, CatalogOverridePhaseDefinitionModelDao overriddenPhase, final InternalTenantContext context) {
final List<UsagePriceOverride> usagePriceOverrides = new ArrayList<UsagePriceOverride>();
+ final List<CatalogOverrideUsageDefinitionModelDao> usageDefs = overrideDao.getOverriddenPhaseUsages(overriddenPhase.getRecordId(), context);
+
for(int i = 0; i < curPhase.getUsages().length; i++){
final Usage curUsage = curPhase.getUsages()[i];
-
- final List<CatalogOverrideUsageDefinitionModelDao> usageDefs = overrideDao.getOverriddenPhaseUsages(overriddenPhase.getRecordId(), context);
-
final CatalogOverrideUsageDefinitionModelDao overriddenUsage = Iterables.tryFind(usageDefs, new Predicate<CatalogOverrideUsageDefinitionModelDao>() {
@Override
public boolean apply(final CatalogOverrideUsageDefinitionModelDao input) {
@@ -128,8 +142,6 @@ public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
List<TierPriceOverride> tierPriceOverrides = getTierPriceOverrides(curUsage, overriddenUsage, context);
usagePriceOverrides.add(new DefaultUsagePriceOverride(overriddenUsage.getParentUsageName(), curUsage.getUsageType(),tierPriceOverrides));
}
- else
- usagePriceOverrides.add(null);
}
return usagePriceOverrides;
}
@@ -137,12 +149,12 @@ public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
List<TierPriceOverride> getTierPriceOverrides(Usage curUsage, CatalogOverrideUsageDefinitionModelDao overriddenUsage, final InternalTenantContext context) {
final List<TierPriceOverride> tierPriceOverrides = new ArrayList<TierPriceOverride>();
+
+ final List<CatalogOverrideTierDefinitionModelDao> tierDefs = overrideDao.getOverriddenUsageTiers(overriddenUsage.getRecordId(), context);
for(int i = 0; i < curUsage.getTiers().length; i++){
final Tier curTier = curUsage.getTiers()[i];
final TieredBlock[] curTieredBlocks = curTier.getTieredBlocks();
- final List<CatalogOverrideTierDefinitionModelDao> tierDefs = overrideDao.getOverriddenUsageTiers(overriddenUsage.getRecordId(), context);
-
final CatalogOverrideTierDefinitionModelDao overriddenTier = Iterables.tryFind(tierDefs, new Predicate<CatalogOverrideTierDefinitionModelDao>() {
@Override
public boolean apply(final CatalogOverrideTierDefinitionModelDao input) {
@@ -153,10 +165,10 @@ public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
Double max = blockDef.getMax();
Double size = blockDef.getSize();
- for(int j=0; j <curTieredBlocks.length;j++)
- if (unitName.equals(curTieredBlocks[j].getUnit().getName()) &&
- Double.compare(size, curTieredBlocks[j].getSize()) == 0 &&
- Double.compare(max, curTieredBlocks[j].getMax()) == 0) {
+ for(TieredBlock curTieredBlock : curTieredBlocks)
+ if (unitName.equals(curTieredBlock.getUnit().getName()) &&
+ Double.compare(size, curTieredBlock.getSize()) == 0 &&
+ Double.compare(max, curTieredBlock.getMax()) == 0) {
return true;
}
}
@@ -169,8 +181,6 @@ public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
List<TieredBlockPriceOverride> tieredBlockPriceOverrides = getTieredBlockPriceOverrides(curTier, overriddenTier, context);
tierPriceOverrides.add(new DefaultTierPriceOverride(tieredBlockPriceOverrides));
}
- else
- tierPriceOverrides.add(null);
}
return tierPriceOverrides;
}
@@ -178,21 +188,22 @@ public class EhCacheOverriddenPlanCache implements OverriddenPlanCache {
List<TieredBlockPriceOverride> getTieredBlockPriceOverrides(Tier curTier, CatalogOverrideTierDefinitionModelDao overriddenTier, final InternalTenantContext context) {
final List<TieredBlockPriceOverride> blockPriceOverrides = new ArrayList<TieredBlockPriceOverride>();
- for(int i = 0; i < curTier.getTieredBlocks().length; i++){
- final List<CatalogOverrideBlockDefinitionModelDao> blockDefs = overrideDao.getOverriddenTierBlocks(overriddenTier.getRecordId(), context);
+ final List<CatalogOverrideBlockDefinitionModelDao> blockDefs = overrideDao.getOverriddenTierBlocks(overriddenTier.getRecordId(), context);
+ for(int i = 0; i < curTier.getTieredBlocks().length; i++){
+ final TieredBlock curTieredBlock = curTier.getTieredBlocks()[i];
final CatalogOverrideBlockDefinitionModelDao overriddenTierBlock = Iterables.tryFind(blockDefs, new Predicate<CatalogOverrideBlockDefinitionModelDao>() {
@Override
public boolean apply(final CatalogOverrideBlockDefinitionModelDao input) {
- return true;
- }
+ return (input.getParentUnitName().equals(curTieredBlock.getUnit().getName()) &&
+ Double.compare(input.getSize(), curTieredBlock.getSize()) == 0 &&
+ Double.compare(input.getMax(), curTieredBlock.getMax()) == 0);
+ }
}).orNull();
if(overriddenTierBlock != null)
blockPriceOverrides.add(new DefaultTieredBlockPriceOverride(overriddenTierBlock.getParentUnitName(), overriddenTierBlock.getSize(), overriddenTierBlock.getPrice(), overriddenTierBlock.getMax()));
- else
- blockPriceOverrides.add(null);
}
return blockPriceOverrides;
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionModelDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionModelDao.java
index 6b9ee0b..319b0de 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionModelDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionModelDao.java
@@ -4,9 +4,6 @@ import org.joda.time.DateTime;
import java.math.BigDecimal;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
public class CatalogOverrideBlockDefinitionModelDao {
private Long recordId;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionSqlDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionSqlDao.java
index 3121b91..0587ee1 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionSqlDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideBlockDefinitionSqlDao.java
@@ -1,9 +1,5 @@
package org.killbill.billing.catalog.dao;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
-
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.util.entity.dao.EntitySqlDaoStringTemplate;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageModelDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageModelDao.java
index f2b54d8..5e98460 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageModelDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageModelDao.java
@@ -2,9 +2,6 @@ package org.killbill.billing.catalog.dao;
import org.joda.time.DateTime;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
public class CatalogOverridePhaseUsageModelDao {
private Short usageNumber;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageSqlDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageSqlDao.java
index b5df5f3..512197b 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageSqlDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverridePhaseUsageSqlDao.java
@@ -1,8 +1,5 @@
package org.killbill.billing.catalog.dao;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.util.entity.dao.EntitySqlDaoStringTemplate;
@@ -17,7 +14,6 @@ import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
import java.util.Collection;
import java.util.List;
-
@EntitySqlDaoStringTemplate
public interface CatalogOverridePhaseUsageSqlDao extends Transactional<CatalogOverridePhaseUsageSqlDao>, CloseMe {
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockModelDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockModelDao.java
index bbc7451..f364926 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockModelDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockModelDao.java
@@ -2,9 +2,6 @@ package org.killbill.billing.catalog.dao;
import org.joda.time.DateTime;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
public class CatalogOverrideTierBlockModelDao {
private Short blockNumber;
private Long recordId;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockSqlDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockSqlDao.java
index 64ddbe5..e683a9d 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockSqlDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierBlockSqlDao.java
@@ -1,9 +1,5 @@
package org.killbill.billing.catalog.dao;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
-
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.util.entity.dao.EntitySqlDaoStringTemplate;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierDefinitionModelDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierDefinitionModelDao.java
index cba6fbb..91c5470 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierDefinitionModelDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideTierDefinitionModelDao.java
@@ -4,9 +4,6 @@ import org.joda.time.DateTime;
import java.math.BigDecimal;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
public class CatalogOverrideTierDefinitionModelDao {
private Long recordId;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageDefinitionModelDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageDefinitionModelDao.java
index 568be92..542054e 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageDefinitionModelDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageDefinitionModelDao.java
@@ -4,9 +4,6 @@ import org.joda.time.DateTime;
import java.math.BigDecimal;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
public class CatalogOverrideUsageDefinitionModelDao {
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageTierModelDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageTierModelDao.java
index 8061f63..349c76d 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageTierModelDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/CatalogOverrideUsageTierModelDao.java
@@ -2,9 +2,6 @@ package org.killbill.billing.catalog.dao;
import org.joda.time.DateTime;
-/**
- * Created by sruthipendyala on 10/7/16.
- */
public class CatalogOverrideUsageTierModelDao {
private Long recordId;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/dao/DefaultCatalogOverrideDao.java b/catalog/src/main/java/org/killbill/billing/catalog/dao/DefaultCatalogOverrideDao.java
index f3dcbf0..4085ce8 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/dao/DefaultCatalogOverrideDao.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/dao/DefaultCatalogOverrideDao.java
@@ -18,20 +18,19 @@
package org.killbill.billing.catalog.dao;
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.StreamSupport;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
+import com.google.inject.Inject;
import org.joda.time.DateTime;
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.catalog.DefaultTierPriceOverride;
-import org.killbill.billing.catalog.DefaultTieredBlockPriceOverride;
-import org.killbill.billing.catalog.DefaultUsagePriceOverride;
-import org.killbill.billing.catalog.api.*;
+import org.killbill.billing.catalog.api.Currency;
+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.Tier;
+import org.killbill.billing.catalog.api.TierPriceOverride;
+import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.catalog.api.UsagePriceOverride;
import org.killbill.clock.Clock;
import org.killbill.commons.jdbi.mapper.LowerToCamelBeanMapperFactory;
import org.skife.jdbi.v2.DBI;
@@ -40,9 +39,8 @@ import org.skife.jdbi.v2.IDBI;
import org.skife.jdbi.v2.TransactionCallback;
import org.skife.jdbi.v2.TransactionStatus;
-import com.google.inject.Inject;
-
-import javax.annotation.Nullable;
+import java.util.ArrayList;
+import java.util.List;
public class DefaultCatalogOverrideDao implements CatalogOverrideDao {
@@ -123,7 +121,7 @@ public class DefaultCatalogOverrideDao implements CatalogOverrideDao {
sqlDao.create(modelDao, context);
}
- private CatalogOverridePhaseDefinitionModelDao getOrCreateOverridePhaseDefinitionFromTransaction(final PlanPhase parentPlanPhase, final String parentPhaseName,final Currency currency, final DateTime catalogEffectiveDate, final PlanPhasePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context) {
+ private CatalogOverridePhaseDefinitionModelDao getOrCreateOverridePhaseDefinitionFromTransaction(final PlanPhase parentPlanPhase, final String parentPhaseName, final Currency currency, final DateTime catalogEffectiveDate, final PlanPhasePriceOverride override, final Handle inTransactionHandle, final InternalCallContext context) {
final CatalogOverridePhaseDefinitionSqlDao sqlDao = inTransactionHandle.attach(CatalogOverridePhaseDefinitionSqlDao.class);
if(override.getUsagePriceOverrides() != null && isUsageOverrideListHasOnlyNull(override.getUsagePriceOverrides())) {
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 f6a4e69..eb6d119 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlock.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlock.java
@@ -17,18 +17,23 @@
package org.killbill.billing.catalog;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlIDREF;
-
import org.killbill.billing.ErrorCode;
-import org.killbill.billing.catalog.api.*;
+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.Currency;
+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;
import org.killbill.xmlloader.ValidationErrors;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlIDREF;
import java.math.BigDecimal;
@XmlAccessorType(XmlAccessType.NONE)
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlockPriceOverride.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlockPriceOverride.java
index d66d331..b69b000 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlockPriceOverride.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultBlockPriceOverride.java
@@ -7,9 +7,6 @@ import org.killbill.billing.catalog.api.Unit;
import java.math.BigDecimal;
-/**
- * Created by sruthipendyala on 10/6/16.
- */
public class DefaultBlockPriceOverride implements BlockPriceOverride {
private String unitName;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultInternationalPrice.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultInternationalPrice.java
index 7e40cfc..c5b3c93 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultInternationalPrice.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultInternationalPrice.java
@@ -16,6 +16,16 @@
package org.killbill.billing.catalog;
+import org.killbill.billing.ErrorCode;
+import org.killbill.billing.catalog.api.CatalogApiException;
+import org.killbill.billing.catalog.api.Currency;
+import org.killbill.billing.catalog.api.CurrencyValueNull;
+import org.killbill.billing.catalog.api.InternationalPrice;
+import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
+import org.killbill.billing.catalog.api.Price;
+import org.killbill.xmlloader.ValidatingConfig;
+import org.killbill.xmlloader.ValidationErrors;
+
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
@@ -23,11 +33,6 @@ import java.math.BigDecimal;
import java.net.URI;
import java.util.Arrays;
-import org.killbill.billing.ErrorCode;
-import org.killbill.billing.catalog.api.*;
-import org.killbill.xmlloader.ValidatingConfig;
-import org.killbill.xmlloader.ValidationErrors;
-
@XmlAccessorType(XmlAccessType.NONE)
public class DefaultInternationalPrice extends ValidatingConfig<StandaloneCatalog> implements InternationalPrice {
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 eb64e2b..41fc61a 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlanPhase.java
@@ -18,8 +18,22 @@
package org.killbill.billing.catalog;
-import java.net.URI;
-import java.util.Arrays;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.killbill.billing.ErrorCode;
+import org.killbill.billing.catalog.api.CatalogApiException;
+import org.killbill.billing.catalog.api.Duration;
+import org.killbill.billing.catalog.api.Fixed;
+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.Recurring;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.catalog.api.UsagePriceOverride;
+import org.killbill.xmlloader.ValidatingConfig;
+import org.killbill.xmlloader.ValidationError;
+import org.killbill.xmlloader.ValidationErrors;
import javax.annotation.Nullable;
import javax.xml.bind.annotation.XmlAccessType;
@@ -27,12 +41,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
-
-import org.killbill.billing.ErrorCode;
-import org.killbill.billing.catalog.api.*;
-import org.killbill.xmlloader.ValidatingConfig;
-import org.killbill.xmlloader.ValidationError;
-import org.killbill.xmlloader.ValidationErrors;
+import java.net.URI;
@XmlAccessorType(XmlAccessType.NONE)
public class DefaultPlanPhase extends ValidatingConfig<StandaloneCatalog> implements PlanPhase {
@@ -67,11 +76,18 @@ public class DefaultPlanPhase extends ValidatingConfig<StandaloneCatalog> implem
this.recurring = override != null && override.getRecurringPrice() != null ? new DefaultRecurring((DefaultRecurring) in.getRecurring(), override) : (DefaultRecurring) in.getRecurring();
this.usages = new DefaultUsage[in.getUsages().length];
for (int i = 0; i < in.getUsages().length; i++) {
- if(override != null && override.getUsagePriceOverrides().get(i)!= null) {
- usages[i] = new DefaultUsage(in.getUsages()[i], override.getUsagePriceOverrides().get(i), override.getCurrency());
+ final Usage curUsage = in.getUsages()[i];
+ if(override != null && override.getUsagePriceOverrides()!= null) {
+ final UsagePriceOverride usagePriceOverride = Iterables.tryFind(override.getUsagePriceOverrides(), new Predicate<UsagePriceOverride>() {
+ @Override
+ public boolean apply(final UsagePriceOverride input) {
+ return input !=null && input.getName().equals(curUsage.getName());
+ }
+ }).orNull();
+ usages[i] = (usagePriceOverride !=null) ? new DefaultUsage(in.getUsages()[i], usagePriceOverride, override.getCurrency()) : (DefaultUsage)curUsage;
}
else {
- usages[i] = (DefaultUsage) in.getUsages()[i];
+ usages[i] = (DefaultUsage)curUsage;
}
}
this.plan = parentPlan;
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 50ae522..f3da569 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTier.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTier.java
@@ -17,17 +17,26 @@
package org.killbill.billing.catalog;
-import java.util.Arrays;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.killbill.billing.catalog.api.BillingMode;
+import org.killbill.billing.catalog.api.Currency;
+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.TierPriceOverride;
+import org.killbill.billing.catalog.api.TieredBlock;
+import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
+import org.killbill.billing.catalog.api.UsageType;
+import org.killbill.xmlloader.ValidatingConfig;
+import org.killbill.xmlloader.ValidationError;
+import org.killbill.xmlloader.ValidationErrors;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
-
-import org.killbill.billing.catalog.api.*;
-import org.killbill.xmlloader.ValidatingConfig;
-import org.killbill.xmlloader.ValidationError;
-import org.killbill.xmlloader.ValidationErrors;
+import java.util.Arrays;
@XmlAccessorType(XmlAccessType.NONE)
public class DefaultTier extends ValidatingConfig<StandaloneCatalog> implements Tier {
@@ -61,11 +70,26 @@ public class DefaultTier extends ValidatingConfig<StandaloneCatalog> implements
public DefaultTier(Tier in, TierPriceOverride override, Currency currency) {
this.limits = (DefaultLimit[])in.getLimits();
this.blocks = new DefaultTieredBlock[in.getTieredBlocks().length];
+
for (int i = 0; i < in.getTieredBlocks().length; i++) {
- if(override != null && override.getTieredBlockPriceOverrides().get(i)!=null)
- blocks[i] = new DefaultTieredBlock(in.getTieredBlocks()[i], override.getTieredBlockPriceOverrides().get(i), currency) ;
- else
+ if(override != null && override.getTieredBlockPriceOverrides() != null) {
+ final TieredBlock curTieredBlock = in.getTieredBlocks()[i];
+ final TieredBlockPriceOverride overriddenTierBlock = Iterables.tryFind(override.getTieredBlockPriceOverrides(), new Predicate<TieredBlockPriceOverride>() {
+ @Override
+ public boolean apply(final TieredBlockPriceOverride input) {
+ return (input != null && input.getUnitName().equals(curTieredBlock.getUnit().getName()) &&
+ Double.compare(input.getSize(), curTieredBlock.getSize()) == 0 &&
+ Double.compare(input.getMax(), curTieredBlock.getMax()) == 0);
+ }
+
+ }).orNull();
+
+ blocks[i] = (overriddenTierBlock != null) ? new DefaultTieredBlock(in.getTieredBlocks()[i], overriddenTierBlock, currency) :
+ (DefaultTieredBlock) in.getTieredBlocks()[i];
+ }
+ else {
blocks[i] = (DefaultTieredBlock) in.getTieredBlocks()[i];
+ }
}
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTieredBlockPriceOverride.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTieredBlockPriceOverride.java
index cb5fc65..c9e1dbb 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTieredBlockPriceOverride.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTieredBlockPriceOverride.java
@@ -7,9 +7,6 @@ import org.killbill.billing.catalog.api.Unit;
import java.math.BigDecimal;
-/**
- * Created by sruthipendyala on 10/6/16.
- */
public class DefaultTieredBlockPriceOverride extends DefaultBlockPriceOverride implements TieredBlockPriceOverride{
private Double max;
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTierPriceOverride.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTierPriceOverride.java
index 4ee99bf..78355f0 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultTierPriceOverride.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultTierPriceOverride.java
@@ -5,9 +5,6 @@ import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
import java.util.List;
-/**
- * Created by sruthipendyala on 10/6/16.
- */
public class DefaultTierPriceOverride implements TierPriceOverride {
List<TieredBlockPriceOverride> tieredBlockPriceOverrides;
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 80e6bc9..855acf9 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUsage.java
@@ -17,8 +17,25 @@
package org.killbill.billing.catalog;
-import java.net.URI;
-import java.util.Arrays;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.killbill.billing.catalog.api.BillingMode;
+import org.killbill.billing.catalog.api.BillingPeriod;
+import org.killbill.billing.catalog.api.Block;
+import org.killbill.billing.catalog.api.Currency;
+import org.killbill.billing.catalog.api.InternationalPrice;
+import org.killbill.billing.catalog.api.Limit;
+import org.killbill.billing.catalog.api.PlanPhase;
+import org.killbill.billing.catalog.api.Tier;
+import org.killbill.billing.catalog.api.TierPriceOverride;
+import org.killbill.billing.catalog.api.TieredBlock;
+import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.catalog.api.UsagePriceOverride;
+import org.killbill.billing.catalog.api.UsageType;
+import org.killbill.xmlloader.ValidatingConfig;
+import org.killbill.xmlloader.ValidationError;
+import org.killbill.xmlloader.ValidationErrors;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -26,11 +43,9 @@ import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlID;
-
-import org.killbill.billing.catalog.api.*;
-import org.killbill.xmlloader.ValidatingConfig;
-import org.killbill.xmlloader.ValidationError;
-import org.killbill.xmlloader.ValidationErrors;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
@XmlAccessorType(XmlAccessType.NONE)
public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements Usage {
@@ -88,11 +103,39 @@ public class DefaultUsage extends ValidatingConfig<StandaloneCatalog> implements
this.limits = (DefaultLimit[]) in.getLimits();
this.blocks = (DefaultBlock[]) in.getBlocks();
this.tiers = new DefaultTier[in.getTiers().length];
+
for (int i = 0; i < in.getTiers().length; i++) {
- if(override != null && override.getTierPriceOverrides().get(i)!=null)
- tiers[i] = new DefaultTier(in.getTiers()[i], override.getTierPriceOverrides().get(i), currency);
- else
- tiers[i] = (DefaultTier) in.getTiers()[i];
+ if(override != null && override.getTierPriceOverrides()!=null) {
+ final TieredBlock[] curTieredBlocks = in.getTiers()[i].getTieredBlocks();
+
+ final TierPriceOverride overriddenTier = Iterables.tryFind(override.getTierPriceOverrides(), new Predicate<TierPriceOverride>() {
+ @Override
+ public boolean apply(final TierPriceOverride input) {
+
+ if(input !=null) {
+ final List<TieredBlockPriceOverride> blockPriceOverrides = input.getTieredBlockPriceOverrides();
+ for (TieredBlockPriceOverride blockDef : blockPriceOverrides) {
+ String unitName = blockDef.getUnitName();
+ Double max = blockDef.getMax();
+ Double size = blockDef.getSize();
+
+ for (TieredBlock curTieredBlock : curTieredBlocks)
+ if (unitName.equals(curTieredBlock.getUnit().getName()) &&
+ Double.compare(size, curTieredBlock.getSize()) == 0 &&
+ Double.compare(max, curTieredBlock.getMax()) == 0) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ }).orNull();
+
+ tiers[i] = (overriddenTier != null) ? new DefaultTier(in.getTiers()[i], overriddenTier, currency) : (DefaultTier)in.getTiers()[i] ;
+ }
+ else {
+ tiers[i] = (DefaultTier) in.getTiers()[i];
+ }
}
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/override/DefaultPriceOverride.java b/catalog/src/main/java/org/killbill/billing/catalog/override/DefaultPriceOverride.java
index 856f035..56e21fb 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/override/DefaultPriceOverride.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/override/DefaultPriceOverride.java
@@ -17,23 +17,38 @@
package org.killbill.billing.catalog.override;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.inject.Inject;
import org.joda.time.DateTime;
import org.killbill.billing.ErrorCode;
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.callcontext.InternalTenantContext;
-import org.killbill.billing.catalog.*;
-import org.killbill.billing.catalog.api.*;
+import org.killbill.billing.catalog.DefaultPlan;
+import org.killbill.billing.catalog.DefaultPlanPhase;
+import org.killbill.billing.catalog.DefaultPlanPhasePriceOverride;
+import org.killbill.billing.catalog.DefaultTierPriceOverride;
+import org.killbill.billing.catalog.DefaultTieredBlockPriceOverride;
+import org.killbill.billing.catalog.DefaultUsagePriceOverride;
+import org.killbill.billing.catalog.api.CatalogApiException;
+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.PlanPhaseSpecifier;
+import org.killbill.billing.catalog.api.StaticCatalog;
+import org.killbill.billing.catalog.api.Tier;
+import org.killbill.billing.catalog.api.TierPriceOverride;
+import org.killbill.billing.catalog.api.TieredBlock;
+import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.catalog.api.UsagePriceOverride;
import org.killbill.billing.catalog.caching.OverriddenPlanCache;
import org.killbill.billing.catalog.dao.CatalogOverrideDao;
import org.killbill.billing.catalog.dao.CatalogOverridePlanDefinitionModelDao;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
public class DefaultPriceOverride implements PriceOverride {
@@ -72,7 +87,8 @@ public class DefaultPriceOverride implements PriceOverride {
if(curOverride != null) {
List<UsagePriceOverride> resolvedUsageOverrides = getResolvedUsageOverrides(curPhase.getUsages(), curOverride.getUsagePriceOverrides());
- resolvedOverride[index++] = new DefaultPlanPhasePriceOverride(curPhase.getName(), curOverride.getCurrency(), curOverride.getFixedPrice(), curOverride.getRecurringPrice(), resolvedUsageOverrides);
+ resolvedOverride[index++] = new DefaultPlanPhasePriceOverride(curPhase.getName(), curOverride.getCurrency(), curOverride.getFixedPrice(),
+ curOverride.getRecurringPrice(), resolvedUsageOverrides);
}
else
resolvedOverride[index++] = null;
@@ -150,7 +166,8 @@ public class DefaultPriceOverride implements PriceOverride {
}).orNull();
if(curOverride != null) {
- List<TieredBlockPriceOverride> tieredBlockPriceOverrides = getResolvedTieredBlockPriceOverrides(curTier.getTieredBlocks(),curOverride.getTieredBlockPriceOverrides());
+ List<TieredBlockPriceOverride> tieredBlockPriceOverrides = getResolvedTieredBlockPriceOverrides(curTier.getTieredBlocks(),
+ curOverride.getTieredBlockPriceOverrides());
resolvedTierOverrides.add(new DefaultTierPriceOverride(tieredBlockPriceOverrides));
}
else
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PhasePriceOverrideJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PhasePriceOverrideJson.java
index 32eb734..15092c2 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PhasePriceOverrideJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PhasePriceOverrideJson.java
@@ -17,23 +17,32 @@
package org.killbill.billing.jaxrs.json;
-import java.math.BigDecimal;
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.killbill.billing.catalog.DefaultPlanPhasePriceOverride;
-import org.killbill.billing.catalog.DefaultTierPriceOverride;
-import org.killbill.billing.catalog.DefaultTieredBlockPriceOverride;
-import org.killbill.billing.catalog.DefaultUsagePriceOverride;
-import org.killbill.billing.catalog.api.*;
-
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import org.killbill.billing.catalog.DefaultPlanPhasePriceOverride;
+import org.killbill.billing.catalog.DefaultTierPriceOverride;
+import org.killbill.billing.catalog.DefaultTieredBlockPriceOverride;
+import org.killbill.billing.catalog.DefaultUsagePriceOverride;
+import org.killbill.billing.catalog.api.CatalogApiException;
+import org.killbill.billing.catalog.api.Currency;
+import org.killbill.billing.catalog.api.PhaseType;
+import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
+import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
+import org.killbill.billing.catalog.api.PlanSpecifier;
+import org.killbill.billing.catalog.api.Tier;
+import org.killbill.billing.catalog.api.TierPriceOverride;
+import org.killbill.billing.catalog.api.TieredBlock;
+import org.killbill.billing.catalog.api.TieredBlockPriceOverride;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.catalog.api.UsagePriceOverride;
+
+import javax.annotation.Nullable;
+import java.math.BigDecimal;
+import java.util.LinkedList;
+import java.util.List;
public class PhasePriceOverrideJson {