Author: dbrosius Date: Sun Jul 17 15:42:58 2005 New Revision: 219413 URL: http://svn.apache.org/viewcvs?rev=219413&view=rev Log: fix JavaClass.getAllInterfaces to only return one copy of each interface it or it's super classes implement. As a by product, deprecate the dubious helper class 'ClassVector'
Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/JavaClass.java jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassQueue.java jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassVector.java Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/JavaClass.java URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/JavaClass.java?rev=219413&r1=219412&r2=219413&view=diff ============================================================================== --- jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/JavaClass.java (original) +++ jakarta/bcel/trunk/src/java/org/apache/bcel/classfile/JavaClass.java Sun Jul 17 15:42:58 2005 @@ -23,12 +23,16 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; import java.util.StringTokenizer; +import java.util.TreeSet; + import org.apache.bcel.Constants; import org.apache.bcel.generic.Type; import org.apache.bcel.util.BCELComparator; import org.apache.bcel.util.ClassQueue; -import org.apache.bcel.util.ClassVector; import org.apache.bcel.util.SyntheticRepository; /** @@ -798,15 +802,15 @@ */ public JavaClass[] getSuperClasses() throws ClassNotFoundException { JavaClass clazz = this; - ClassVector vec = new ClassVector(); + List allSuperClasses = new ArrayList(); for (clazz = clazz.getSuperClass(); clazz != null; clazz = clazz.getSuperClass()) { - vec.addElement(clazz); + allSuperClasses.add(clazz); } - return vec.toArray(); + return (JavaClass[])allSuperClasses.toArray(new JavaClass[allSuperClasses.size()]); } /** @@ -828,7 +832,7 @@ */ public JavaClass[] getAllInterfaces() throws ClassNotFoundException { ClassQueue queue = new ClassQueue(); - ClassVector vec = new ClassVector(); + Set allInterfaces = new TreeSet(); queue.enqueue(this); @@ -839,7 +843,7 @@ JavaClass[] interfaces = clazz.getInterfaces(); if (clazz.isInterface()) { - vec.addElement(clazz); + allInterfaces.add(clazz); } else { if (souper != null) { queue.enqueue(souper); @@ -851,7 +855,7 @@ } } - return vec.toArray(); + return (JavaClass[])allInterfaces.toArray(new JavaClass[allInterfaces.size()]); } /** Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassQueue.java URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassQueue.java?rev=219413&r1=219412&r2=219413&view=diff ============================================================================== --- jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassQueue.java (original) +++ jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassQueue.java Sun Jul 17 15:42:58 2005 @@ -25,7 +25,6 @@ * * @version $Id$ * @author <A HREF="mailto:[EMAIL PROTECTED]">M. Dahm</A> - * @see ClassVector */ public class ClassQueue implements java.io.Serializable { protected LinkedList vec = new LinkedList(); Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassVector.java URL: http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassVector.java?rev=219413&r1=219412&r2=219413&view=diff ============================================================================== --- jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassVector.java (original) +++ jakarta/bcel/trunk/src/java/org/apache/bcel/util/ClassVector.java Sun Jul 17 15:42:58 2005 @@ -25,7 +25,8 @@ * * @version $Id$ * @author <A HREF="mailto:[EMAIL PROTECTED]">M. Dahm</A> - * @see ClassQueue + * + * @deprecated as of 5.1.1 - 7/17/2005 */ public class ClassVector implements java.io.Serializable { protected ArrayList vec = new ArrayList(); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]