killbill-aplcache

Details

diff --git a/catalog/src/main/java/org/killbill/billing/catalog/CatalogEntityCollection.java b/catalog/src/main/java/org/killbill/billing/catalog/CatalogEntityCollection.java
index 15873b9..78cdda0 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/CatalogEntityCollection.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/CatalogEntityCollection.java
@@ -18,28 +18,24 @@
 package org.killbill.billing.catalog;
 
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.Iterator;
-import java.util.Set;
-import java.util.TreeSet;
+import java.util.Map;
+import java.util.TreeMap;
 
 import org.killbill.billing.catalog.api.CatalogEntity;
-import org.weakref.jmx.internal.guava.collect.Ordering;
+
+import com.google.common.collect.Ordering;
 
 public class CatalogEntityCollection<T extends CatalogEntity> implements Collection<T> {
 
-    private final Set<String> keys;
-    private final HashMap<String, T> data;
+    private final Map<String, T> data;
 
     public CatalogEntityCollection() {
-        this.keys = new TreeSet<String>(Ordering.<String>natural());
-        this.data = new HashMap<String, T>();
+        this.data = new TreeMap<String, T>(Ordering.<String>natural());
     }
 
     public CatalogEntityCollection(final T[] entities) {
-        this.keys = new TreeSet<String>(Ordering.<String>natural());
-        this.data = new HashMap<String, T>();
+        this.data = new TreeMap<String, T>(Ordering.<String>natural());
         for (final T cur : entities) {
             addEntry(cur);
         }
@@ -73,12 +69,11 @@ public class CatalogEntityCollection<T extends CatalogEntity> implements Collect
 
     @Override
     public Iterator iterator() {
+
         // Build an iterator that will return ordered using natural ordering with regard to CatalogEntity#name
-        final Iterator<String> keyIterator = keys.iterator();
+        final Iterator<String> keyIterator = data.keySet().iterator();
         final Iterator it = new Iterator() {
-
             private String prevKey = null;
-
             @Override
             public boolean hasNext() {
                 return keyIterator.hasNext();
@@ -99,7 +94,6 @@ public class CatalogEntityCollection<T extends CatalogEntity> implements Collect
         return it;
     }
 
-
     @Override
     public boolean add(final T t) {
         addEntry(t);
@@ -163,7 +157,6 @@ public class CatalogEntityCollection<T extends CatalogEntity> implements Collect
         return data.values().toArray(new Object[data.size()]);
     }
 
-
     @Override
     public boolean equals(final Object o) {
         if (this == o) {
@@ -174,9 +167,7 @@ public class CatalogEntityCollection<T extends CatalogEntity> implements Collect
         }
 
         final CatalogEntityCollection<?> that = (CatalogEntityCollection<?>) o;
-
         return data != null ? data.equals(that.data) : that.data == null;
-
     }
 
     @Override
@@ -185,12 +176,10 @@ public class CatalogEntityCollection<T extends CatalogEntity> implements Collect
     }
 
     private void addEntry(final T entry) {
-        keys.add(entry.getName());
         data.put(entry.getName(), entry);
     }
 
     private boolean removeEntry(final T entry) {
-        keys.remove(entry.getName());
         return data.remove(entry.getName()) != null;
     }
 
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java
index c48295d..feb06e6 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPriceList.java
@@ -17,7 +17,6 @@
 package org.killbill.billing.catalog;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -56,8 +55,8 @@ public class DefaultPriceList extends ValidatingConfig<StandaloneCatalog> implem
     }
 
     @Override
-    public Collection<Plan> getPlans() {
-        return (Collection<Plan>) plans.getEntries();
+    public Plan[] getPlans() {
+        return (Plan[]) plans.toArray(new DefaultPlan[plans.size()]);
     }
 
     /* (non-Javadoc)
@@ -74,10 +73,10 @@ public class DefaultPriceList extends ValidatingConfig<StandaloneCatalog> implem
     @Override
     public DefaultPlan[] findPlans(final Product product, final BillingPeriod period) {
         final List<DefaultPlan> result = new ArrayList<DefaultPlan>(plans.size());
-        for (final DefaultPlan cur : getPlans()) {
+        for (final Plan cur : getPlans()) {
             if (cur.getProduct().equals(product) &&
                 (cur.getRecurringBillingPeriod() != null && cur.getRecurringBillingPeriod().equals(period))) {
-                result.add(cur);
+                result.add((DefaultPlan) cur);
             }
         }
         return result.toArray(new DefaultPlan[result.size()]);