|
11 | 11 | import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; |
12 | 12 |
|
13 | 13 | public class CaffeineProcessor { |
14 | | - private static final String CACHE_LOADER_CLASS_NAME = "com.github.benmanes.caffeine.cache.CacheLoader"; |
15 | | - private static final DotName CACHE_LOADER_NAME = DotName.createSimple(CACHE_LOADER_CLASS_NAME); |
| 14 | + |
| 15 | + private static final DotName BOUNDED_LOCAL_CACHE_NAME = DotName |
| 16 | + .createSimple("com.github.benmanes.caffeine.cache.BoundedLocalCache"); |
| 17 | + private static final DotName NODE_NAME = DotName.createSimple("com.github.benmanes.caffeine.cache.Node"); |
| 18 | + private static final DotName CACHE_LOADER_NAME = DotName.createSimple("com.github.benmanes.caffeine.cache.CacheLoader"); |
16 | 19 |
|
17 | 20 | @BuildStep |
18 | | - ReflectiveClassBuildItem cacheClasses() throws IOException { |
19 | | - //todo: how to we want to handle this? There are a lot of different cache classes |
20 | | - return new ReflectiveClassBuildItem(false, false, |
21 | | - "com.github.benmanes.caffeine.cache.SSLMS", |
22 | | - "com.github.benmanes.caffeine.cache.SILMS", |
23 | | - "com.github.benmanes.caffeine.cache.PSMS", |
24 | | - "com.github.benmanes.caffeine.cache.PDMS", |
25 | | - "com.github.benmanes.caffeine.cache.SSMS", |
26 | | - "com.github.benmanes.caffeine.cache.SSLA", |
27 | | - "com.github.benmanes.caffeine.cache.PSA"); |
| 21 | + void cacheClasses(CombinedIndexBuildItem combinedIndex, |
| 22 | + BuildProducer<ReflectiveClassBuildItem> reflectiveClass) throws IOException { |
| 23 | + reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, |
| 24 | + combinedIndex.getIndex().getAllKnownSubclasses(BOUNDED_LOCAL_CACHE_NAME).stream() |
| 25 | + .map(ci -> ci.name().toString()) |
| 26 | + .toArray(String[]::new))); |
| 27 | + |
| 28 | + reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, |
| 29 | + combinedIndex.getIndex().getAllKnownSubclasses(NODE_NAME).stream() |
| 30 | + .map(ci -> ci.name().toString()) |
| 31 | + .toArray(String[]::new))); |
28 | 32 | } |
29 | 33 |
|
30 | 34 | @BuildStep |
31 | 35 | void cacheLoaders(CombinedIndexBuildItem combinedIndex, BuildProducer<ReflectiveClassBuildItem> reflectiveClasses) { |
32 | | - reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, CACHE_LOADER_CLASS_NAME)); |
| 36 | + reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, CACHE_LOADER_NAME.toString())); |
33 | 37 |
|
34 | 38 | for (ClassInfo info : combinedIndex.getIndex().getAllKnownImplementors(CACHE_LOADER_NAME)) { |
35 | 39 | reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, info.name().toString())); |
|
0 commit comments