From cbf5a28712ef129284d5b3146d0de625ff726634 Mon Sep 17 00:00:00 2001 From: dickson Date: Thu, 12 Oct 2023 01:39:04 +0800 Subject: [PATCH 1/4] Add fix for missing methods when build in Quarkus Native Signed-off-by: dickson --- .../QuarkusRedissonClientProcessor.java | 85 +++++++++++++++---- .../it/QuarkusRedissonClientResource.java | 18 ++++ .../it/QuarkusRedissonClientResourceTest.java | 18 ++++ 3 files changed, 105 insertions(+), 16 deletions(-) diff --git a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java index ac966d61a..f0f9d57d7 100644 --- a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java +++ b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java @@ -1,12 +1,12 @@ /** * Copyright (c) 2013-2022 Nikita Koksharov - * + *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -28,13 +28,22 @@ 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; /** - * * @author Nikita Koksharov - * */ class QuarkusRedissonClientProcessor { @@ -64,18 +73,62 @@ 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(ReflectiveClassBuildItem.builder( + RemoteExecutorService.class, + RemoteExecutorServiceAsync.class) + .methods(true) + .fields(false) + .build() + ); + + 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( + 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() + ); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, false, "org.redisson.executor.RemoteExecutorService")); - reflectiveItems.produce(new ReflectiveClassBuildItem(true, false, "org.redisson.executor.RemoteExecutorServiceAsync")); - 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")); } @BuildStep diff --git a/redisson-quarkus/redisson-quarkus-30/integration-tests/src/main/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResource.java b/redisson-quarkus/redisson-quarkus-30/integration-tests/src/main/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResource.java index 9b16dfbe0..00c1efcb6 100644 --- a/redisson-quarkus/redisson-quarkus-30/integration-tests/src/main/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResource.java +++ b/redisson-quarkus/redisson-quarkus-30/integration-tests/src/main/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResource.java @@ -31,11 +31,13 @@ */ package org.redisson.quarkus.client.it; +import io.smallrye.mutiny.Uni; import jakarta.inject.Inject; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import org.redisson.api.*; import org.redisson.api.redisnode.RedisNodes; +import org.redisson.client.codec.StringCodec; import java.util.concurrent.ExecutionException; @@ -81,4 +83,20 @@ public class QuarkusRedissonClientResource { return r.get(); } + @GET + @Path("/bucket") + public Uni getBucket(){ + RBucketReactive bucket = redisson.reactive().getBucket("test-bucket", new StringCodec()); + return Uni.createFrom().future(bucket.set("world").toFuture()) + .flatMap( unused -> Uni.createFrom().future(bucket.get().toFuture())); + } + + @GET + @Path("/delBucket") + public Uni deleteBucket(){ + RBucketReactive bucket = redisson.reactive().getBucket("test-bucket", new StringCodec()); + return Uni.createFrom().future(bucket.set("world").toFuture()) + .flatMap( unused -> Uni.createFrom().future(bucket.delete().toFuture())); + } + } diff --git a/redisson-quarkus/redisson-quarkus-30/integration-tests/src/test/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResourceTest.java b/redisson-quarkus/redisson-quarkus-30/integration-tests/src/test/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResourceTest.java index 2873b4384..76d2d7dd1 100644 --- a/redisson-quarkus/redisson-quarkus-30/integration-tests/src/test/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResourceTest.java +++ b/redisson-quarkus/redisson-quarkus-30/integration-tests/src/test/java/org/redisson/quarkus/client/it/QuarkusRedissonClientResourceTest.java @@ -38,6 +38,24 @@ public class QuarkusRedissonClientResourceTest { .body(is("OK")); } + @Test + public void testBucket() { + given() + .when().get("/quarkus-redisson-client/bucket") + .then() + .statusCode(200) + .body(is("world")); + } + + @Test + public void testDeleteBucket() { + given() + .when().get("/quarkus-redisson-client/delBucket") + .then() + .statusCode(200) + .body(is(true)); + } + // @Test // public void testExecuteTask() { // given() From 0168f9640fb7eca16aa987f1c832c638da94d488 Mon Sep 17 00:00:00 2001 From: dickson Date: Thu, 12 Oct 2023 01:46:37 +0800 Subject: [PATCH 2/4] formating issue Signed-off-by: dickson --- .../client/deployment/QuarkusRedissonClientProcessor.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java index f0f9d57d7..fafd263f2 100644 --- a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java +++ b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java @@ -1,12 +1,12 @@ /** * Copyright (c) 2013-2022 Nikita Koksharov - *

+ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - *

+ * * http://www.apache.org/licenses/LICENSE-2.0 - *

+ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -43,7 +43,9 @@ import org.redisson.executor.RemoteExecutorServiceAsync; import java.io.IOException; /** + * * @author Nikita Koksharov + * */ class QuarkusRedissonClientProcessor { From 0547aa84e45a9d4f07a6d145b11314e0b537ea32 Mon Sep 17 00:00:00 2001 From: dickson Date: Thu, 12 Oct 2023 01:48:45 +0800 Subject: [PATCH 3/4] formating issue Signed-off-by: dickson --- .../client/deployment/QuarkusRedissonClientProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java index fafd263f2..5a7cb655d 100644 --- a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java +++ b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, From 011d4aa3327978e7f1fc68fa15a9dae462dfe200 Mon Sep 17 00:00:00 2001 From: dickson Date: Thu, 12 Oct 2023 21:45:43 +0800 Subject: [PATCH 4/4] remove duplicate Signed-off-by: dickson --- .../deployment/QuarkusRedissonClientProcessor.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java index 5a7cb655d..899342738 100644 --- a/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java +++ b/redisson-quarkus/redisson-quarkus-30/deployment/src/main/java/io/quarkus/redisson/client/deployment/QuarkusRedissonClientProcessor.java @@ -112,16 +112,6 @@ class QuarkusRedissonClientProcessor { .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,