View Javadoc

1   package com.atlassian.plugin.util;
2   
3   import java.util.Set;
4   import java.util.HashSet;
5   
6   /**
7    * Class utility methods
8    */
9   public class ClassUtils
10  {
11      private ClassUtils() {}
12  
13      /**
14       * Finds all super classes and interfaces for a given class
15       * @param cls The class to scan
16       * @return The collected related classes found
17       */
18      public static Set<Class> findAllTypes(Class cls)
19      {
20          Set<Class> types = new HashSet<Class>();
21          findAllTypes(cls, types);
22          return types;
23      }
24  
25      /**
26       * Finds all super classes and interfaces for a given class
27       * @param cls The class to scan
28       * @param types The collected related classes found
29       */
30      public static void findAllTypes(Class cls, Set<Class> types)
31      {
32          if (cls == null)
33              return;
34  
35          // check to ensure it hasn't been scanned yet
36          if (types.contains(cls))
37              return;
38  
39          types.add(cls);
40  
41          findAllTypes(cls.getSuperclass(), types);
42          for (int x = 0; x<cls.getInterfaces().length; x++)
43              findAllTypes(cls.getInterfaces()[x], types);
44      }
45  }