[jboss-svn-commits] JBoss Common SVN: r2657 - common-old/branches/Branch_1_0/src/main/org/jboss/util.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Oct 25 17:09:28 EDT 2007
Author: dimitris at jboss.org
Date: 2007-10-25 17:09:28 -0400 (Thu, 25 Oct 2007)
New Revision: 2657
Modified:
common-old/branches/Branch_1_0/src/main/org/jboss/util/Classes.java
Log:
JBCOMMON-36, add a Classes.getAllUniqueInterfaces utility method.
Modified: common-old/branches/Branch_1_0/src/main/org/jboss/util/Classes.java
===================================================================
--- common-old/branches/Branch_1_0/src/main/org/jboss/util/Classes.java 2007-10-25 21:08:29 UTC (rev 2656)
+++ common-old/branches/Branch_1_0/src/main/org/jboss/util/Classes.java 2007-10-25 21:09:28 UTC (rev 2657)
@@ -38,7 +38,8 @@
*
* @version <tt>$Revision$</tt>
* @author <a href="mailto:jason at planet57.com">Jason Dillon</a>
- * @author Scott.Stark at jboss.org
+ * @author <a href="mailto:scott.stark at jboss.org">Scott Stark</a>
+ * @author <a href="mailto:dimitris at jboss.org">Dimitris Andreadis<a/>
*/
public final class Classes
{
@@ -401,18 +402,18 @@
}
/**
- * Object a list of all interfaces starting with the argument class c through
- * all superclasses
+ * Populates a list with all the interfaces implemented by the argument
+ * class c and all its superclasses.
*
- * @param allIfaces - the list to populate for
+ * @param allIfaces - the list to populate with the interfaces
* @param c - the class to start scanning for interfaces
*/
public static void getAllInterfaces(List allIfaces, Class c)
{
- while( c != null )
+ while (c != null)
{
Class[] ifaces = c.getInterfaces();
- for(int n = 0; n < ifaces.length; n ++)
+ for (int n = 0; n < ifaces.length; n ++)
{
allIfaces.add(ifaces[n]);
}
@@ -421,6 +422,28 @@
}
/**
+ * Returns an array containing all the unique interfaces implemented
+ * by the argument class c and all its superclasses. Interfaces that
+ * appear multiple times through inheritence are only accounted for once.
+ *
+ * @param c - the class to start scanning for interfaces
+ */
+ public static Class[] getAllUniqueInterfaces(Class c)
+ {
+ Set uniqueIfaces = new HashSet();
+ while (c != null )
+ {
+ Class[] ifaces = c.getInterfaces();
+ for (int n = 0; n < ifaces.length; n ++)
+ {
+ uniqueIfaces.add(ifaces[n]);
+ }
+ c = c.getSuperclass();
+ }
+ return (Class[])uniqueIfaces.toArray(new Class[uniqueIfaces.size()]);
+ }
+
+ /**
* Check if the given class is a primitive wrapper class.
*
* @param type Class to check.
More information about the jboss-svn-commits
mailing list