1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.jexl.util;
18
19 import org.apache.commons.logging.Log;
20 /***
21 * Handles discovery and valuation of a
22 * boolean object property, of the
23 * form public boolean is<Property> when executed.
24 *
25 * We do this separately as to preserve the current
26 * quasi-broken semantics of get <as is property>
27 * get<flip 1st char> get("property") and now followed
28 * by is<Property>.
29 *
30 * @since 1.0
31 * @author <a href="geirm@apache.org">Geir Magnusson Jr.</a>
32 * @version $Id: BooleanPropertyExecutor.java 398171 2006-04-29 14:57:29Z dion $
33 */
34 public class BooleanPropertyExecutor extends PropertyExecutor {
35
36 /***
37 * Constructor.
38 *
39 * @param rlog The instance log.
40 * @param is The JEXL introspector.
41 * @param clazz The class being analyzed.
42 * @param property The boolean property.
43 */
44 public BooleanPropertyExecutor(Log rlog,
45 org.apache.commons.jexl.util.introspection.Introspector is,
46 Class clazz, String property) {
47 super(rlog, is, clazz, property);
48 }
49
50 /***
51 * Locate the getter method for this boolean property.
52 *
53 * @param clazz The class being analyzed.
54 * @param property Name of boolean property.
55 */
56 protected void discover(Class clazz, String property) {
57 try {
58 char c;
59 StringBuffer sb;
60
61 Object[] params = {};
62
63
64
65
66
67 sb = new StringBuffer("is");
68 sb.append(property);
69
70 c = sb.charAt(2);
71
72 if (Character.isLowerCase(c)) {
73 sb.setCharAt(2, Character.toUpperCase(c));
74 }
75
76 methodUsed = sb.toString();
77 method = introspector.getMethod(clazz, methodUsed, params);
78
79 if (method != null) {
80
81
82
83
84 if (method.getReturnType() == Boolean.TYPE) {
85 return;
86 }
87
88 method = null;
89 }
90 } catch (Exception e) {
91 rlog.error("PROGRAMMER ERROR : BooleanPropertyExector() : " + e);
92 }
93 }
94 }