Skip to content

Commit 62b07fd

Browse files
authored
Backport classscanner and fix npe (#63)
* backport class path util from main and fix a potential NPE * backport class scanner and fix NPE
1 parent 588a33b commit 62b07fd

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/main/java/it/aboutbits/springboot/toolbox/jackson/CustomTypeDeserializer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ public Class<T> handledType() {
4444

4545
@Override
4646
public T deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
47+
if (jsonParser.getCurrentToken() == null) {
48+
return null;
49+
}
50+
4751
var value = typeConverter.apply(jsonParser);
4852

4953
try {

src/main/java/it/aboutbits/springboot/toolbox/reflection/util/ClassScannerUtil.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,27 @@
66
import org.jspecify.annotations.NullMarked;
77

88
import java.lang.annotation.Annotation;
9+
import java.util.Arrays;
10+
import java.util.Map;
911
import java.util.Set;
12+
import java.util.concurrent.ConcurrentHashMap;
1013
import java.util.stream.Collectors;
1114

1215
@NullMarked
1316
public final class ClassScannerUtil {
17+
private static final Map<String, ClassScanner> CACHE = new ConcurrentHashMap<>();
18+
1419
private ClassScannerUtil() {
1520
}
1621

1722
public static ClassScanner getScannerForPackages(String... packages) {
18-
return new ClassScanner(packages);
23+
var cacheKey = Arrays.stream(packages)
24+
.sorted()
25+
.collect(Collectors.joining("|"));
26+
return CACHE.computeIfAbsent(cacheKey, _ -> new ClassScanner(packages));
1927
}
2028

21-
public static final class ClassScanner implements AutoCloseable {
29+
public static final class ClassScanner {
2230
private final ScanResult scanResult;
2331
private final String[] packages;
2432

@@ -51,10 +59,5 @@ public Set<Class<?>> getClassesAnnotatedWith(Class<? extends Annotation> clazz)
5159
ClassInfo::loadClass
5260
).collect(Collectors.toSet());
5361
}
54-
55-
@Override
56-
public void close() {
57-
scanResult.close();
58-
}
5962
}
6063
}

0 commit comments

Comments
 (0)