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; 9 10 import java.lang.reflect.Method; 11 12 /*** 13 * Methods that should be implemented in order to extract attributes associate with a class. <p/>An implementation this 14 * class needs to be provided for each bytecode manipulation library or other meta-data storage mechanism that is 15 * supported. 16 * 17 * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a> 18 */ 19 public interface AttributeExtractor { 20 public static final Object[] EMPTY_OBJECT_ARRAY = new Object[] {}; 21 22 /*** 23 * Retreives attributes associated with the class. 24 * 25 * @return An array of attributes that satisfy the instanceof comparison with the filter class. Null if there are no 26 * attributes associated with the class. 27 */ 28 Object[] getClassAttributes(); 29 30 /*** 31 * Retreives custom attributes applied to a specific method of the class. 32 * 33 * @param methodName The name of the method. 34 * @param methodParamTypes The signature of the method. 35 * @return An array of custom attributes. Null if there are no attributes. 36 */ 37 Object[] getMethodAttributes(String methodName, String[] methodParamTypes); 38 39 /*** 40 * Return all the attributes associated with a constructor that have a particular method signature. 41 * 42 * @param constructorParamTypes An array of parameter types as given by the reflection api. 43 * @return the constructor attributes. 44 */ 45 Object[] getConstructorAttributes(String[] constructorParamTypes); 46 47 /*** 48 * Retreives custom attributes applied to a specific field of the class. 49 * 50 * @param fieldName the name of a class field. 51 * @return An array of custom attributes. Null if there are no attributes. 52 */ 53 Object[] getFieldAttributes(String fieldName); 54 }