1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package net.sourceforge.pmd.jaxen;
5
6 import net.sourceforge.pmd.ast.Node;
7
8 import java.lang.reflect.InvocationTargetException;
9 import java.lang.reflect.Method;
10
11 /***
12 * @author daniels
13 */
14 public class Attribute {
15
16 private static final Object[] EMPTY_OBJ_ARRAY = new Object[0];
17 private Node parent;
18 private String name;
19 private Method method;
20
21 public Attribute(Node parent, String name, Method m) {
22 this.parent = parent;
23 this.name = name;
24 this.method = m;
25 }
26
27 public String getValue() {
28
29 try {
30 Object res = method.invoke(parent, EMPTY_OBJ_ARRAY);
31 if (res != null) {
32 if (res instanceof String) {
33 return (String) res;
34 }
35 return String.valueOf(res);
36 }
37 } catch (IllegalAccessException iae) {
38 iae.printStackTrace();
39 } catch (InvocationTargetException ite) {
40 ite.printStackTrace();
41 }
42 return "";
43 }
44
45 public String getName() {
46 return name;
47 }
48
49 public Node getParent() {
50 return parent;
51 }
52
53 public String toString() {
54 return name + ":" + getValue() + ":" + parent;
55 }
56 }