Class ChainingClassTable

  • All Implemented Interfaces:
    ClassTable

    public class ChainingClassTable
    extends java.lang.Object
    implements ClassTable
    A class table that multiplexes up to 256 class tables. The protocol works by prepending the custom class table with an identifier byte.
    • Constructor Detail

      • ChainingClassTable

        public ChainingClassTable​(ClassTable[] classTables)
        Construct a new instance. The given array may be sparse, but it may not be more than 256 elements in length. Class tables are checked in order of increasing array index.
        Parameters:
        classTables - the class tables to delegate to
    • Method Detail

      • getClassWriter

        public ClassTable.Writer getClassWriter​(java.lang.Class<?> clazz)
                                         throws java.io.IOException
        Determine whether the given class reference is a valid predefined reference.
        Specified by:
        getClassWriter in interface ClassTable
        Parameters:
        clazz - the candidate class
        Returns:
        the class writer, or null to use the default mechanism
        Throws:
        java.io.IOException - if an I/O error occurs
      • readClass

        public java.lang.Class<?> readClass​(Unmarshaller unmarshaller)
                                     throws java.io.IOException,
                                            java.lang.ClassNotFoundException
        Read a class from the stream. The class will have been written by the ClassTable.getClassWriter(Class) method's Writer instance, as defined above.
        Specified by:
        readClass in interface ClassTable
        Parameters:
        unmarshaller - the unmarshaller to read from
        Returns:
        the class
        Throws:
        java.io.IOException - if an I/O error occurs
        java.lang.ClassNotFoundException - if a class could not be found