Skip to content

Commit

Permalink
CoherentEventFactory.java: Use org.reflections in ReflectionsUtil.
Browse files Browse the repository at this point in the history
  • Loading branch information
seanbright committed Aug 12, 2024
1 parent ac3b72d commit 5040217
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.asteriskjava.util.Log;
import org.asteriskjava.util.LogFactory;
import org.asteriskjava.util.ReflectionUtil;
import org.reflections.Reflections;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
Expand All @@ -35,7 +36,7 @@ public class CoherentEventFactory {
// static initialiser
static {

Set<Class<ManagerEvent>> knownClasses = ReflectionUtil.loadClasses("org.asteriskjava.pbx.asterisk.wrap.events",
Set<Class<? extends ManagerEvent>> knownClasses = ReflectionUtil.loadClasses("org.asteriskjava.pbx.asterisk.wrap.events",
ManagerEvent.class);

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Expand Down
33 changes: 9 additions & 24 deletions src/main/java/org/asteriskjava/util/ReflectionUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
*/
package org.asteriskjava.util;

import org.reflections.Reflections;
import org.reflections.util.QueryFunction;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Constructor;
Expand All @@ -30,6 +33,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.stream.Collectors;

/**
* Utility class that provides helper methods for reflection that is used by the
Expand Down Expand Up @@ -264,30 +268,11 @@ public static Object newInstance(String s) {
* @param baseClassOrInterface
* @return
*/
@SuppressWarnings("unchecked")
public static <T> Set<Class<T>> loadClasses(String packageName, Class<T> baseClassOrInterface) {
Set<Class<T>> result = new HashSet<>();

try {
Set<String> classNames = getClassNamesFromPackage(packageName);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
for (String className : classNames) {
try {
Class<?> clazz = classLoader.loadClass(packageName + "." + className);
if (!Modifier.isAbstract(clazz.getModifiers()) && baseClassOrInterface.isAssignableFrom(clazz)) {
result.add((Class<T>) clazz);
}
} catch (Throwable e) {
logger.error(e, e);
}

}
logger.info("Loaded " + result.size());
} catch (Exception e) {
logger.error(e, e);
}

return result;
public static <T> Set<Class<? extends T>> loadClasses(String packageName, Class<T> baseClassOrInterface) {
Set<Class<? extends T>> result = new Reflections(packageName).getSubTypesOf(baseClassOrInterface);
return result.stream()
.filter(c -> !Modifier.isAbstract(c.getModifiers()))
.collect(Collectors.toSet());
}

/**
Expand Down

0 comments on commit 5040217

Please sign in to comment.