From 1e439ad8f364d91babd7808f6e0e62f1c80e76bc Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Thu, 19 Sep 2024 23:17:29 -0300 Subject: [PATCH 1/4] test --- .../dapr/deployment/DaprProcessor.java | 18 +++++++++++++++++- .../io/quarkiverse/dapr/demo/DaprResource.java | 9 --------- .../quarkiverse/dapr/core/DaprTopicRoutes.java | 2 +- .../quarkiverse/dapr/core/DaprTopicRule.java | 2 +- .../quarkiverse/dapr/runtime/DaprProducer.java | 1 - 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java index 0df742b..e5efebf 100644 --- a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java +++ b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java @@ -8,6 +8,8 @@ import java.util.Objects; import java.util.Optional; +import io.quarkiverse.dapr.core.DaprTopicRoutes; +import io.quarkiverse.dapr.core.DaprTopicRule; import jakarta.ws.rs.core.MediaType; import org.apache.commons.lang3.StringUtils; @@ -121,6 +123,7 @@ void daprTopicBuildItems(BuildProducer topicProducer, Combin DaprConfig daprConfig) { Map pubSubConfigMap = Optional.ofNullable(daprConfig.pubSub) .orElse(new HashMap<>(16)); + boolean produceReflectiveClasses = false; for (AnnotationInstance i : indexBuildItem.getIndex().getAnnotations(DAPR_TOPIC)) { if (i.target().kind() == AnnotationTarget.Kind.METHOD) { @@ -165,7 +168,8 @@ void daprTopicBuildItems(BuildProducer topicProducer, Combin @Record(ExecutionTime.RUNTIME_INIT) @BuildStep - void addTopic(DaprRuntimeRecorder daprRuntimeRecorder, List daprTopicBuildItems) { + void addTopic(BuildProducer reflectiveClasses, DaprRuntimeRecorder daprRuntimeRecorder, List daprTopicBuildItems) { + boolean produceReflectiveClasses = false; for (DaprTopicBuildItem item : daprTopicBuildItems) { daprRuntimeRecorder.subscribeToTopics( item.getPubSubName(), @@ -174,6 +178,18 @@ void addTopic(DaprRuntimeRecorder daprRuntimeRecorder, List item.getPriority(), item.getRoute(), item.getMetadata()); + + if (!item.getRoute().isBlank()) { + produceReflectiveClasses = true; + } + } + + if (produceReflectiveClasses) { + reflectiveClasses.produce(ReflectiveClassBuildItem.builder( + DaprTopicRule.class.getName(), + DaprTopicRoutes.class.getName(), + CloudEventReader.class.getName() + ).build()); } } diff --git a/integration-tests/src/main/java/io/quarkiverse/dapr/demo/DaprResource.java b/integration-tests/src/main/java/io/quarkiverse/dapr/demo/DaprResource.java index a4e9d46..bc98b8b 100644 --- a/integration-tests/src/main/java/io/quarkiverse/dapr/demo/DaprResource.java +++ b/integration-tests/src/main/java/io/quarkiverse/dapr/demo/DaprResource.java @@ -16,8 +16,6 @@ */ package io.quarkiverse.dapr.demo; -import io.quarkus.runtime.annotations.RegisterForReflection; -import jakarta.enterprise.context.ApplicationScoped; import jakarta.ws.rs.GET; import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; @@ -26,13 +24,6 @@ import io.dapr.Topic; @Path("/dapr") -@ApplicationScoped -@RegisterForReflection(classNames = { - "io.quarkiverse.dapr.core.DaprTopicRule", - "io.quarkiverse.dapr.core.DaprTopicRoutes", - "io.quarkiverse.dapr.core.DaprTopicSubscription", - "io.quarkiverse.dapr.resteasy.CloudEventReader" -}) public class DaprResource { // add some rest methods here diff --git a/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRoutes.java b/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRoutes.java index a888e05..463f193 100644 --- a/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRoutes.java +++ b/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRoutes.java @@ -17,7 +17,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; -class DaprTopicRoutes { +public class DaprTopicRoutes { private final List rules; @JsonProperty("default") private final String defaultRoute; diff --git a/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRule.java b/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRule.java index 3159937..073fad3 100644 --- a/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRule.java +++ b/runtime/src/main/java/io/quarkiverse/dapr/core/DaprTopicRule.java @@ -15,7 +15,7 @@ import java.util.Objects; -class DaprTopicRule { +public class DaprTopicRule { private final String match; private final String path; diff --git a/runtime/src/main/java/io/quarkiverse/dapr/runtime/DaprProducer.java b/runtime/src/main/java/io/quarkiverse/dapr/runtime/DaprProducer.java index d058a9f..ad62de4 100644 --- a/runtime/src/main/java/io/quarkiverse/dapr/runtime/DaprProducer.java +++ b/runtime/src/main/java/io/quarkiverse/dapr/runtime/DaprProducer.java @@ -16,7 +16,6 @@ import io.quarkus.arc.Unremovable; import io.quarkus.runtime.ShutdownEvent; import io.quarkus.runtime.Startup; -import io.quarkus.runtime.annotations.RegisterForReflection; /** * DaprProducer From af07d8521685a0a8f2dd85fdae15b6209e0817ba Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Thu, 19 Sep 2024 23:22:15 -0300 Subject: [PATCH 2/4] formatter --- .../java/io/quarkiverse/dapr/deployment/DaprProcessor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java index e5efebf..5cfbf07 100644 --- a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java +++ b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java @@ -168,7 +168,8 @@ void daprTopicBuildItems(BuildProducer topicProducer, Combin @Record(ExecutionTime.RUNTIME_INIT) @BuildStep - void addTopic(BuildProducer reflectiveClasses, DaprRuntimeRecorder daprRuntimeRecorder, List daprTopicBuildItems) { + void addTopic(BuildProducer reflectiveClasses, DaprRuntimeRecorder daprRuntimeRecorder, + List daprTopicBuildItems) { boolean produceReflectiveClasses = false; for (DaprTopicBuildItem item : daprTopicBuildItems) { daprRuntimeRecorder.subscribeToTopics( @@ -188,8 +189,7 @@ void addTopic(BuildProducer reflectiveClasses, DaprRun reflectiveClasses.produce(ReflectiveClassBuildItem.builder( DaprTopicRule.class.getName(), DaprTopicRoutes.class.getName(), - CloudEventReader.class.getName() - ).build()); + CloudEventReader.class.getName()).build()); } } From c0a5691a07735756160a6b8be8a4eda8a973f9d1 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Thu, 19 Sep 2024 23:39:18 -0300 Subject: [PATCH 3/4] produce into reflectiveClasses method --- .../dapr/deployment/DaprProcessor.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java index 5cfbf07..0f31f21 100644 --- a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java +++ b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java @@ -123,7 +123,6 @@ void daprTopicBuildItems(BuildProducer topicProducer, Combin DaprConfig daprConfig) { Map pubSubConfigMap = Optional.ofNullable(daprConfig.pubSub) .orElse(new HashMap<>(16)); - boolean produceReflectiveClasses = false; for (AnnotationInstance i : indexBuildItem.getIndex().getAnnotations(DAPR_TOPIC)) { if (i.target().kind() == AnnotationTarget.Kind.METHOD) { @@ -170,7 +169,6 @@ void daprTopicBuildItems(BuildProducer topicProducer, Combin @BuildStep void addTopic(BuildProducer reflectiveClasses, DaprRuntimeRecorder daprRuntimeRecorder, List daprTopicBuildItems) { - boolean produceReflectiveClasses = false; for (DaprTopicBuildItem item : daprTopicBuildItems) { daprRuntimeRecorder.subscribeToTopics( item.getPubSubName(), @@ -179,17 +177,6 @@ void addTopic(BuildProducer reflectiveClasses, DaprRun item.getPriority(), item.getRoute(), item.getMetadata()); - - if (!item.getRoute().isBlank()) { - produceReflectiveClasses = true; - } - } - - if (produceReflectiveClasses) { - reflectiveClasses.produce(ReflectiveClassBuildItem.builder( - DaprTopicRule.class.getName(), - DaprTopicRoutes.class.getName(), - CloudEventReader.class.getName()).build()); } } @@ -266,7 +253,8 @@ private RouteBuildItem getDaprRouteBuildItem(NonApplicationRootPathBuildItem non void reflectiveClasses(BuildProducer reflectiveClassBuildProducer) { ReflectiveClassBuildItem buildItem = ReflectiveClassBuildItem.builder(DaprTopicSubscription.class.getName(), ActorRuntimeConfig.class.getName(), - CloudEvent.class.getName()) + CloudEvent.class.getName(), DaprTopicRule.class.getName(), DaprTopicRoutes.class.getName(), + CloudEventReader.class.getName()) .methods(true) .fields(true) .build(); From 9d54496fe032056232667e6d1fcf0994c3a3c409 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Fri, 20 Sep 2024 12:11:10 -0300 Subject: [PATCH 4/4] Remove CloudEventReader from ReflectiveClassBuildItem --- .../java/io/quarkiverse/dapr/deployment/DaprProcessor.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java index 0f31f21..16e3f9d 100644 --- a/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java +++ b/deployment/src/main/java/io/quarkiverse/dapr/deployment/DaprProcessor.java @@ -253,8 +253,7 @@ private RouteBuildItem getDaprRouteBuildItem(NonApplicationRootPathBuildItem non void reflectiveClasses(BuildProducer reflectiveClassBuildProducer) { ReflectiveClassBuildItem buildItem = ReflectiveClassBuildItem.builder(DaprTopicSubscription.class.getName(), ActorRuntimeConfig.class.getName(), - CloudEvent.class.getName(), DaprTopicRule.class.getName(), DaprTopicRoutes.class.getName(), - CloudEventReader.class.getName()) + CloudEvent.class.getName(), DaprTopicRule.class.getName(), DaprTopicRoutes.class.getName()) .methods(true) .fields(true) .build();