package com.revolsys.beans; import java.util.LinkedHashSet; import java.util.Set; public class Classes { public static void addInterfaces(final Set<Class<? extends Object>> classes, final Class<? extends Object> clazz) { if (clazz != null) { final Class<?>[] interfaceClasses = clazz.getInterfaces(); for (final Class<?> interfaceClass : interfaceClasses) { addSuperClassesAndInterfaces(classes, interfaceClass); } } } public static void addSuperClasses(final Set<Class<? extends Object>> classes, final Class<? extends Object> clazz) { if (clazz != null) { classes.add(clazz); final Class<?> superclass = clazz.getSuperclass(); addSuperClasses(classes, superclass); } } public static void addSuperClassesAndInterfaces(final Set<Class<? extends Object>> classes, final Class<? extends Object> clazz) { if (clazz != null) { classes.add(clazz); final Class<?>[] interfaceClasses = clazz.getInterfaces(); for (final Class<?> interfaceClass : interfaceClasses) { addSuperClassesAndInterfaces(classes, interfaceClass); } final Class<?> superClass = clazz.getSuperclass(); addSuperClassesAndInterfaces(classes, superClass); } } public static String className(final Class<?> clazz) { final String name = clazz.getName(); final int index = name.lastIndexOf('.'); if (index == -1) { return name; } else { return name.substring(index + 1); } } public static String className(final Object value) { if (value == null) { return null; } Class<?> clazz; if (value instanceof Class) { clazz = (Class<?>)value; } else { clazz = value.getClass(); } return className(clazz); } public static Set<Class<? extends Object>> getInterfaces(final Class<? extends Object> clazz) { final Set<Class<? extends Object>> classes = new LinkedHashSet<>(); addInterfaces(classes, clazz); return classes; } public static Set<Class<? extends Object>> getSuperClasses(final Class<? extends Object> clazz) { final Set<Class<? extends Object>> classes = new LinkedHashSet<>(); addSuperClasses(classes, clazz); return classes; } public static Set<Class<? extends Object>> getSuperClassesAndInterfaces( final Class<? extends Object> clazz) { final Set<Class<? extends Object>> classes = new LinkedHashSet<>(); addSuperClassesAndInterfaces(classes, clazz); return classes; } public static String packageName(final Class<?> classDef) { if (classDef != null) { final Package packageDef = classDef.getPackage(); if (packageDef != null) { final String packageName = packageDef.getName(); return packageName; } } return ""; } public static String packagePath(final Class<?> classDef) { final String packageName = packageName(classDef); return "/" + packageName.replaceAll("\\.", "/"); } }