Author: markt
Date: Fri Sep 12 13:12:21 2014
New Revision: 1624535

URL: http://svn.apache.org/r1624535
Log:
Port more code removal from trunk

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/   (props changed)
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Constant.java
    
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ConstantUtf8.java
    tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1624422,1624476,1624486-1624487,1624497-1624498

Propchange: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/
------------------------------------------------------------------------------
  Merged 
/tomcat/trunk/java/org/apache/tomcat/util/bcel:r1624422,1624476,1624486-1624487,1624497-1624498

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java?rev=1624535&r1=1624534&r2=1624535&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Attribute.java 
Fri Sep 12 13:12:21 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, constant_pool);
-            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/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java?rev=1624535&r1=1624534&r2=1624535&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java
 (original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java
 Fri Sep 12 13:12:21 2014
@@ -216,7 +216,7 @@ public final class ClassParser {
     private void readFields() throws IOException, ClassFormatException {
         int fields_count = file.readUnsignedShort();
         for (int i = 0; i < fields_count; i++) {
-            Utility.swallowFieldOrMethod(file, constant_pool);
+            Utility.swallowFieldOrMethod(file);
         }
     }
 
@@ -259,7 +259,7 @@ public final class ClassParser {
         int methods_count;
         methods_count = file.readUnsignedShort();
         for (int i = 0; i < methods_count; i++) {
-            Utility.swallowFieldOrMethod(file, constant_pool);
+            Utility.swallowFieldOrMethod(file);
         }
     }
 
@@ -270,7 +270,8 @@ public final class ClassParser {
      * @throws  ClassFormatException
      */
     private void readVersion() throws IOException, ClassFormatException {
-        file.readUnsignedShort();   // Unused minor
-        file.readUnsignedShort();   // Unused major
+        // file.readUnsignedShort(); // Unused minor
+        // file.readUnsignedShort(); // Unused major
+        Utility.skipFully(file, 4);
     }
 }

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Constant.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Constant.java?rev=1624535&r1=1624534&r2=1624535&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Constant.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Constant.java 
Fri Sep 12 13:12:21 2014
@@ -68,17 +68,10 @@ public abstract class Constant implement
     static Constant readConstant( DataInputStream file ) throws IOException,
             ClassFormatException {
         byte b = file.readByte(); // Read tag byte
+        int skipSize;
         switch (b) {
             case Constants.CONSTANT_Class:
                 return new ConstantClass(file);
-            case Constants.CONSTANT_Fieldref:
-            case Constants.CONSTANT_Methodref:
-            case Constants.CONSTANT_InterfaceMethodref:
-                Utility.swallowConstantCP(file);
-                return null;
-            case Constants.CONSTANT_String:
-                Utility.swallowConstantString(file);
-                return null;
             case Constants.CONSTANT_Integer:
                 return new ConstantInteger(file);
             case Constants.CONSTANT_Float:
@@ -87,23 +80,27 @@ public abstract class Constant implement
                 return new ConstantLong(file);
             case Constants.CONSTANT_Double:
                 return new ConstantDouble(file);
-            case Constants.CONSTANT_NameAndType:
-                Utility.swallowConstantNameAndType(file);
-                return null;
             case Constants.CONSTANT_Utf8:
                 return ConstantUtf8.getInstance(file);
-            case Constants.CONSTANT_MethodHandle:
-                Utility.swallowConstantMethodHandle(file);
-                return null;
+            case Constants.CONSTANT_String:
             case Constants.CONSTANT_MethodType:
-                Utility.swallowConstantMethodType(file);
-                return null;
+                skipSize = 2; // unsigned short
+                break;
+            case Constants.CONSTANT_MethodHandle:
+                skipSize = 3; // unsigned byte, unsigned short
+                break;
+            case Constants.CONSTANT_Fieldref:
+            case Constants.CONSTANT_Methodref:
+            case Constants.CONSTANT_InterfaceMethodref:
+            case Constants.CONSTANT_NameAndType:
             case Constants.CONSTANT_InvokeDynamic:
-                Utility.swallowConstantInvokeDynamic(file);
-                return null;
+                skipSize = 4; // unsigned short, unsigned short
+                break;
             default:
                 throw new ClassFormatException("Invalid byte tag in constant 
pool: " + b);
         }
+        Utility.skipFully(file, skipSize);
+        return null;
     }
 
 

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ConstantUtf8.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ConstantUtf8.java?rev=1624535&r1=1624534&r2=1624535&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ConstantUtf8.java
 (original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/ConstantUtf8.java
 Fri Sep 12 13:12:21 2014
@@ -18,9 +18,6 @@ package org.apache.tomcat.util.bcel.clas
 
 import java.io.DataInputStream;
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
 
 import org.apache.tomcat.util.bcel.Constants;
 
@@ -37,39 +34,9 @@ public final class ConstantUtf8 extends 
     private static final long serialVersionUID = 8119001312020421976L;
     private final String bytes;
 
-    private static final int MAX_CACHE_ENTRIES = 20000;
-    private static final int INITIAL_CACHE_CAPACITY = 
(int)(MAX_CACHE_ENTRIES/0.75);
-    private static HashMap<String, ConstantUtf8> cache;
-
-    private static synchronized ConstantUtf8 getCachedInstance(String s) {
-        if (s.length() > 200) {
-            return  new ConstantUtf8(s);
-        }
-        if (cache == null)  {
-            cache = new LinkedHashMap<String, 
ConstantUtf8>(INITIAL_CACHE_CAPACITY, 0.75f, true) {
-                private static final long serialVersionUID = 1L;
-
-                @Override
-                protected boolean removeEldestEntry(Map.Entry<String, 
ConstantUtf8> eldest) {
-                     return size() > MAX_CACHE_ENTRIES;
-                }
-            };
-        }
-        ConstantUtf8 result = cache.get(s);
-        if (result != null) {
-                return result;
-            }
-        result = new ConstantUtf8(s);
-        cache.put(s, result);
-        return result;
-    }
-
-    private static ConstantUtf8 getInstance(String s) {
-        return getCachedInstance(s);
-    }
 
     static ConstantUtf8 getInstance(DataInputStream file) throws IOException {
-        return getInstance(file.readUTF());
+        return new ConstantUtf8(file.readUTF());
     }
 
 

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java?rev=1624535&r1=1624534&r2=1624535&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/bcel/classfile/Utility.java 
Fri Sep 12 13:12:21 2014
@@ -18,11 +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.
  *
@@ -47,426 +45,33 @@ final class Utility {
         return str.replace('/', '.'); // Is `/' on all systems, even DOS
     }
 
-    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
-            int num_bootstrap_args = file.readUnsignedShort();
-            for (int j = 0; j < num_bootstrap_args; j++) {
-                file.readUnsignedShort(); // Unused bootstrap method argument
-            }
-        }
-    }
-
-    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
-        }
-    }
-
-    static void swallowCodeException(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused start_pc
-        file.readUnsignedShort();   // Unused end_pc
-        file.readUnsignedShort();   // Unused handler_pc
-        file.readUnsignedShort();   // Unused catch_type
-    }
-
-    static void swallowInnerClass(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused inner_class_index
-        file.readUnsignedShort();   // Unused outer_class_index
-        file.readUnsignedShort();   // Unused inner_name_index
-        file.readUnsignedShort();   // Unused inner_access_flags
-    }
-
-    static void swallowLineNumber(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused start_pc
-        file.readUnsignedShort();   // Unused line_number
-    }
-
-    static void swallowLocalVariable(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused start_pc
-        file.readUnsignedShort();   // Unused length
-        file.readUnsignedShort();   // Unused name_index
-        file.readUnsignedShort();   // Unused signature_index
-        file.readUnsignedShort();   // Unused index
-    }
-
-    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
-        }
-    }
-
-    static void swallowStackMapEntry(DataInput file) throws IOException {
-        file.readShort();   // Unused byte_code_offset
-        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
-            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
-        } else if (frame_type == Constants.SAME_FRAME_EXTENDED) {
-            file.readShort(); // Unused byte_code_offset_delta
-        } else if (frame_type >= Constants.APPEND_FRAME &&
-                frame_type <= Constants.APPEND_FRAME_MAX) {
-            file.readShort(); // Unused byte_code_offset_delta
-            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
-            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) {
-            byte[] bytes = new byte[length];
-            file.readFully(bytes);
-        }
-    }
-
-    static void swallowSignature(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused signature_index
-    }
-
-    static void swallowSynthetic(int length) {
-        if (length > 0) {
-            throw new ClassFormatException("Synthetic attribute with length > 
0");
-        }
-    }
-
-    static void swallowSourceFile(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused sourcefile_index
-    }
-
-    static void swallowConstantValue(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused constantvalue_index
-    }
-
-    static void swallowCode(DataInputStream file, ConstantPool constant_pool) 
throws IOException {
-        file.readUnsignedShort();   // Unused max_stack
-        file.readUnsignedShort();   // Unused max_locals
-        int code_length = file.readInt();
-        byte[] code = new byte[code_length]; // Read byte code
-        file.readFully(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();
-        for (int i = 0; i < exception_table_length; i++) {
-            swallowCodeException(file);
-        }
-        /* Read all attributes, currently `LineNumberTable' and
-         * `LocalVariableTable'
-         */
-        int attributes_count = file.readUnsignedShort();
-        for (int i = 0; i < attributes_count; i++) {
-            swallowAttribute(file, constant_pool);
-        }
-    }
-
-    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
+    static void skipFully(DataInput file, int length) throws IOException {
+        int total = file.skipBytes(length);
+        if (total != length) {
+            throw new EOFException();
         }
     }
 
-    static void swallowLineNumberTable(DataInput file) throws IOException {
-        int line_number_table_length = (file.readUnsignedShort());
-        for (int i = 0; i < line_number_table_length; i++) {
-            swallowLineNumber(file);
-        }
-    }
-
-    static void swallowLocalVariableTable(DataInput file) throws IOException {
-        int local_variable_table_length = (file.readUnsignedShort());
-        for (int i = 0; i < local_variable_table_length; i++) {
-            swallowLocalVariable(file);
-        }
-    }
-
-    static void swallowLocalVariableTypeTable(DataInput file) throws 
IOException {
-        int local_variable_type_table_length = (file.readUnsignedShort());
-        for(int i=0; i < local_variable_type_table_length; i++) {
-            swallowLocalVariable(file);
-        }
-    }
-
-    static void swallowInnerClasses(DataInput file) throws IOException {
-        int number_of_classes = file.readUnsignedShort();
-        for (int i = 0; i < number_of_classes; i++) {
-            swallowInnerClass(file);
-        }
-    }
-
-    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
-    }
-
-    static void swallowEnclosingMethod(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused class index
-        file.readUnsignedShort();   // Unused method index
-    }
-
-    static void swallowConstantCP(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused class index
-        file.readUnsignedShort();   // Unused name and type index
-    }
-
-    static void swallowConstantMethodHandle(DataInput file) throws IOException 
{
-        file.readUnsignedByte();    // Unused reference_kind
-        file.readUnsignedShort();   // Unused reference_index
-    }
-
-    static void swallowConstantString(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused string index
-    }
-
-    static void swallowConstantNameAndType(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused name index
-        file.readUnsignedShort();   // Unused signature index
-    }
-
-    static void swallowConstantMethodType(DataInput file) throws IOException {
-        file.readUnsignedShort();   // Unused descriptor_index
-    }
-
-    static void swallowConstantInvokeDynamic(DataInput file) throws 
IOException {
-        file.readUnsignedShort();   // Unused bootstrap_method_attr_index
-        file.readUnsignedShort();   // Unused name_and_type_index
-    }
-
-    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)
+    static void swallowFieldOrMethod(DataInput file)
             throws IOException {
-        file.readUnsignedShort();   // Unused type index
-        final int num_element_value_pairs = file.readUnsignedShort();
-        for (int i = 0; i < num_element_value_pairs; i++) {
-            file.readUnsignedShort();   // Unused name index
-            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
-            break;
-        case 'e': // Enum constant
-            file.readUnsignedShort();   // Unused type_index
-            file.readUnsignedShort();   // Unused value index
-            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(DataInputStream file, ConstantPool 
constant_pool)
-            throws IOException {
-        file.readUnsignedShort();   // Unused access flags
-        file.readUnsignedShort();   // name index
-        file.readUnsignedShort();   // signature index
+        // file.readUnsignedShort(); // Unused access flags
+        // file.readUnsignedShort(); // name index
+        // file.readUnsignedShort(); // signature index
+        skipFully(file, 6);
 
         int attributes_count = file.readUnsignedShort();
         for (int i = 0; i < attributes_count; i++) {
-            swallowAttribute(file, constant_pool);
+            swallowAttribute(file);
         }
     }
 
-    static void swallowAttribute(DataInputStream file, ConstantPool 
constant_pool)
+    static void swallowAttribute(DataInput file)
             throws IOException {
-        byte tag = Constants.ATTR_UNKNOWN;  // Unknown attribute
-        // Get class name from constant pool via `name_index' indirection
-        int name_index = file.readUnsignedShort();
-        ConstantUtf8 c =
-                (ConstantUtf8) constant_pool.getConstant(name_index, 
Constants.CONSTANT_Utf8);
-        String name = c.getBytes();
+        //file.readUnsignedShort();   // Unused name index
+        skipFully(file, 2);
         // Length of data in bytes
         int length = file.readInt();
-        // Compare strings to find known attribute
-        for (byte i = 0; i < Constants.KNOWN_ATTRIBUTES; i++) {
-            if (name.equals(Constants.ATTRIBUTE_NAMES[i])) {
-                tag = i; // found!
-                break;
-            }
-        }
-        // Call proper constructor, depending on `tag'
-        switch (tag)
-        {
-        case Constants.ATTR_UNKNOWN:
-            swallowUnknownAttribute(file, length);
-            break;
-        case Constants.ATTR_CONSTANT_VALUE:
-            swallowConstantValue(file);
-            break;
-        case Constants.ATTR_SOURCE_FILE:
-            swallowSourceFile(file);
-            break;
-        case Constants.ATTR_CODE:
-            swallowCode(file, constant_pool);
-            break;
-        case Constants.ATTR_EXCEPTIONS:
-            swallowExceptionTable(file);
-            break;
-        case Constants.ATTR_LINE_NUMBER_TABLE:
-            swallowLineNumberTable(file);
-            break;
-        case Constants.ATTR_LOCAL_VARIABLE_TABLE:
-            swallowLocalVariableTable(file);
-            break;
-        case Constants.ATTR_INNER_CLASSES:
-            swallowInnerClasses(file);
-            break;
-        case Constants.ATTR_SYNTHETIC:
-            swallowSynthetic(length);
-            break;
-        case Constants.ATTR_DEPRECATED:
-            swallowDeprecated(length);
-            break;
-        case Constants.ATTR_PMG:
-            swallowPMCClass(file);
-            break;
-        case Constants.ATTR_SIGNATURE:
-            swallowSignature(file);
-            break;
-        case Constants.ATTR_STACK_MAP:
-            swallowStackMap(file);
-            break;
-        case Constants.ATTR_RUNTIME_VISIBLE_ANNOTATIONS:
-        case Constants.ATTR_RUNTIME_INVISIBLE_ANNOTATIONS:
-            swallowAnnotations(file);
-            break;
-        case Constants.ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS:
-        case Constants.ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS:
-            swallowParameterAnnotations(file);
-            break;
-        case Constants.ATTR_ANNOTATION_DEFAULT:
-            swallowAnnotationDefault(file);
-            break;
-        case Constants.ATTR_LOCAL_VARIABLE_TYPE_TABLE:
-            swallowLocalVariableTypeTable(file);
-            break;
-        case Constants.ATTR_ENCLOSING_METHOD:
-            swallowEnclosingMethod(file);
-            break;
-        case Constants.ATTR_STACK_MAP_TABLE:
-            swallowStackMapTable(file);
-            break;
-        case Constants.ATTR_BOOTSTRAP_METHODS:
-            swallowBootstrapMethods(file);
-            break;
-        case Constants.ATTR_METHOD_PARAMETERS:
-            swallowMethodParameters(file);
-            break;
-        default: // Never reached
-            throw new ClassFormatException("Unrecognized attribute type tag 
parsed: " + tag);
-        }
+        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