1 19 20 package edu.umd.cs.findbugs.ba; 21 22 import java.util.HashMap ; 23 import java.util.Map ; 24 25 public class JCIPAnnotationDatabase { 26 Map <ClassMember, Map <String , Object >> memberAnnotations = new HashMap <ClassMember, Map <String , Object >>(); 27 28 Map <String , Map <String , Object >> classAnnotations = new HashMap <String , Map <String , Object >>(); 29 30 31 public Object getClassAnnotation(String dottedClassName, String annotationClass) { 32 assert dottedClassName.indexOf('/') == -1; 33 return getEntryForClass(dottedClassName).get(annotationClass); 34 } 35 public boolean hasClassAnnotation(String dottedClassName, String annotationClass) { 36 assert dottedClassName.indexOf('/') == -1; 37 return getEntryForClass(dottedClassName).containsKey(annotationClass); 38 } 39 public Object getFieldAnnotation(XField field, String annotationClass) { 40 return getEntryForClassMember(field).get(annotationClass); 41 } 42 public boolean hasFieldAnnotation(XField field, String annotationClass) { 43 return getEntryForClassMember(field).containsKey(annotationClass); 44 } 45 public Object getMethodAnnotation(XMethod method, String annotationClass) { 46 return getEntryForClassMember(method).get(annotationClass); 47 } 48 public boolean hasMethodAnnotation(XMethod method, String annotationClass) { 49 return getEntryForClassMember(method).containsKey(annotationClass); 50 } 51 52 public Map <String , Object > getEntryForClassMember(ClassMember member) { 53 Map <String , Object > map = memberAnnotations.get(member); 54 if (map == null) { 55 map = new HashMap <String , Object >(); 56 memberAnnotations.put(member, map); 57 } 58 return map; 59 } 60 61 public 62 Map <String , Object > getEntryForClass(String dottedClassName) { 63 assert dottedClassName.indexOf('/') == -1; 64 Map <String , Object > map = classAnnotations.get(dottedClassName); 65 if (map == null) { 66 map = new HashMap <String , Object >(); 67 classAnnotations.put(dottedClassName, map); 68 } 69 return map; 70 } 71 72 73 } 74 | Popular Tags |