psdi.iface.webservices.action.bytecode

Class ClassReader

  • java.lang.Object
    • java.io.InputStream
      • java.io.ByteArrayInputStream
        • psdi.iface.webservices.action.bytecode.ClassReader
  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    ParamReader


    public class ClassReader
    extends java.io.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.

    • Field Summary

      • Fields inherited from class java.io.ByteArrayInputStream

        buf, count, mark, pos
    • Constructor Summary

      Constructors 
      Modifier Constructor and Description
      protected ClassReader(byte[] buf, java.util.Map attrMethods) 
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      protected static java.util.Map findAttributeReaders(java.lang.Class c) 
      protected static byte[] getBytes(java.lang.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 java.lang.String getSignature(java.lang.reflect.Member method, java.lang.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 java.lang.Class resolveClass(int i) 
      protected java.lang.reflect.Field resolveField(int i) 
      protected java.lang.reflect.Member resolveMethod(int index) 
      protected psdi.iface.webservices.action.bytecode.ClassReader.NameAndType resolveNameAndType(int i) 
      protected java.lang.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,
                              java.util.Map attrMethods)
    • Method Detail

      • getBytes

        protected static byte[] getBytes(java.lang.Class c)
                                  throws java.io.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:
        java.io.IOException
      • findAttributeReaders

        protected static java.util.Map findAttributeReaders(java.lang.Class c)
      • getSignature

        protected static java.lang.String getSignature(java.lang.reflect.Member method,
                                                       java.lang.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 java.io.IOException
        skip n bytes in the input stream.
        Throws:
        java.io.IOException
      • resolveMethod

        protected final java.lang.reflect.Member resolveMethod(int index)
                                                        throws java.io.IOException,
                                                               java.lang.ClassNotFoundException,
                                                               java.lang.NoSuchMethodException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
        java.lang.NoSuchMethodException
      • resolveField

        protected final java.lang.reflect.Field resolveField(int i)
                                                      throws java.io.IOException,
                                                             java.lang.ClassNotFoundException,
                                                             java.lang.NoSuchFieldException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
        java.lang.NoSuchFieldException
      • resolveNameAndType

        protected final psdi.iface.webservices.action.bytecode.ClassReader.NameAndType resolveNameAndType(int i)
                                                                                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveClass

        protected final java.lang.Class resolveClass(int i)
                                              throws java.io.IOException,
                                                     java.lang.ClassNotFoundException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • resolveUtf8

        protected final java.lang.String resolveUtf8(int i)
                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • readCpool

        protected final void readCpool()
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • skipAttributes

        protected final void skipAttributes()
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • readAttributes

        protected final void readAttributes()
                                     throws java.io.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:
        java.io.IOException
      • readCode

        public void readCode()
                      throws java.io.IOException
        read a code attribute
        Throws:
        java.io.IOException