Commit in lcsim/src/org/lcsim/util/event on MAIN
BaseLCSimEvent.java+9-381.19 -> 1.20
Switch to use IdentityHashMap instead of ListHolder

lcsim/src/org/lcsim/util/event
BaseLCSimEvent.java 1.19 -> 1.20
diff -u -r1.19 -r1.20
--- BaseLCSimEvent.java	22 May 2006 18:59:23 -0000	1.19
+++ BaseLCSimEvent.java	22 May 2006 20:53:01 -0000	1.20
@@ -4,9 +4,9 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import org.lcsim.conditions.ConditionsManager;
 import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
 import org.lcsim.event.CalorimeterHit;
@@ -26,7 +26,7 @@
 public class BaseLCSimEvent extends BaseEvent implements EventHeader
 {
    private String detectorName;
-   private final Map<ListHolder,LCMetaData> metaDataMap = new HashMap<ListHolder,LCMetaData>();
+   private final Map<List,LCMetaData> metaDataMap = new IdentityHashMap<List,LCMetaData>();
    private ConditionsManager conditionsManager;
    private static final int NANO_SECONDS = 1000000;
    private static final String READOUT_NAME = "ReadoutName";
@@ -93,11 +93,11 @@
    public <T> List<List<T>> get(Class<T> type)
    {
       List<List<T>> result = new ArrayList<List<T>>();
-      for (Map.Entry<ListHolder,LCMetaData> entry : metaDataMap.entrySet())
+      for (Map.Entry<List,LCMetaData> entry : metaDataMap.entrySet())
       {
          if (type.isAssignableFrom(entry.getValue().getType()))
          {
-            result.add(entry.getKey().getList());
+            result.add(entry.getKey());
          }
       }
       return result;
@@ -105,7 +105,7 @@
    
    public LCMetaData getMetaData(List x)
    {
-      return metaDataMap.get(new ListHolder(x));
+      return metaDataMap.get(x);
    }
    
    public void put(String name, Object component)
@@ -119,7 +119,7 @@
          {
             if (!type.isAssignableFrom(o.getClass())) type = Object.class;
          }
-         metaDataMap.put(new ListHolder(list),new MetaData(name,type,0,null));
+         metaDataMap.put(list,new MetaData(name,type,0,null));
       }
    }
    public void put(String name, List collection, Class type, int flags)
@@ -160,7 +160,7 @@
       if(!isValid && !isOriginal) readoutName = null;
 
       LCMetaData meta = new MetaData(name, type, flags, readoutName);
-      metaDataMap.put(new ListHolder(collection),meta);
+      metaDataMap.put(collection,meta);
       // Fixme: This needs to be generalized
       if (CalorimeterHit.class.isAssignableFrom(type))
       {
@@ -174,7 +174,7 @@
    {
       super.put(name,collection);
       LCMetaData meta = new MetaData(name, type, flags, intMap, floatMap, stringMap);
-      metaDataMap.put(new ListHolder(collection),meta);
+      metaDataMap.put(collection,meta);
    }
 
    /**
@@ -183,7 +183,7 @@
    public void remove(String name)
    {
       Object collection = get(name);
-      if (collection instanceof List) metaDataMap.remove(new ListHolder((List) collection));
+      if (collection instanceof List) metaDataMap.remove((List) collection);
       super.keys().remove(name);
    }
    
@@ -271,33 +271,4 @@
          return BaseLCSimEvent.this;
       }
    }
-   // All empty lists are considered equal, but we need to put several different possibly empty lists 
-   // into the metadata map. ListHolder is a workaround for this.
-   private class ListHolder 
-   {
-      private final List list;
-      ListHolder(List list)
-      {
-         this.list = list;
-      }
-      List getList()
-      {
-         return list;
-      }
-      public boolean equals(Object obj)
-      {
-         if (obj instanceof ListHolder)
-         {
-            ListHolder that= (ListHolder) obj;
-            return this.list == that.list;
-         }
-         return false;
-      }
-
-      public int hashCode()
-      {
-         // Fixme: This doesn't work if the list is changed after it is added to the event
-         return list.hashCode();
-      }
-   }
 }
CVSspam 0.2.8