1
2
3
4
5
6
7
8
9
10
11 package org.mule.config;
12
13 import java.util.Comparator;
14 import java.util.Iterator;
15
16
17
18
19
20
21 public class PreferredObjectSelector<T>
22 {
23
24 private final Comparator<T> comparator;
25
26 public PreferredObjectSelector()
27 {
28 comparator = new Comparator<T>()
29 {
30 private PreferredComparator preferredComparator = new PreferredComparator();
31
32 public int compare(T candidate1, T candidate2)
33 {
34 final Preferred preferred = candidate1.getClass().getAnnotation(Preferred.class);
35 final Preferred preferred1 = candidate2.getClass().getAnnotation(Preferred.class);
36
37 return preferredComparator.compare(preferred, preferred1);
38 }
39 };
40 }
41
42
43
44
45
46
47
48
49
50
51
52 public T select(Iterator<T> iterator)
53 {
54 T preferred = null;
55
56 if (iterator.hasNext())
57 {
58 preferred = iterator.next();
59
60 while (iterator.hasNext())
61 {
62 T current = iterator.next();
63
64 if (comparator.compare(preferred, current) == -1)
65 {
66 preferred = current;
67 }
68 }
69 }
70
71 return preferred;
72 }
73 }