org.apache.cxf.common.util

## Class ClassReader

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

- All Implemented Interfaces:
    Closeable, AutoCloseable
  Direct Known Subclasses:
    ParamReader

      public class ClassReader
      extends ByteArrayInputStream

  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.

- - ### Field Summary

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

      `buf, count, mark, pos`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ClassReader(byte[] buf, Map<String,Method> attrMethods)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected static Map<String,Method>` | `findAttributeReaders(Class<?> c)`
    `protected static byte[]` | `getBytes(Class<?> c)` load the bytecode for a given class, by using the class's defining classloader and assuming that for a class named P.C, the bytecodes are in a resource named /P/C.class.
    `protected static String` | `getSignature(Member method, Class<?>[] paramTypes)`
    `protected void` | `readAttributes()` read an attributes array.
    `void` | `readCode()` read a code attribute
    `protected void` | `readCpool()`
    `protected int` | `readInt()`
    `protected int` | `readShort()`
    `protected Class<?>` | `resolveClass(int i)`
    `protected Field` | `resolveField(int i)`
    `protected Member` | `resolveMethod(int index)`
    `protected org.apache.cxf.common.util.ClassReader.NameAndType` | `resolveNameAndType(int i)`
    `protected String` | `resolveUtf8(int i)`
    `protected void` | `skipAttributes()`
    `protected void` | `skipFully(int n)` skip n bytes in the input stream.

    - ### 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

    - #### ClassReader

          protected ClassReader(byte[] buf,
                     Map<String,Method> attrMethods)

  - ### Method Detail

    - #### getBytes

          protected static byte[] getBytes(Class<?> c)
                                    throws IOException

      load the bytecode for a given class, by using the class's defining classloader and assuming that for a class named P.C, the bytecodes are in a resource named /P/C.class.
      Parameters:
        `c` - the class of interest
      Returns:
        a byte array containing the bytecode
      Throws:
        `IOException`

    - #### findAttributeReaders

          protected static Map<String,Method> findAttributeReaders(Class<?> c)

    - #### getSignature

          protected static String getSignature(Member method,
                            Class<?>[] paramTypes)

    - #### readShort

          protected final int readShort()

      Returns:
        the next unsigned 16 bit value

    - #### readInt

          protected final int readInt()

      Returns:
        the next signed 32 bit value

    - #### skipFully

          protected void skipFully(int n)
                            throws IOException

      skip n bytes in the input stream.
      Throws:
        `IOException`

    - #### resolveMethod

          protected final Member resolveMethod(int index)
                                        throws IOException,
                                               ClassNotFoundException,
                                               NoSuchMethodException

      Throws:
        `IOException`
        `ClassNotFoundException`
        `NoSuchMethodException`

    - #### resolveField

          protected final Field resolveField(int i)
                                      throws IOException,
                                             ClassNotFoundException,
                                             NoSuchFieldException

      Throws:
        `IOException`
        `ClassNotFoundException`
        `NoSuchFieldException`

    - #### resolveNameAndType

          protected final org.apache.cxf.common.util.ClassReader.NameAndType resolveNameAndType(int i)
                                                                                         throws IOException

      Throws:
        `IOException`

    - #### resolveClass

          protected final Class<?> resolveClass(int i)
                                         throws IOException,
                                                ClassNotFoundException

      Throws:
        `IOException`
        `ClassNotFoundException`

    - #### resolveUtf8

          protected final String resolveUtf8(int i)
                                      throws IOException

      Throws:
        `IOException`

    - #### readCpool

          protected final void readCpool()
                                  throws IOException

      Throws:
        `IOException`

    - #### skipAttributes

          protected final void skipAttributes()
                                       throws IOException

      Throws:
        `IOException`

    - #### readAttributes

          protected final void readAttributes()
                                       throws IOException

      read an attributes array. the elements of a class file that can contain attributes are: fields, methods, the class itself, and some other types of attributes.
      Throws:
        `IOException`

    - #### readCode

          public void readCode()
                        throws IOException

      read a code attribute
      Throws:
        `IOException`

Apache CXF