GH-1149 - Optimize performance for application module lookups by type.

We now avoid immediately resorting to a by type name lookup that triggers extensive search to be able to support simple class names.
This commit is contained in:
Oliver Drotbohm
2025-04-18 00:01:55 +02:00
parent b932faf349
commit 4cf9b5c707
3 changed files with 11 additions and 4 deletions

View File

@@ -341,7 +341,7 @@ public class ApplicationModule implements Comparable<ApplicationModule> {
* @param type must not be {@literal null}.
*/
public boolean contains(JavaClass type) {
return contains(type.getName());
return classes.contains(type);
}
/**
@@ -350,7 +350,7 @@ public class ApplicationModule implements Comparable<ApplicationModule> {
* @param type must not be {@literal null}.
*/
public boolean contains(Class<?> type) {
return contains(type.getName());
return classes.contains(type);
}
/**

View File

@@ -412,7 +412,10 @@ public class ApplicationModules implements Iterable<ApplicationModule> {
* @return will never be {@literal null}.
*/
public Optional<ApplicationModule> getModuleByType(Class<?> candidate) {
return getModuleByType(candidate.getName());
return allModules()
.filter(it -> it.contains(candidate))
.findFirst();
}
/**

View File

@@ -172,7 +172,11 @@ class Classes implements DescribedIterable<JavaClass> {
}
boolean contains(JavaClass type) {
return !that(new SameClass(type)).isEmpty();
return classes.contains(type);
}
boolean contains(Class<?> type) {
return classes.stream().anyMatch(it -> it.isEquivalentTo(type));
}
boolean contains(String className) {