Class Unknown

    • Field Detail

      • MAX_LEN

        static final int MAX_LEN
        Arbitrary to limit the maximum length of unknown attributes to avoid OOM errors.
        See Also:
        Constant Field Values
      • bytes

        private byte[] bytes
      • name

        private final java.lang.String name
    • Constructor Detail

      • Unknown

        public Unknown​(int nameIndex,
                       int length,
                       byte[] bytes,
                       ConstantPool constantPool)
        Constructs a new instance for a non-standard attribute.
        Parameters:
        nameIndex - Index in constant pool.
        length - Content length in bytes.
        bytes - Attribute contents.
        constantPool - Array of constants.
      • Unknown

        Unknown​(int nameIndex,
                int length,
                java.io.DataInput input,
                ConstantPool constantPool)
         throws java.io.IOException
        Constructs a new instance from a DataInput.

        The size of an Attribute unknown to the JVM specification is limited to 1 MB and is overridden with the system property BCEL.Attribute.Unknown.max_attribute_length.

        Parameters:
        nameIndex - Index in constant pool.
        length - Content length in bytes.
        input - Input stream.
        constantPool - Array of constants.
        Throws:
        java.io.IOException - if an I/O error occurs.
        See Also:
        Attribute
      • Unknown

        public Unknown​(Unknown unknown)
        Constructs a new instance from another instance. Note that both objects use the same references (shallow copy). Use clone() for a physical copy.
        Parameters:
        unknown - Source.
    • Method Detail

      • accept

        public void accept​(Visitor v)
        Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
        Specified by:
        accept in interface Node
        Specified by:
        accept in class Attribute
        Parameters:
        v - Visitor object.
      • copy

        public Attribute copy​(ConstantPool constantPool)
        Description copied from class: Attribute
        Creates a deep copy of this attribute.
        Specified by:
        copy in class Attribute
        Parameters:
        constantPool - constant pool to save.
        Returns:
        deep copy of this attribute.
      • dump

        public void dump​(java.io.DataOutputStream file)
                  throws java.io.IOException
        Dumps unknown bytes to file stream.
        Overrides:
        dump in class Attribute
        Parameters:
        file - Output file stream.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • getBytes

        public byte[] getBytes()
        Returns:
        data bytes.
      • getName

        public java.lang.String getName()
        Description copied from class: Attribute
        Gets the name of attribute.
        Overrides:
        getName in class Attribute
        Returns:
        name of attribute.
      • setBytes

        public void setBytes​(byte[] bytes)
        Parameters:
        bytes - the bytes to set.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class Attribute
        Returns:
        String representation.