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
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 }