View Javadoc
1   package org.exolab.castor.mapping.loader.collection.handler;
2   
3   import java.util.Enumeration;
4   import java.util.HashMap;
5   import java.util.Map;
6   
7   import org.exolab.castor.mapping.CollectionHandler;
8   import org.exolab.castor.mapping.MapItem;
9   import org.exolab.castor.mapping.loader.CollectionHandlers;
10  import org.exolab.castor.mapping.loader.J2CollectionHandlers.IteratorEnumerator;
11  
12  public final class MapCollectionHandler<T> implements CollectionHandler<T> {
13    @SuppressWarnings("unchecked")
14    public Object add(Object collection, T object) {
15  
16      T key = object;
17      T value = object;
18  
19      if (object instanceof MapItem) {
20        MapItem<T, T> item = (MapItem<T, T>) object;
21        key = item.getKey();
22        value = item.getValue();
23        if (value == null) {
24          value = object;
25        }
26        if (key == null) {
27          key = value;
28        }
29      }
30  
31      if (collection == null) {
32        collection = new HashMap<T, T>();
33        ((Map<T, T>) collection).put(key, value);
34        return collection;
35      }
36      ((Map<T, T>) collection).put(key, value);
37      return null;
38    }
39  
40    @SuppressWarnings("unchecked")
41    public Enumeration<T> elements(Object collection) {
42      if (collection == null)
43        return new CollectionHandlers.EmptyEnumerator<T>();
44      return new IteratorEnumerator<T>(((Map<T, T>) collection).values().iterator());
45    }
46  
47    @SuppressWarnings("unchecked")
48    public int size(Object collection) {
49      if (collection == null)
50        return 0;
51      return ((Map<T, T>) collection).size();
52    }
53  
54    @SuppressWarnings("unchecked")
55    public Object clear(Object collection) {
56      if (collection != null)
57        ((Map<T, T>) collection).clear();
58      return null;
59    }
60  
61    public String toString() {
62      return "Map";
63    }
64  }