View Javadoc

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.joinpoint.impl;
9   
10  import org.codehaus.aspectwerkz.annotation.Annotation;
11  import org.codehaus.aspectwerkz.annotation.Annotations;
12  import org.codehaus.aspectwerkz.joinpoint.MethodSignature;
13  
14  import java.lang.reflect.Method;
15  import java.util.List;
16  
17  /***
18   * Implementation for the method signature.
19   *
20   * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
21   */
22  public class MethodSignatureImpl implements MethodSignature {
23      private final Class m_declaringType;
24  
25      private final Method m_method;
26  
27      /***
28       * @param declaringType
29       * @param method
30       */
31      public MethodSignatureImpl(final Class declaringType, final Method method) {
32          m_declaringType = declaringType;
33          m_method = method;
34      }
35  
36      /***
37       * Returns the method.
38       *
39       * @return the method
40       */
41      public Method getMethod() {
42          return m_method;
43      }
44  
45      /***
46       * Returns the declaring class.
47       *
48       * @return the declaring class
49       */
50      public Class getDeclaringType() {
51          return m_declaringType;
52      }
53  
54      /***
55       * Returns the modifiers for the signature. <p/>Could be used like this:
56       * <p/>
57       * <pre>
58       * boolean isPublic = java.lang.reflect.Modifier.isPublic(signature.getModifiers());
59       * </pre>
60       *
61       * @return the mofifiers
62       */
63      public int getModifiers() {
64          return m_method.getModifiers();
65      }
66  
67      /***
68       * Returns the name (f.e. name of method of field).
69       *
70       * @return
71       */
72      public String getName() {
73          return m_method.getName();
74      }
75  
76      /***
77       * Returns the exception types declared by the code block.
78       *
79       * @return the exception types
80       */
81      public Class[] getExceptionTypes() {
82          return m_method.getExceptionTypes();
83      }
84  
85      /***
86       * Returns the parameter types.
87       *
88       * @return the parameter types
89       */
90      public Class[] getParameterTypes() {
91          return m_method.getParameterTypes();
92      }
93  
94      /***
95       * Returns the return type.
96       *
97       * @return the return type
98       */
99      public Class getReturnType() {
100         return m_method.getReturnType();
101     }
102 
103     /***
104      * Return the annotation with a specific name.
105      *
106      * @param annotationName the annotation name
107      * @return the annotation or null
108      */
109     public Annotation getAnnotation(final String annotationName) {
110         return Annotations.getAnnotation(annotationName, m_method);
111     }
112 
113     /***
114      * Return a list with the annotations with a specific name.
115      *
116      * @param annotationName the annotation name
117      * @return the annotations in a list (can be empty)
118      */
119     public List getAnnotations(final String annotationName) {
120         return Annotations.getAnnotations(annotationName, m_method);
121     }
122 
123     /***
124      * Return all the annotations <p/>Each annotation is wrapped in
125      * {@link org.codehaus.aspectwerkz.annotation.AnnotationInfo}instance.
126      *
127      * @return a list with the annotations
128      */
129     public List getAnnotationInfos() {
130         return Annotations.getAnnotationInfos(m_method);
131     }
132 
133     /***
134      * Returns a string representation of the signature.
135      *
136      * @return a string representation
137      */
138     public String toString() {
139         return m_method.toString();
140     }
141 }