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