Author: kkolinko
Date: Fri Sep 12 11:05:52 2014
New Revision: 1624497

URL: http://svn.apache.org/r1624497
Log:
Simplify Attribute.readAttribute()
and remove a lot of swallow methods that are no longer used from Utility class.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java?rev=1624497&r1=1624496&r2=1624497&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java Fri 
Sep 12 11:05:52 2014
@@ -90,77 +90,18 @@ public abstract class Attribute implemen
         // Call proper constructor, depending on `tag'
         switch (tag)
         {
-        case Constants.ATTR_UNKNOWN:
-            Utility.swallowUnknownAttribute(file, length);
-            return null;
-        case Constants.ATTR_CONSTANT_VALUE:
-            Utility.swallowConstantValue(file);
-            return null;
-        case Constants.ATTR_SOURCE_FILE:
-            Utility.swallowSourceFile(file);
-            return null;
-        case Constants.ATTR_CODE:
-            Utility.swallowCode(file);
-            return null;
-        case Constants.ATTR_EXCEPTIONS:
-            Utility.swallowExceptionTable(file);
-            return null;
-        case Constants.ATTR_LINE_NUMBER_TABLE:
-            Utility.swallowLineNumberTable(file);
-            return null;
-        case Constants.ATTR_LOCAL_VARIABLE_TABLE:
-            Utility.swallowLocalVariableTable(file);
-            return null;
-        case Constants.ATTR_INNER_CLASSES:
-            Utility.swallowInnerClasses(file);
-            return null;
-        case Constants.ATTR_SYNTHETIC:
-            Utility.swallowSynthetic(length);
-            return null;
-        case Constants.ATTR_DEPRECATED:
-            Utility.swallowDeprecated(length);
-            return null;
-        case Constants.ATTR_PMG:
-            Utility.swallowPMCClass(file);
-            return null;
-        case Constants.ATTR_SIGNATURE:
-            Utility.swallowSignature(file);
-            return null;
-        case Constants.ATTR_STACK_MAP:
-            Utility.swallowStackMap(file);
-            return null;
         case Constants.ATTR_RUNTIME_VISIBLE_ANNOTATIONS:
             return new RuntimeVisibleAnnotations(name_index, length, file,
                     constant_pool);
-        case Constants.ATTR_RUNTIME_INVISIBLE_ANNOTATIONS:
-            Utility.swallowAnnotations(file);
-            return null;
         case Constants.ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS:
             return new RuntimeVisibleParameterAnnotations(name_index, length,
                     file, constant_pool);
-        case Constants.ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS:
-            Utility.swallowParameterAnnotations(file);
-            return null;
         case Constants.ATTR_ANNOTATION_DEFAULT:
             return new AnnotationDefault(name_index, length, file,
                     constant_pool);
-        case Constants.ATTR_LOCAL_VARIABLE_TYPE_TABLE:
-            Utility.swallowLocalVariableTypeTable(file);
-            return null;
-        case Constants.ATTR_ENCLOSING_METHOD:
-            Utility.swallowEnclosingMethod(file);
-            return null;
-        case Constants.ATTR_STACK_MAP_TABLE:
-            Utility.swallowStackMapTable(file);
-            return null;
-        case Constants.ATTR_BOOTSTRAP_METHODS:
-            Utility.swallowBootstrapMethods(file);
-            return null;
-        case Constants.ATTR_METHOD_PARAMETERS:
-            Utility.swallowMethodParameters(file);
+        default: // All other attributes are skipped
+            Utility.skipFully(file, length);
             return null;
-        default: // Never reached
-            throw new IllegalStateException("Unrecognized attribute type tag 
parsed: " + tag);
         }
     }
 

Modified: tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java?rev=1624497&r1=1624496&r2=1624497&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java Fri 
Sep 12 11:05:52 2014
@@ -18,12 +18,9 @@
 package org.apache.tomcat.util.bcel.classfile;
 
 import java.io.DataInput;
-import java.io.DataInputStream;
 import java.io.EOFException;
 import java.io.IOException;
 
-import org.apache.tomcat.util.bcel.Constants;
-
 /**
  * Utility functions that do not really belong to any class in particular.
  *
@@ -55,228 +52,6 @@ final class Utility {
         }
     }
 
-    // file.readUnsignedShort(); // Unused start_pc
-    // file.readUnsignedShort(); // Unused end_pc
-    // file.readUnsignedShort(); // Unused handler_pc
-    // file.readUnsignedShort(); // Unused catch_type
-    private static final int swallowCodeException_size = 8;
-
-    // file.readUnsignedShort(); // Unused inner_class_index
-    // file.readUnsignedShort(); // Unused outer_class_index
-    // file.readUnsignedShort(); // Unused inner_name_index
-    // file.readUnsignedShort(); // Unused inner_access_flags
-    private static final int swallowInnerClass_size = 8;
-
-    // file.readUnsignedShort(); // Unused start_pc
-    // file.readUnsignedShort(); // Unused line_number
-    private static final int swallowLineNumber_size = 4;
-
-    // file.readUnsignedShort(); // Unused start_pc
-    // file.readUnsignedShort(); // Unused length
-    // file.readUnsignedShort(); // Unused name_index
-    // file.readUnsignedShort(); // Unused signature_index
-    // file.readUnsignedShort(); // Unused index
-    private static final int swallowLocalVariable_size = 10;
-
-    static void swallowStackMap(DataInput file) throws IOException {
-        int map_length = file.readUnsignedShort();
-        for (int i = 0; i < map_length; i++) {
-            swallowStackMapEntry(file);
-        }
-    }
-
-    static void swallowStackMapTable(DataInputStream file) throws IOException {
-        int map_length = file.readUnsignedShort();
-        for (int i = 0; i < map_length; i++) {
-            swallowStackMapTableEntry(file);
-        }
-    }
-
-    static void swallowStackMapType(DataInput file) throws IOException {
-        byte type = file.readByte();
-        if ((type < Constants.ITEM_Bogus) || (type > 
Constants.ITEM_NewObject)) {
-            throw new ClassFormatException("Illegal type for StackMapType: " + 
type);
-        }
-        // Check to see if type has an index
-        if ((type == Constants.ITEM_Object) || (type == 
Constants.ITEM_NewObject)) {
-            // file.readShort(); // Unused index
-            skipFully(file, 2);
-        }
-    }
-
-    static void swallowStackMapEntry(DataInput file) throws IOException {
-        // file.readShort(); // Unused byte_code_offset
-        skipFully(file, 2);
-        int number_of_locals = file.readShort();
-        for (int i = 0; i < number_of_locals; i++) {
-            swallowStackMapType(file);
-        }
-        int number_of_stack_items = file.readShort();
-        for (int i = 0; i < number_of_stack_items; i++) {
-            swallowStackMapType(file);
-        }
-    }
-
-    static void swallowStackMapTableEntry(DataInputStream file) throws 
IOException {
-        int frame_type = file.read();
-
-        if (frame_type >= Constants.SAME_FRAME && frame_type <= 
Constants.SAME_FRAME_MAX) {
-            // NO-OP
-        } else if (frame_type >= Constants.SAME_LOCALS_1_STACK_ITEM_FRAME &&
-                frame_type <= Constants.SAME_LOCALS_1_STACK_ITEM_FRAME_MAX) {
-            swallowStackMapType(file);  // Unused single stack item
-        } else if (frame_type == 
Constants.SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED) {
-            // file.readShort(); // Unused byte_code_offset_delta
-            skipFully(file, 2);
-            swallowStackMapType(file); // Unused single stack item
-        } else if (frame_type >= Constants.CHOP_FRAME &&
-                frame_type <= Constants.CHOP_FRAME_MAX) {
-            // file.readShort(); // Unused byte_code_offset_delta
-            skipFully(file, 2);
-        } else if (frame_type == Constants.SAME_FRAME_EXTENDED) {
-            // file.readShort(); // Unused byte_code_offset_delta
-            skipFully(file, 2);
-        } else if (frame_type >= Constants.APPEND_FRAME &&
-                frame_type <= Constants.APPEND_FRAME_MAX) {
-            // file.readShort(); // Unused byte_code_offset_delta
-            skipFully(file, 2);
-            int number_of_locals = frame_type - 251;
-            for (int i = 0; i < number_of_locals; i++) {
-                swallowStackMapType(file);
-            }
-        } else if (frame_type == Constants.FULL_FRAME) {
-            // file.readShort(); // Unused byte_code_offset_delta
-            skipFully(file, 2);
-            int number_of_locals = file.readShort();
-            for (int i = 0; i < number_of_locals; i++) {
-                swallowStackMapType(file);
-            }
-            int number_of_stack_items = file.readShort();
-            for (int i = 0; i < number_of_stack_items; i++) {
-                swallowStackMapType(file);
-            }
-        } else {
-            /* Can't happen */
-            throw new ClassFormatException (
-                    "Invalid frame type found while parsing stack map table: " 
+ frame_type);
-        }
-    }
-
-    static void swallowUnknownAttribute(DataInput file, int length) throws 
IOException {
-        if (length > 0) {
-            skipFully(file, length);
-        }
-    }
-
-    static void swallowSignature(DataInput file) throws IOException {
-        // file.readUnsignedShort(); // Unused signature_index
-        skipFully(file, 2);
-    }
-
-    static void swallowSynthetic(int length) {
-        if (length > 0) {
-            throw new ClassFormatException("Synthetic attribute with length > 
0");
-        }
-    }
-
-    static void swallowBootstrapMethods(DataInput file) throws IOException {
-        int num_bootstrap_methods = file.readUnsignedShort();
-        for (int i = 0; i < num_bootstrap_methods; i++) {
-            // file.readUnsignedShort(); // Unused bootstrap_method_ref
-            skipFully(file, 2);
-            int num_bootstrap_args = file.readUnsignedShort();
-            // for (int j = 0; j < num_bootstrap_args; j++) {
-            // file.readUnsignedShort(); // Unused bootstrap method argument
-            // }
-            skipFully(file, 2 * num_bootstrap_args);
-        }
-    }
-
-    static void swallowMethodParameters(DataInput file) throws IOException {
-        int parameters_count = file.readUnsignedByte();
-        // for (int i = 0; i < parameters_count; i++) {
-        // file.readUnsignedShort(); // Unused name_index
-        // file.readUnsignedShort(); // Unused access_flags
-        // }
-        skipFully(file, 4 * parameters_count);
-    }
-
-    static void swallowSourceFile(DataInput file) throws IOException {
-        // file.readUnsignedShort(); // Unused sourcefile_index
-        skipFully(file, 2);
-    }
-
-    static void swallowConstantValue(DataInput file) throws IOException {
-        // file.readUnsignedShort(); // Unused constantvalue_index
-        skipFully(file, 2);
-    }
-
-    static void swallowCode(DataInput file) throws IOException {
-        // file.readUnsignedShort(); // Unused max_stack
-        // file.readUnsignedShort(); // Unused max_locals
-        skipFully(file, 4);
-        int code_length = file.readInt();
-        skipFully(file, code_length); // Read byte code
-        /* Read exception table that contains all regions where an exception
-         * handler is active, i.e., a try { ... } catch() block.
-         */
-        int exception_table_length = file.readUnsignedShort();
-        skipFully(file, swallowCodeException_size * exception_table_length);
-        /* Read all attributes, currently `LineNumberTable' and
-         * `LocalVariableTable'
-         */
-        int attributes_count = file.readUnsignedShort();
-        for (int i = 0; i < attributes_count; i++) {
-            swallowAttribute(file);
-        }
-    }
-
-    static void swallowExceptionTable(DataInput file) throws IOException {
-        int number_of_exceptions = file.readUnsignedShort();
-        // for (int i = 0; i < number_of_exceptions; i++) {
-        // file.readUnsignedShort(); // Unused exception index
-        // }
-        skipFully(file, 2 * number_of_exceptions);
-    }
-
-    static void swallowLineNumberTable(DataInput file) throws IOException {
-        int line_number_table_length = (file.readUnsignedShort());
-        skipFully(file, swallowLineNumber_size * line_number_table_length);
-    }
-
-    static void swallowLocalVariableTable(DataInput file) throws IOException {
-        int local_variable_table_length = (file.readUnsignedShort());
-        skipFully(file, swallowLocalVariable_size * 
local_variable_table_length);
-    }
-
-    static void swallowLocalVariableTypeTable(DataInput file) throws 
IOException {
-        int local_variable_type_table_length = (file.readUnsignedShort());
-        skipFully(file, swallowLocalVariable_size * 
local_variable_type_table_length);
-    }
-
-    static void swallowInnerClasses(DataInput file) throws IOException {
-        int number_of_classes = file.readUnsignedShort();
-        skipFully(file, swallowInnerClass_size * number_of_classes);
-    }
-
-    static void swallowDeprecated(int length) {
-        if (length > 0) {
-            throw new ClassFormatException("Deprecated attribute with length > 
0");
-        }
-    }
-
-    static void swallowPMCClass(DataInput file) throws IOException {
-        // file.readUnsignedShort(); // Unused pmg_index
-        // file.readUnsignedShort(); // Unused pmg_class_index
-        skipFully(file, 4);
-    }
-
-    static void swallowEnclosingMethod(DataInput file) throws IOException {
-        // file.readUnsignedShort(); // Unused class index
-        // file.readUnsignedShort(); // Unused method index
-        skipFully(file, 4);
-    }
-
     static void swallowConstantCP(DataInput file) throws IOException {
         // file.readUnsignedShort(); // Unused class index
         // file.readUnsignedShort(); // Unused name and type index
@@ -311,77 +86,6 @@ final class Utility {
         skipFully(file, 4);
     }
 
-    static void swallowAnnotations(DataInput file) throws IOException {
-        final int annotation_table_length = (file.readUnsignedShort());
-        for (int i = 0; i < annotation_table_length; i++) {
-            swallowAnnotationEntry(file);
-        }
-    }
-
-    static void swallowAnnotationEntry(DataInput file)
-            throws IOException {
-        // file.readUnsignedShort(); // Unused type index
-        skipFully(file, 2);
-        final int num_element_value_pairs = file.readUnsignedShort();
-        for (int i = 0; i < num_element_value_pairs; i++) {
-            // file.readUnsignedShort(); // Unused name index
-            skipFully(file, 2);
-            swallowElementValue(file);
-        }
-    }
-
-    static void swallowParameterAnnotations(DataInput file) throws IOException 
{
-        final int annotation_table_length = (file.readUnsignedByte());
-        for (int i = 0; i < annotation_table_length; i++) {
-            swallowParameterAnnotationEntry(file);
-        }
-    }
-
-    static void swallowParameterAnnotationEntry(DataInput file)
-            throws IOException {
-        final int annotation_table_length = file.readUnsignedShort();
-        for (int i = 0; i < annotation_table_length; i++) {
-            swallowAnnotationEntry(file);
-        }
-    }
-
-    static void swallowElementValue(DataInput file) throws IOException {
-
-        byte type = file.readByte();
-        switch (type) {
-        case 'B': // byte
-        case 'C': // char
-        case 'D': // double
-        case 'F': // float
-        case 'I': // int
-        case 'J': // long
-        case 'S': // short
-        case 'Z': // boolean
-        case 's': // String
-        case 'c': // Class
-            // file.readUnsignedShort(); // Unused value index
-            skipFully(file, 2);
-            break;
-        case 'e': // Enum constant
-            // file.readUnsignedShort(); // Unused type_index
-            // file.readUnsignedShort(); // Unused value index
-            skipFully(file, 4);
-            break;
-        case '@': // Annotation
-            swallowAnnotationEntry(file);
-            break;
-        case '[': // Array
-            int numArrayVals = file.readUnsignedShort();
-            for (int j = 0; j < numArrayVals; j++) {
-                swallowElementValue(file);
-            }
-            break;
-        default:
-            throw new ClassFormatException(
-                    "Unexpected element value kind in annotation: " + type);
-        }
-    }
-
     static void swallowFieldOrMethod(DataInput file)
             throws IOException {
         // file.readUnsignedShort(); // Unused access flags
@@ -404,7 +108,4 @@ final class Utility {
         skipFully(file, length);
     }
 
-    static void swallowAnnotationDefault(DataInput file) throws IOException {
-        swallowElementValue(file);
-    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to