01: package abbot.script;
02:
03: import java.util.Map;
04:
05: /** Encapsulate capture of a value. Usage:<br>
06: * <blockquote><code>
07: * <sample property="..." method="assertXXX" [class="..."]><br>
08: * <sample property="..." method="(get|is|has)XXX" component="component_id"><br>
09: * </code></blockquote>
10: * The <b>sample</b> step stores the value found from the given method
11: * {@link abbot.tester.ComponentTester} class; the class tag is required for
12: * methods based on a class derived from {@link abbot.tester.ComponentTester};
13: * the class tag indicates the {@link java.awt.Component} class, not the
14: * Tester class (the appropriate tester class will be derived automatically).
15: * The second format indicates a property sample on the given component.
16: * In both cases, the result of the invocation will be saved in the current
17: * {@link abbot.script.Resolver} as a property with the given property name.
18: */
19:
20: public class Sample extends PropertyCall {
21: private static final String USAGE = "<sample property=... component=... method=.../>\n"
22: + "<sample property=... method=... [class=...]/>";
23:
24: private String propertyName = null;
25:
26: public Sample(Resolver resolver, Map attributes) {
27: super (resolver, attributes);
28: propertyName = (String) attributes.get(TAG_PROPERTY);
29: }
30:
31: /** Component property sample. */
32: public Sample(Resolver resolver, String description,
33: String methodName, String id, String propName) {
34: super (resolver, description, methodName, id);
35: propertyName = propName;
36: }
37:
38: /** Static method property sample. */
39: public Sample(Resolver resolver, String description,
40: String className, String methodName, String[] args,
41: String propName) {
42: super (resolver, description, className, methodName, args);
43: propertyName = propName;
44: }
45:
46: public Map getAttributes() {
47: Map map = super .getAttributes();
48: if (propertyName != null) {
49: map.put(TAG_PROPERTY, propertyName);
50: }
51: return map;
52: }
53:
54: public String getDefaultDescription() {
55: return getPropertyName() + "=" + super .getDefaultDescription();
56: }
57:
58: public String getUsage() {
59: return USAGE;
60: }
61:
62: public String getXMLTag() {
63: return TAG_SAMPLE;
64: }
65:
66: public void setPropertyName(String name) {
67: propertyName = name;
68: }
69:
70: public String getPropertyName() {
71: return propertyName;
72: }
73:
74: /** Store the results of the invocation in the designated property as a
75: String-encoded value.
76: */
77: protected Object invoke() throws Throwable {
78: Object obj = super.invoke();
79: if (propertyName != null) {
80: getResolver().setProperty(propertyName, obj);
81: }
82: return obj;
83: }
84: }
|