1 /* 2 * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com 3 * The software in this package is published under the terms of the CPAL v1.0 4 * license, a copy of which has been included with this distribution in the 5 * LICENSE.txt file. 6 */ 7 package org.mule.util.generics; 8 9 import java.lang.reflect.Constructor; 10 import java.lang.reflect.Method; 11 12 /** 13 * Interface to discover parameter names for methods and constructors. 14 * <p/> 15 * <p>Parameter name discovery is not always possible, but various strategies are 16 * available to try, such as looking for debug information that may have been 17 * emitted at compile time, and looking for argname annotation values optionally 18 * accompanying AspectJ annotated methods. 19 * <p/> 20 * author: Spring 21 */ 22 public interface ParameterNameDiscoverer 23 { 24 25 /** 26 * Return parameter names for this method, 27 * or <code>null</code> if they cannot be determined. 28 * 29 * @param method method to find parameter names for 30 * @return an array of parameter names if the names can be resolved, 31 * or <code>null</code> if they cannot 32 */ 33 String[] getParameterNames(Method method); 34 35 /** 36 * Return parameter names for this constructor, 37 * or <code>null</code> if they cannot be determined. 38 * 39 * @param ctor constructor to find parameter names for 40 * @return an array of parameter names if the names can be resolved, 41 * or <code>null</code> if they cannot 42 */ 43 String[] getParameterNames(Constructor ctor); 44 45 }