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:[email protected]">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: [email protected]
For additional commands, e-mail: [email protected]