View Javadoc
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  }