Skip to content

Commit

Permalink
god bless this code
Browse files Browse the repository at this point in the history
  • Loading branch information
yaansz committed Aug 29, 2024
1 parent 32f6fac commit 213e6c5
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ private void scanPackages(String ... packages) {
Set<Class> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public void scan() {
}

private void scanPackage(String packageName) {
List<Class> classes = ScanUtils.getClassesInPackage(packageName).stream().filter(clazz -> clazz.isAnnotationPresent(DiscordController.class)).toList();
List<Class> classes = ScanUtils.getClassesInPackage(packageName, DiscordController.class).stream().toList();

for(Class clazz : classes) {
Object instance = context.getInstance(clazz);
Expand Down
14 changes: 10 additions & 4 deletions src/main/java/com/softawii/curupira/v2/utils/ScanUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -17,10 +18,15 @@ public class ScanUtils {

private static final Logger LOGGER = LoggerFactory.getLogger(ScanUtils.class);

public static Set<Class> 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<Class> 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<Method> getMethodsAnnotatedWith(Class clazz, Class filtering) {
Expand Down

0 comments on commit 213e6c5

Please sign in to comment.