From b1456639a30c88221dd04e1f328e48aa1464f1d7 Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Fri, 13 Oct 2023 09:29:52 +0300 Subject: [PATCH] Fixed - RBucketReactive.delete() method doesn't work in Quarkus Native. --- .../QuarkusRedissonClientProcessor.java | 63 ++++++++++++++++--- .../QuarkusRedissonClientProcessor.java | 63 ++++++++++++++++--- 2 files changed, 106 insertions(+), 20 deletions(-) diff --git a/redisson-quarkus/redisson-quarkus-16/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java b/redisson-quarkus/redisson-quarkus-16/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java index ac966d61a..5780f78a7 100644 --- a/redisson-quarkus/redisson-quarkus-16/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java +++ b/redisson-quarkus/redisson-quarkus-16/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java @@ -28,6 +28,17 @@ import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; import io.quarkus.redisson.client.runtime.RedissonClientProducer; import io.quarkus.redisson.client.runtime.RedissonClientRecorder; +import org.redisson.RedissonBucket; +import org.redisson.RedissonMultimap; +import org.redisson.RedissonObject; +import org.redisson.api.RBucket; +import org.redisson.api.RExpirable; +import org.redisson.api.RObject; +import org.redisson.api.RObjectReactive; +import org.redisson.codec.Kryo5Codec; +import org.redisson.config.*; +import org.redisson.executor.RemoteExecutorService; +import org.redisson.executor.RemoteExecutorServiceAsync; import java.io.IOException; @@ -64,18 +75,50 @@ class QuarkusRedissonClientProcessor { nativeResources.produce(new NativeImageResourceBuildItem("META-INF/services/org.jboss.marshalling.ProviderDescriptor")); watchedFiles.produce(new HotDeploymentWatchedFileBuildItem("redisson.yaml")); - reflectiveItems.produce(new ReflectiveClassBuildItem(false, false, "org.redisson.codec.Kryo5Codec")); + reflectiveItems.produce(ReflectiveClassBuildItem.builder(Kryo5Codec.class) + .methods(false) + .fields(false) + .build() + ); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, false, "org.redisson.executor.RemoteExecutorService")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, false, "org.redisson.executor.RemoteExecutorServiceAsync")); + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + RemoteExecutorService.class, + RemoteExecutorServiceAsync.class) + .methods(true) + .fields(false) + .build() + ); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.Config")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.BaseConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.BaseMasterSlaveServersConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.SingleServerConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.ReplicatedServersConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.SentinelServersConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.ClusterServersConfig")); + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + Config.class, + BaseConfig.class, + BaseMasterSlaveServersConfig.class, + SingleServerConfig.class, + ReplicatedServersConfig.class, + SentinelServersConfig.class, + ClusterServersConfig.class) + .methods(true) + .fields(true) + .build() + ); + + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + RBucket.class, + RedissonBucket.class, + RedissonObject.class, + RedissonMultimap.class) + .methods(true) + .fields(true) + .build() + ); + + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + RObjectReactive.class, + RExpirable.class, + RObject.class) + .methods(true) + .build() + ); } @BuildStep diff --git a/redisson-quarkus/redisson-quarkus-20/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java b/redisson-quarkus/redisson-quarkus-20/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java index ac966d61a..5780f78a7 100644 --- a/redisson-quarkus/redisson-quarkus-20/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java +++ b/redisson-quarkus/redisson-quarkus-20/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java @@ -28,6 +28,17 @@ import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; import io.quarkus.redisson.client.runtime.RedissonClientProducer; import io.quarkus.redisson.client.runtime.RedissonClientRecorder; +import org.redisson.RedissonBucket; +import org.redisson.RedissonMultimap; +import org.redisson.RedissonObject; +import org.redisson.api.RBucket; +import org.redisson.api.RExpirable; +import org.redisson.api.RObject; +import org.redisson.api.RObjectReactive; +import org.redisson.codec.Kryo5Codec; +import org.redisson.config.*; +import org.redisson.executor.RemoteExecutorService; +import org.redisson.executor.RemoteExecutorServiceAsync; import java.io.IOException; @@ -64,18 +75,50 @@ class QuarkusRedissonClientProcessor { nativeResources.produce(new NativeImageResourceBuildItem("META-INF/services/org.jboss.marshalling.ProviderDescriptor")); watchedFiles.produce(new HotDeploymentWatchedFileBuildItem("redisson.yaml")); - reflectiveItems.produce(new ReflectiveClassBuildItem(false, false, "org.redisson.codec.Kryo5Codec")); + reflectiveItems.produce(ReflectiveClassBuildItem.builder(Kryo5Codec.class) + .methods(false) + .fields(false) + .build() + ); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, false, "org.redisson.executor.RemoteExecutorService")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, false, "org.redisson.executor.RemoteExecutorServiceAsync")); + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + RemoteExecutorService.class, + RemoteExecutorServiceAsync.class) + .methods(true) + .fields(false) + .build() + ); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.Config")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.BaseConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.BaseMasterSlaveServersConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.SingleServerConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.ReplicatedServersConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.SentinelServersConfig")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, true, "org.redisson.config.ClusterServersConfig")); + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + Config.class, + BaseConfig.class, + BaseMasterSlaveServersConfig.class, + SingleServerConfig.class, + ReplicatedServersConfig.class, + SentinelServersConfig.class, + ClusterServersConfig.class) + .methods(true) + .fields(true) + .build() + ); + + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + RBucket.class, + RedissonBucket.class, + RedissonObject.class, + RedissonMultimap.class) + .methods(true) + .fields(true) + .build() + ); + + reflectiveItems.produce(ReflectiveClassBuildItem.builder( + RObjectReactive.class, + RExpirable.class, + RObject.class) + .methods(true) + .build() + ); } @BuildStep