KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > aspectwerkz > annotation > instrumentation > asm > AsmAnnotations


1 /**************************************************************************************
2  * Copyright (c) Jonas Bon?r, Alexandre Vasseur. All rights reserved. *
3  * http://aspectwerkz.codehaus.org *
4  * ---------------------------------------------------------------------------------- *
5  * The software in this package is published under the terms of the LGPL license *
6  * a copy of which has been included with this distribution in the license.txt file. *
7  **************************************************************************************/

8 package org.codehaus.aspectwerkz.annotation.instrumentation.asm;
9
10 import org.codehaus.aspectwerkz.annotation.Annotation;
11 import org.codehaus.aspectwerkz.annotation.AnnotationInfo;
12 import org.codehaus.aspectwerkz.reflect.ClassInfo;
13 import org.codehaus.aspectwerkz.reflect.MethodInfo;
14 import org.codehaus.aspectwerkz.reflect.ConstructorInfo;
15 import org.codehaus.aspectwerkz.reflect.FieldInfo;
16
17 import java.util.List JavaDoc;
18 import java.util.Iterator JavaDoc;
19 import java.util.ArrayList JavaDoc;
20
21 /**
22  * Helper class to extract annotations by their name from a ClassInfo structure.
23  *
24  * @author <a HREF="mailto:jboner@codehaus.org">Jonas Bonér </a>
25  * @author <a HREF="mailto:alex@gnilux.com">Alexandre Vasseur</a>
26  */

27 public class AsmAnnotations {
28     /**
29      * Return the annotation with a specific name for a specific class.
30      *
31      * @param annotationName the annotation name
32      * @param classInfo the ClassInfo object to find the annotation on.
33      * @return the annotation or null
34      */

35     public static Annotation getAnnotation(final String JavaDoc annotationName, final ClassInfo classInfo) {
36         List JavaDoc annotations = classInfo.getAnnotations();
37         for (Iterator JavaDoc it = annotations.iterator(); it.hasNext();) {
38             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
39             if (annotationInfo.getName().equals(annotationName)) {
40                 return annotationInfo.getAnnotation();
41             }
42         }
43         return null;
44     }
45
46     /**
47      * Return the annotation with a specific name for a specific method.
48      *
49      * @param annotationName the annotation name
50      * @param methodInfo the MethodInfo object to find the annotation on.
51      * @return the annotation or null
52      */

53     public static Annotation getAnnotation(final String JavaDoc annotationName, final MethodInfo methodInfo) {
54         List JavaDoc annotations = methodInfo.getAnnotations();
55         for (Iterator JavaDoc it = annotations.iterator(); it.hasNext();) {
56             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
57             if (annotationInfo.getName().equals(annotationName)) {
58                 return annotationInfo.getAnnotation();
59             }
60         }
61         return null;
62     }
63
64     /**
65      * Return the annotation with a specific name for a specific constructor.
66      *
67      * @param annotationName the annotation name
68      * @param constructorInfo the ConstructorInfo object to find the annotation on.
69      * @return the annotation or null
70      */

71     public static Annotation getAnnotation(final String JavaDoc annotationName, final ConstructorInfo constructorInfo) {
72         List JavaDoc annotations = constructorInfo.getAnnotations();
73         for (Iterator JavaDoc it = annotations.iterator(); it.hasNext();) {
74             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
75             if (annotationInfo.getName().equals(annotationName)) {
76                 return annotationInfo.getAnnotation();
77             }
78         }
79         return null;
80     }
81
82     /**
83      * Return the annotation with a specific name for a specific field.
84      *
85      * @param annotationName the annotation name
86      * @param fieldInfo the FieldInfo object to find the annotation on.
87      * @return the annotation or null
88      */

89     public static Annotation getAnnotation(final String JavaDoc annotationName, final FieldInfo fieldInfo) {
90         List JavaDoc annotations = fieldInfo.getAnnotations();
91         for (Iterator JavaDoc it = annotations.iterator(); it.hasNext();) {
92             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
93             if (annotationInfo.getName().equals(annotationName)) {
94                 return annotationInfo.getAnnotation();
95             }
96         }
97         return null;
98     }
99
100     /**
101      * Return a list with the annotations with a specific name for a specific class.
102      *
103      * @param annotationName the annotation name
104      * @param classInfo ClassInfo object to find the annotation on.
105      * @return the annotations in a list (can be empty)
106      */

107     public static List JavaDoc getAnnotations(final String JavaDoc annotationName, final ClassInfo classInfo) {
108         List JavaDoc annotations = new ArrayList JavaDoc();
109         for (Iterator JavaDoc it = classInfo.getAnnotations().iterator(); it.hasNext();) {
110             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
111             if (annotationInfo.getName().equals(annotationName)) {
112                 annotations.add(annotationInfo.getAnnotation());
113             }
114         }
115         return annotations;
116     }
117
118     /**
119      * Return a list with the annotations with a specific name for a specific method.
120      *
121      * @param annotationName the annotation name
122      * @param methodInfo the MethodInfo object to find the annotation on.
123      * @return the annotations in a list (can be empty)
124      */

125     public static List JavaDoc getAnnotations(final String JavaDoc annotationName, final MethodInfo methodInfo) {
126         List JavaDoc annotations = new ArrayList JavaDoc();
127         for (Iterator JavaDoc it = methodInfo.getAnnotations().iterator(); it.hasNext();) {
128             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
129             if (annotationInfo.getName().equals(annotationName)) {
130                 annotations.add(annotationInfo.getAnnotation());
131             }
132         }
133         return annotations;
134     }
135
136     /**
137      * Return a list with the annotations with a specific name for a specific constructor.
138      *
139      * @param annotationName the annotation name
140      * @param constructorInfo the ConstructorInfo object to find the annotation on.
141      * @return the annotations in a list (can be empty)
142      */

143     public static List JavaDoc getAnnotations(final String JavaDoc annotationName, final ConstructorInfo constructorInfo) {
144         List JavaDoc annotations = new ArrayList JavaDoc();
145         for (Iterator JavaDoc it = constructorInfo.getAnnotations().iterator(); it.hasNext();) {
146             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
147             if (annotationInfo.getName().equals(annotationName)) {
148                 annotations.add(annotationInfo.getAnnotation());
149             }
150         }
151         return annotations;
152     }
153
154     /**
155      * Return a list with the annotations with a specific name for a specific field.
156      *
157      * @param annotationName the annotation name
158      * @param fieldInfo the FieldInfo object to find the annotation on.
159      * @return the annotations in a list (can be empty)
160      */

161     public static List JavaDoc getAnnotations(final String JavaDoc annotationName, final FieldInfo fieldInfo) {
162         List JavaDoc annotations = new ArrayList JavaDoc();
163         for (Iterator JavaDoc it = fieldInfo.getAnnotations().iterator(); it.hasNext();) {
164             AnnotationInfo annotationInfo = (AnnotationInfo) it.next();
165             if (annotationInfo.getName().equals(annotationName)) {
166                 annotations.add(annotationInfo.getAnnotation());
167             }
168         }
169         return annotations;
170     }
171
172 }
173
Popular Tags