1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 package org.codehaus.groovy.ast;
47
48 import org.codehaus.groovy.ast.expr.*;
49 import org.codehaus.groovy.ast.stmt.*;
50 import org.objectweb.asm.Opcodes;
51
52 /***
53 * Represents a property (member variable, a getter and setter)
54 *
55 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
56 * @version $Revision: 1.13 $
57 */
58 public class PropertyNode extends AnnotatedNode implements Opcodes,Variable {
59
60 private FieldNode field;
61 private Statement getterBlock;
62 private Statement setterBlock;
63 private int modifiers;
64
65 public PropertyNode(
66 String name, int modifiers, ClassNode type, ClassNode owner,
67 Expression initialValueExpression, Statement getterBlock,
68 Statement setterBlock)
69 {
70 this(new FieldNode(name, modifiers & ACC_STATIC, type, owner, initialValueExpression), modifiers, getterBlock, setterBlock);
71 }
72
73 public PropertyNode(FieldNode field, int modifiers, Statement getterBlock, Statement setterBlock) {
74 this.field = field;
75 this.modifiers = modifiers;
76 this.getterBlock = getterBlock;
77 this.setterBlock = setterBlock;
78 }
79
80 public Statement getGetterBlock() {
81 return getterBlock;
82 }
83
84 public Expression getInitialExpression() {
85 return field.getInitialExpression();
86 }
87
88 public int getModifiers() {
89 return modifiers;
90 }
91
92 public String getName() {
93 return field.getName();
94 }
95
96 public Statement getSetterBlock() {
97 return setterBlock;
98 }
99
100 public ClassNode getType() {
101 return field.getType();
102 }
103
104 public void setType(ClassNode t) {
105 field.setType(t);
106 }
107
108 public FieldNode getField() {
109 return field;
110 }
111
112 public boolean isPrivate() {
113 return (modifiers & ACC_PRIVATE) != 0;
114 }
115
116 public boolean hasInitialExpression() {
117 return field.hasInitialExpression();
118 }
119
120 public boolean isInStaticContext() {
121 return field.isInStaticContext();
122 }
123
124 public boolean isDynamicTyped() {
125 return field.isDynamicTyped();
126 }
127 }