1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.morph.reflect.reflectors;
17
18 import java.util.Collection;
19 import java.util.Iterator;
20 import java.util.SortedSet;
21 import java.util.TreeSet;
22
23 import net.sf.morph.reflect.BeanReflector;
24 import net.sf.morph.reflect.IndexedContainerReflector;
25
26 /**
27 * Exposes the information found in a {@link java.util.SortedSet}.
28 *
29 * @author Matt Sgarlata
30 * @since Nov 26, 2004
31 */
32 public class SortedSetReflector
33 extends SetReflector
34 implements IndexedContainerReflector, BeanReflector {
35
36 private static final Class[] REFLECTABLE_TYPES = new Class[] {
37 SortedSet.class
38 };
39
40 protected Object newInstanceImpl(Class interfaceClass, Object parameters) throws Exception {
41 return interfaceClass == SortedSet.class ? new TreeSet() : super.newInstanceImpl(interfaceClass, parameters);
42 }
43
44 public Class[] getReflectableClassesImpl() {
45 return REFLECTABLE_TYPES;
46 }
47
48 protected Object getImpl(Object container, int index) throws Exception {
49 Collection c = getCollection(container);
50 if (c == null || c.size() <= index) {
51 throw new IndexOutOfBoundsException(Integer.toString(index));
52 }
53 Iterator it = c.iterator();
54 for (int i = 0; i < index && it.hasNext(); i++) {
55 it.next();
56 }
57 return it.next();
58 }
59
60 }