diff --git a/catalog/src/main/java/org/killbill/billing/catalog/plugin/StandaloneCatalogMapper.java b/catalog/src/main/java/org/killbill/billing/catalog/plugin/StandaloneCatalogMapper.java
index 2a7b156..35b6dac 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/plugin/StandaloneCatalogMapper.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/plugin/StandaloneCatalogMapper.java
@@ -85,7 +85,7 @@ public class StandaloneCatalogMapper {
private final BillingMode recurringBillingMode;
private Map<String, Product> tmpDefaultProducts;
- private Iterable<Plan> tmpDefaultPlans;
+ private Map<String, Plan> tmpDefaultPlans;
private DefaultPriceListSet tmpDefaultPriceListSet;
private Map<String, DefaultPriceList> tmpDefaultPriceListMap;
@@ -286,22 +286,18 @@ public class StandaloneCatalogMapper {
private Iterable<Plan> toDefaultPlans(final Iterable<Plan> input) {
if (tmpDefaultPlans == null) {
- final Function<Plan, Plan> planTransformer = new Function<Plan, Plan>() {
- @Override
- public Plan apply(final Plan input) {
- return toDefaultPlan(input);
- }
- };
- tmpDefaultPlans = ImmutableList.copyOf(Iterables.transform(input, planTransformer));
+ final Map<String, Plan> map = new HashMap<String, Plan>();
+ for (final Plan plan : input) map.put(plan.getName(), toDefaultPlan(plan));
+ tmpDefaultPlans = ImmutableMap.copyOf(map);
}
- return tmpDefaultPlans;
+ return tmpDefaultPlans.values();
}
private Iterable<Plan> toFilterDefaultPlans(final String priceListName) {
if (tmpDefaultPlans == null) {
throw new IllegalStateException("Cannot filter on uninitialized plans");
}
- return Iterables.filter(tmpDefaultPlans, new Predicate<Plan>() {
+ return Iterables.filter(tmpDefaultPlans.values(), new Predicate<Plan>() {
@Override
public boolean apply(final Plan input) {
return input.getPriceListName().equals(priceListName);
@@ -396,12 +392,8 @@ public class StandaloneCatalogMapper {
private Plan toDefaultPlan(final Plan input) {
if (tmpDefaultPlans != null) {
- final Plan existingPlan = findOrIllegalState(tmpDefaultPlans, new Predicate<Plan>() {
- @Override
- public boolean apply(final Plan predicateInput) {
- return predicateInput.getName().equals(input.getName());
- }
- }, "Unknown plan " + input.getName());
+ final Plan existingPlan = tmpDefaultPlans.get(input.getName());
+ if (existingPlan == null) throw new IllegalStateException("Unknown plan " + input.getName());
return existingPlan;
}
final DefaultPlan result = new DefaultPlan();
@@ -486,11 +478,4 @@ public class StandaloneCatalogMapper {
return ImmutableList.<C>copyOf(input).toArray(foo);
}
- private <T> T findOrIllegalState(final Iterable<T> input, final Predicate<T> predicate, final String msg) {
- T result = Iterables.<T> tryFind(input, predicate).orNull();
- if (result == null) {
- throw new IllegalStateException(msg);
- }
- return result;
- }
}
\ No newline at end of file