public static List findClassesThatExtend(String[] strPathsOrJars,
Class[] superClasses,
boolean innerClasses,
String contains,
String notContains) throws IOException {
if (log.isDebugEnabled()) {
for (int i = 0; i < superClasses.length ; i++){
log.debug("superclass: "+superClasses[i].getName());
}
}
// Find all jars in the search path
strPathsOrJars = addJarsInPath(strPathsOrJars);
for (int k = 0; k < strPathsOrJars.length; k++) {
strPathsOrJars[k] = fixPathEntry(strPathsOrJars[k]);
if (log.isDebugEnabled()) {
log.debug("strPathsOrJars : " + strPathsOrJars[k]);
}
}
// Now eliminate any classpath entries that do not "match" the search
List listPaths = getClasspathMatches(strPathsOrJars);
if (log.isDebugEnabled()) {
Iterator tIter = listPaths.iterator();
while (tIter.hasNext()) {
log.debug("listPaths : " + tIter.next());
}
}
Set listClasses = new FilterTreeSet(superClasses, innerClasses, contains, notContains);
// first get all the classes
findClassesInPaths(listPaths, listClasses);
if (log.isDebugEnabled()) {
log.debug("listClasses.size()="+listClasses.size());
Iterator tIter = listClasses.iterator();
while (tIter.hasNext()) {
log.debug("listClasses : " + tIter.next());
}
}
// // Now keep only the required classes
// Set subClassList = findAllSubclasses(superClasses, listClasses, innerClasses);
// if (log.isDebugEnabled()) {
// log.debug("subClassList.size()="+subClassList.size());
// Iterator tIter = subClassList.iterator();
// while (tIter.hasNext()) {
// log.debug("subClassList : " + tIter.next());
// }
// }
return new ArrayList(listClasses);//subClassList);
}
Find classes in the provided path(s)/jar(s) that extend the class(es). |