+ if (superClass != null && !aExcludedClasses.contains(superClass)) {
+ getAllMethods(superClass, aFound, aExcludedClasses);
+ }
+ }
+
+ public static List<Field> getAllFields(Class aClass,
+ Class... aExcludedClasses) {
+ if (aClass.isInterface()) {
+ throw new IllegalArgumentException(aClass.getName() +
+ " is an interface.");
+ }
+ List<Field> found = new ArrayList<Field>();
+ getAllFields(aClass, found, Arrays.asList(aExcludedClasses));
+
+ return found;
+ }
+
+ private static void getAllFields(Class aClass, List<Field> aFound,
+ List<Class> aExcludedClasses) {
+ List<Field> declared = Arrays.asList(aClass.getDeclaredFields());
+
+ for (Field field : declared) {
+ aFound.add(field);
+ }
+
+ Class superClass = aClass.getSuperclass();
+
+ if (superClass != null && !aExcludedClasses.contains(superClass)) {
+ getAllFields(superClass, aFound, aExcludedClasses);
+ }
+ }
+
+ /**
+ * Checks if a class is a primitive type or wrapper type.
+ * @param aClass
+ * @return
+ */
+ public static boolean isPrimitive(Class aClass) {
+ if ( aClass.isPrimitive()) {
+ return true;