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 }