1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.util;
23
24 import java.lang.reflect.Array;
25 import java.util.Iterator;
26 import java.util.Map;
27
28
29 /***
30 * <code>ContainUtil</code> will check if object 1 contains object 2.
31 * Object 1 may be an Object, array, Collection, or a Map
32 *
33 * @version $Date: 2008-04-27 08:41:38 -0500 (Sun, 27 Apr 2008) $ $Id: ContainUtil.java 651946 2008-04-27 13:41:38Z apetrelli $
34 */
35 public class ContainUtil {
36
37 /***
38 * Determine if <code>obj2</code> exists in <code>obj1</code>.
39 *
40 * <table borer="1">
41 * <tr>
42 * <td>Type Of obj1</td>
43 * <td>Comparison type</td>
44 * </tr>
45 * <tr>
46 * <td>null<td>
47 * <td>always return false</td>
48 * </tr>
49 * <tr>
50 * <td>Map</td>
51 * <td>Map containsKey(obj2)</td>
52 * </tr>
53 * <tr>
54 * <td>Collection</td>
55 * <td>Collection contains(obj2)</td>
56 * </tr>
57 * <tr>
58 * <td>Array</td>
59 * <td>there's an array element (e) where e.equals(obj2)</td>
60 * </tr>
61 * <tr>
62 * <td>Object</td>
63 * <td>obj1.equals(obj2)</td>
64 * </tr>
65 * </table>
66 *
67 *
68 * @param obj1
69 * @param obj2
70 * @return
71 */
72 public static boolean contains(Object obj1, Object obj2) {
73 if ((obj1 == null) || (obj2 == null)) {
74
75 return false;
76 }
77
78 if (obj1 instanceof Map) {
79 if (((Map) obj1).containsKey(obj2)) {
80
81 return true;
82 }
83 } if (obj1 instanceof Iterable) {
84 Iterator iter = ((Iterable) obj1).iterator();
85 while(iter.hasNext()) {
86 Object value = iter.next();
87 if (obj2.equals(value) || obj2.toString().equals(value)) {
88 return true;
89 }
90 }
91 } else if (obj1.getClass().isArray()) {
92 for (int i = 0; i < Array.getLength(obj1); i++) {
93 Object value = null;
94 value = Array.get(obj1, i);
95
96 if (value.equals(obj2)) {
97
98 return true;
99 }
100 }
101 } else if (obj1.toString().equals(obj2.toString())) {
102
103 return true;
104 } else if (obj1.equals(obj2)) {
105
106 return true;
107 }
108
109
110 return false;
111 }
112 }