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 * 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 * @TODO: implement toString to something meaningful 121 */ 122 public String toString() { 123 return super.toString(); 124 } 125 }