Author: markt
Date: Sun Oct 14 00:53:23 2012
New Revision: 1397985

URL: http://svn.apache.org/viewvc?rev=1397985&view=rev
Log:
Only need FieldOrMethod, not individual classes

Removed:
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Field.java
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/Method.java
Modified:
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java
    tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/FieldOrMethod.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java?rev=1397985&r1=1397984&r2=1397985&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/ClassParser.java 
Sun Oct 14 00:53:23 2012
@@ -47,8 +47,8 @@ public final class ClassParser {
     private int access_flags; // Access rights of parsed class
     private int[] interfaces; // Names of implemented interfaces
     private ConstantPool constant_pool; // collection of constants
-    private Field[] fields; // class fields, i.e., its variables
-    private Method[] methods; // methods defined in the class
+    private FieldOrMethod[] fields; // class fields, i.e., its variables
+    private FieldOrMethod[] methods; // methods defined in the class
     private Attribute[] attributes; // attributes defined in the class
     private static final int BUFSIZE = 8192;
 
@@ -176,9 +176,9 @@ public final class ClassParser {
     private final void readFields() throws IOException, ClassFormatException {
         int fields_count;
         fields_count = file.readUnsignedShort();
-        fields = new Field[fields_count];
+        fields = new FieldOrMethod[fields_count];
         for (int i = 0; i < fields_count; i++) {
-            fields[i] = new Field(file, constant_pool);
+            fields[i] = new FieldOrMethod(file, constant_pool);
         }
     }
 
@@ -221,9 +221,9 @@ public final class ClassParser {
     private final void readMethods() throws IOException, ClassFormatException {
         int methods_count;
         methods_count = file.readUnsignedShort();
-        methods = new Method[methods_count];
+        methods = new FieldOrMethod[methods_count];
         for (int i = 0; i < methods_count; i++) {
-            methods[i] = new Method(file, constant_pool);
+            methods[i] = new FieldOrMethod(file, constant_pool);
         }
     }
 

Modified: 
tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/FieldOrMethod.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/FieldOrMethod.java?rev=1397985&r1=1397984&r2=1397985&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/FieldOrMethod.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/bcel/classfile/FieldOrMethod.java 
Sun Oct 14 00:53:23 2012
@@ -21,16 +21,35 @@ import java.io.DataInputStream;
 import java.io.IOException;
 
 import org.apache.tomcat.util.bcel.Constants;
+import org.apache.tomcat.util.bcel.util.BCELComparator;
 
 /**
- * Abstract super class for fields and methods.
+ * Class for fields and methods.
  *
  * @version $Id$
  * @author  <A HREF="mailto:m.d...@gmx.de";>M. Dahm</A>
  */
-public abstract class FieldOrMethod extends AccessFlags implements Cloneable {
+public class FieldOrMethod extends AccessFlags implements Cloneable {
 
     private static final long serialVersionUID = -3383525930205542157L;
+    private static BCELComparator _cmp = new BCELComparator() {
+
+        @Override
+        public boolean equals( Object o1, Object o2 ) {
+            FieldOrMethod THIS = (FieldOrMethod) o1;
+            FieldOrMethod THAT = (FieldOrMethod) o2;
+            return THIS.getName().equals(THAT.getName())
+                    && THIS.getSignature().equals(THAT.getSignature());
+        }
+
+
+        @Override
+        public int hashCode( Object o ) {
+            FieldOrMethod THIS = (FieldOrMethod) o;
+            return THIS.getSignature().hashCode() ^ THIS.getName().hashCode();
+        }
+    };
+
     protected int name_index; // Points to field name in constant pool
     protected int signature_index; // Points to encoded signature
     protected int attributes_count; // No. of attributes
@@ -104,4 +123,28 @@ public abstract class FieldOrMethod exte
         c = (ConstantUtf8) constant_pool.getConstant(signature_index, 
Constants.CONSTANT_Utf8);
         return c.getBytes();
     }
+
+    /**
+     * Return value as defined by given BCELComparator strategy.
+     * By default two FieldOrMethod objects are said to be equal when
+     * their names and signatures are equal.
+     *
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals( Object obj ) {
+        return _cmp.equals(this, obj);
+    }
+
+
+    /**
+     * Return value as defined by given BCELComparator strategy.
+     * By default return the hashcode of the FieldOrMethod's name XOR 
signature.
+     *
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        return _cmp.hashCode(this);
+    }
 }



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

Reply via email to