View Javadoc
1   package org.exolab.castor.mapping.loader.collection.handler;
2   
3   import java.util.Enumeration;
4   import java.util.HashSet;
5   import java.util.Set;
6   
7   import org.exolab.castor.mapping.CollectionHandler;
8   import org.exolab.castor.mapping.loader.CollectionHandlers;
9   import org.exolab.castor.mapping.loader.J2CollectionHandlers.IteratorEnumerator;
10  
11  public final class SetCollectionHandler<T> implements CollectionHandler<T> {
12     @SuppressWarnings("unchecked")
13     public Object add(Object collection, T object) {
14        if (collection == null) {
15           collection = new HashSet<T>();
16           ((Set<T>) collection).add(object);
17           return collection;
18        }
19        // if ( ! ( (Set) collection ).contains( object ) )
20        ((Set<T>) collection).add(object);
21        return null;
22     }
23  
24     @SuppressWarnings("unchecked")
25     public Enumeration<T> elements(Object collection) {
26        if (collection == null)
27           return new CollectionHandlers.EmptyEnumerator<T>();
28        return new IteratorEnumerator<T>(((Set<T>) collection).iterator());
29     }
30  
31     @SuppressWarnings("unchecked")
32     public int size(Object collection) {
33        if (collection == null)
34           return 0;
35        return ((Set<T>) collection).size();
36     }
37  
38     @SuppressWarnings("unchecked")
39     public Object clear(Object collection) {
40        if (collection != null)
41           ((Set<T>) collection).clear();
42        return null;
43     }
44  
45     public String toString() {
46        return "Set";
47     }
48  
49  }