package io.github.jordandoyle.helpers.reflection; import io.github.jordandoyle.helpers.classloader.Loader; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Vector; /** * This class provides you with package functions to better manage your packages * and perform functions such as retrieving all classes from a package and more. * * @author Jordan Doyle * */ public class Package { /** * Returns all the classes from a package * * @param p * The Package object to get classes from * @return all classes from a Package object * @throws Exception */ public static List getClassesInPackage(java.lang.Package p, ClassLoader classLoader) throws Exception { return getClassesInPackage(p.getName(), classLoader); } /** * Returns all the classes from a package * * @param p * The Package object to get classes from * @return all classes from a Package object * @throws Exception */ public static List getClassesInPackage(java.lang.Package p) throws Exception { return getClassesInPackage(p.getName()); } /** * Returns all the classes from a package * * @param name * The fully-qualified name of the package * @return all the classes from a package * @throws Exception */ public static List getClassesInPackage(String name) throws Exception { return getClassesInPackage(name, ClassLoader.getSystemClassLoader()); } /** * Returns all the classes from a package * * @param name * The fully-qualified name of the package * @return all the classes from a package * @throws Exception */ public static List getClassesInPackage(String name, ClassLoader classLoader) throws Exception { Vector classes = Loader.getAllClasses(classLoader); List inPackage = new ArrayList(); for (Class c : classes) { java.lang.Package p = c.getPackage(); if (p != null && p.getName() != null && p.getName().startsWith(name)) inPackage.add(c); } return inPackage; } }