1 46 package org.codehaus.groovy.ast; 47 48 import java.util.ArrayList ; 49 import java.util.HashMap ; 50 import java.util.Iterator ; 51 import java.util.List ; 52 import java.util.Map ; 53 54 55 61 public class AnnotatedNode extends ASTNode { 62 private Map annotations = new HashMap (); 63 private boolean synthetic; 64 ClassNode declaringClass; 65 66 public AnnotatedNode() { 67 } 68 69 public Map getAnnotations() { 70 return annotations; 71 } 72 73 public AnnotationNode getAnnotations(String name) { 74 return (AnnotationNode) annotations.get(name); 75 } 76 77 public void addAnnotation(String name, AnnotationNode value) { 78 AnnotationNode oldValue = (AnnotationNode) annotations.get(name); 79 80 if (oldValue == null) { 82 annotations.put(name, value); 83 } 84 else { 85 List list = null; 86 if (oldValue instanceof List ) { 87 list = (List ) oldValue; 88 } 89 else { 90 list = new ArrayList (); 91 list.add(oldValue); 92 annotations.put(name, list); 93 } 94 list.add(value); 95 } 96 } 97 98 public void addAnnotations(List annotations) { 99 for (Iterator iter = annotations.iterator(); iter.hasNext();) { 100 AnnotationNode node = (AnnotationNode) iter.next(); 101 addAnnotation(node.getName(), node); 102 } 103 104 } 105 106 public boolean isSynthetic() { 107 return synthetic; 108 } 109 110 public void setSynthetic(boolean synthetic) { 111 this.synthetic = synthetic; 112 } 113 114 protected void addFieldsToVisitor(VariableScope scope) { 115 for (Iterator iter = getDeclaringClass().getFields().iterator(); iter.hasNext();) { 116 FieldNode field = (FieldNode) iter.next(); 117 String name = field.getName(); 118 119 scope.getDeclaredVariables().add(name); 120 scope.getReferencedVariables().add(name); 121 } 122 } 123 124 public ClassNode getDeclaringClass() { 125 return declaringClass; 126 } 127 128 131 public void setDeclaringClass(ClassNode declaringClass) { 132 this.declaringClass = declaringClass; 133 } 134 } 135 | Popular Tags |