1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package gls.ch06.s05.testClasses;
19
20
21 import org.codehaus.groovy.runtime.InvokerHelper;
22
23 import groovy.lang.GroovyInterceptable;
24 import groovy.lang.GroovyObject;
25 import groovy.lang.MetaClass;
26
27 /***
28 * @author John Wilson
29 *
30 */
31
32 public class Tt1gi extends Tt1 implements GroovyObject, GroovyInterceptable {
33
34 private MetaClass metaClass = InvokerHelper.getMetaClass(this);
35
36 public MetaClass getMetaClass() {
37 return this.metaClass;
38 }
39
40 public Object getProperty(final String property) {
41 if ("x".equals(property)) {
42 return "dynamic property";
43 } else {
44 return this.metaClass.getProperty(this, property);
45 }
46 }
47
48 public Object invokeMethod(final String name, final Object args) {
49 if ("x".equals(name)) {
50 return "dynamic method";
51 } else {
52 return this.metaClass.invokeMethod(this, name, args);
53 }
54 }
55
56 public void setMetaClass(final MetaClass metaClass) {
57 this.metaClass = metaClass;
58 }
59
60 public void setProperty(final String property, final Object newValue) {
61 this.metaClass.setProperty(this, property, newValue);
62 }
63 }