1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.codehaus.groovy.runtime.wrappers;
19
20 import groovy.lang.GroovyObject;
21 import groovy.lang.MetaClass;
22
23 import org.codehaus.groovy.runtime.InvokerHelper;
24
25 /***
26 * @author John Wilson
27 *
28 */
29
30 public class PojoWrapper extends Wrapper {
31 protected MetaClass delegate;
32 protected final Object wrapped;
33
34 public PojoWrapper(final Object wrapped, final Class constrainedType) {
35 super(constrainedType);
36 this.wrapped = wrapped;
37 this.delegate = InvokerHelper.getMetaClass(wrapped);
38
39
40
41
42
43 if (wrapped instanceof GroovyObject) {
44 throw new RuntimeException("trying to wrap the groovyObject "
45 + wrapped.getClass().getName()
46 + " in a PojoWrapper");
47 }
48 }
49
50 public Object unwrap() {
51 return this.wrapped;
52 }
53
54 /***
55 * Note the rest of these method will only be used post 1.0
56 */
57
58
59
60
61 public Object getProperty(final String property) {
62 return this.delegate.getProperty(this.wrapped, property);
63 }
64
65
66
67
68 public Object invokeMethod(final String methodName, final Object arguments) {
69 return this.delegate.invokeMethod(this.wrapped, methodName, arguments);
70 }
71
72
73
74
75 public void setMetaClass(final MetaClass metaClass) {
76 this.delegate = metaClass;
77 }
78
79
80
81
82 public void setProperty(final String property, final Object newValue) {
83 this.delegate.setProperty(this.wrapped, property, newValue);
84 }
85
86 protected Object getWrapped() {
87 return this.wrapped;
88 }
89
90 protected MetaClass getDelegatedMetaClass() {
91 return this.delegate;
92 }
93 }