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 java.lang.reflect.InvocationTargetException;
20
21 import org.apache.commons.logging.Log;
22
23
24 /***
25 * Executor that simply tries to execute a get(key)
26 * operation. This will try to find a get(key) method
27 * for any type of object, not just objects that
28 * implement the Map interface as was previously
29 * the case.
30 *
31 * @since 1.0
32 * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
33 * @version $Id: GetExecutor.java 398171 2006-04-29 14:57:29Z dion $
34 */
35 public class GetExecutor extends AbstractExecutor {
36 /***
37 * Container to hold the 'key' part of
38 * get(key).
39 */
40 private final Object[] args = new Object[1];
41
42 /***
43 * Default constructor.
44 *
45 * @param r The instance log.
46 * @param ispect The JEXL introspector.
47 * @param c The class being examined.
48 * @param key The key for the get(key) operation.
49 * @throws Exception Failure while trying to obtain the pertinent method.
50 */
51 public GetExecutor(Log r,
52 org.apache.commons.jexl.util.introspection.Introspector ispect,
53 Class c, String key) throws Exception {
54 rlog = r;
55 args[0] = key;
56 method = ispect.getMethod(c, "get", args);
57 }
58
59 /***
60 * {@inheritDoc}
61 */
62 public Object execute(Object o)
63 throws IllegalAccessException, InvocationTargetException {
64 if (method == null) {
65 return null;
66 }
67
68 return method.invoke(o, args);
69 }
70
71 }
72