org.apache.cxf.common.util

## Class ParamReader

- java.lang.Object
- - java.io.InputStream
  - - java.io.ByteArrayInputStream
    - - org.apache.cxf.common.util.ClassReader
      - - org.apache.cxf.common.util.ParamReader

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class ParamReader
      extends ClassReader

  This is the class file reader for obtaining the parameter names for declared methods in a class. The class must have debugging attributes for us to obtain this information.

  This does not work for inherited methods. To obtain parameter names for inherited methods, you must use a paramReader for the class that originally declared the method.

  don't get tricky, it's the bare minimum. Instances of this class are not threadsafe -- don't share them.

  Author:
    Edwin Smith, Macromedia

- - ### Field Summary

    - ### Fields inherited from class java.io.ByteArrayInputStream

      `buf, count, mark, pos`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ParamReader(byte[] b)` process the given class bytes directly.
    `ParamReader(Class<?> c)` process a class file, given it's class.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `String[]` | `getParameterNames(Constructor<?> ctor)` return the names of the declared parameters for the given constructor.
    `protected String[]` | `getParameterNames(Member member, Class<?>[] pTypes)`
    `String[]` | `getParameterNames(Method method)` return the names of the declared parameters for the given method.
    `static String[]` | `getParameterNamesFromDebugInfo(Method method)` Retrieve a list of function parameter names from a method Returns null if unable to read parameter names (i.e.
    `void` | `readCode()` read a code attribute
    `void` | `readLocalVariableTable()` this is invoked when a LocalVariableTable attribute is encountered.

    - ### Methods inherited from class org.apache.cxf.common.util.ClassReader

      `findAttributeReaders, getBytes, getSignature, readAttributes, readCpool, readInt, readShort, resolveClass, resolveField, resolveMethod, resolveNameAndType, resolveUtf8, skipAttributes, skipFully`

    - ### Methods inherited from class java.io.ByteArrayInputStream

      `available, close, mark, markSupported, read, read, reset, skip`

    - ### Methods inherited from class java.io.InputStream

      `read`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ParamReader

          public ParamReader(Class<?> c)
                      throws IOException

      process a class file, given it's class. We'll use the defining classloader to locate the bytecode.
      Parameters:
        `c` -
      Throws:
        `IOException`

    - #### ParamReader

          public ParamReader(byte[] b)
                      throws IOException

      process the given class bytes directly.
      Parameters:
        `b` -
      Throws:
        `IOException`

  - ### Method Detail

    - #### getParameterNamesFromDebugInfo

          public static String[] getParameterNamesFromDebugInfo(Method method)

      Retrieve a list of function parameter names from a method Returns null if unable to read parameter names (i.e. bytecode not built with debug).

    - #### readCode

          public void readCode()
                        throws IOException

      Description copied from class: `ClassReader`
      read a code attribute
      Overrides:
        `readCode` in class `ClassReader`
      Throws:
        `IOException`

    - #### getParameterNames

          public String[] getParameterNames(Constructor<?> ctor)

      return the names of the declared parameters for the given constructor. If we cannot determine the names, return null. The returned array will have one name per parameter. The length of the array will be the same as the length of the Class[] array returned by Constructor.getParameterTypes().
      Parameters:
        `ctor` -
      Returns:
        String[] array of names, one per parameter, or null

    - #### getParameterNames

          public String[] getParameterNames(Method method)

      return the names of the declared parameters for the given method. If we cannot determine the names, return null. The returned array will have one name per parameter. The length of the array will be the same as the length of the Class[] array returned by Method.getParameterTypes().
      Parameters:
        `method` -
      Returns:
        String[] array of names, one per parameter, or null

    - #### getParameterNames

          protected String[] getParameterNames(Member member,
                                   Class<?>[] pTypes)

    - #### readLocalVariableTable

          public void readLocalVariableTable()
                                      throws IOException

      this is invoked when a LocalVariableTable attribute is encountered.
      Throws:
        `IOException`

Apache CXF