From 213e6c5c07c48c95d8dbebf768f6ce5ab799aafc Mon Sep 17 00:00:00 2001 From: yaansz Date: Wed, 28 Aug 2024 23:59:13 -0300 Subject: [PATCH] god bless this code --- .../softawii/curupira/v2/core/ExceptionMapper.java | 2 +- .../curupira/v2/core/InteractionMapper.java | 2 +- .../com/softawii/curupira/v2/utils/ScanUtils.java | 14 ++++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/softawii/curupira/v2/core/ExceptionMapper.java b/src/main/java/com/softawii/curupira/v2/core/ExceptionMapper.java index 8ee66c1..ae14af1 100644 --- a/src/main/java/com/softawii/curupira/v2/core/ExceptionMapper.java +++ b/src/main/java/com/softawii/curupira/v2/core/ExceptionMapper.java @@ -36,7 +36,7 @@ private void scanPackages(String ... packages) { Set classes = new HashSet<>(); for(String pkg : packages) { - classes.addAll(ScanUtils.getClassesInPackage(pkg).stream().filter(clazz -> clazz.isAnnotationPresent(DiscordExceptions.class)).toList()); + classes.addAll(ScanUtils.getClassesInPackage(pkg, DiscordExceptions.class).stream().toList()); } for(Class clazz : classes) { diff --git a/src/main/java/com/softawii/curupira/v2/core/InteractionMapper.java b/src/main/java/com/softawii/curupira/v2/core/InteractionMapper.java index 013e996..0c077be 100644 --- a/src/main/java/com/softawii/curupira/v2/core/InteractionMapper.java +++ b/src/main/java/com/softawii/curupira/v2/core/InteractionMapper.java @@ -78,7 +78,7 @@ public void scan() { } private void scanPackage(String packageName) { - List classes = ScanUtils.getClassesInPackage(packageName).stream().filter(clazz -> clazz.isAnnotationPresent(DiscordController.class)).toList(); + List classes = ScanUtils.getClassesInPackage(packageName, DiscordController.class).stream().toList(); for(Class clazz : classes) { Object instance = context.getInstance(clazz); diff --git a/src/main/java/com/softawii/curupira/v2/utils/ScanUtils.java b/src/main/java/com/softawii/curupira/v2/utils/ScanUtils.java index c18492f..bf55db2 100644 --- a/src/main/java/com/softawii/curupira/v2/utils/ScanUtils.java +++ b/src/main/java/com/softawii/curupira/v2/utils/ScanUtils.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashSet; @@ -17,10 +18,15 @@ public class ScanUtils { private static final Logger LOGGER = LoggerFactory.getLogger(ScanUtils.class); - public static Set getClassesInPackage(String pkgName) { - LOGGER.info("Searching for classes in package '{}'", pkgName); - Reflections reflections = new Reflections(pkgName); - return new HashSet<>(reflections.getSubTypesOf(Object.class)); + public static Set getClassesInPackage(String pkg, Class annotation) { + LOGGER.info("Scanning package: {}, annotation: {}", pkg, annotation); + + Reflections reflections = new Reflections(new ConfigurationBuilder() + .forPackages(pkg) + .setScanners(Scanners.TypesAnnotated) + .filterInputsBy(input -> input.endsWith(".class"))); + + return new HashSet<>(reflections.getTypesAnnotatedWith(annotation)); } public static List getMethodsAnnotatedWith(Class clazz, Class filtering) {