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