This is an automated email from the ASF dual-hosted git repository.

ricardozanini pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new cfc3361887 [Fix_#3337] Avoid creating duplicate consumer (#3357)
cfc3361887 is described below

commit cfc3361887c0f8edad9947f1b6d0f92c11342205
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Thu Jan 18 12:48:15 2024 +0100

    [Fix_#3337] Avoid creating duplicate consumer (#3357)
---
 .../kie/kogito/codegen/process/ProcessCodegen.java  | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
index faf545ed02..6f5ba05f7a 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/java/org/kie/kogito/codegen/process/ProcessCodegen.java
@@ -60,6 +60,7 @@ import org.kie.kogito.codegen.api.io.CollectedResource;
 import org.kie.kogito.codegen.core.AbstractGenerator;
 import org.kie.kogito.codegen.core.DashboardGeneratedFileUtils;
 import org.kie.kogito.codegen.process.config.ProcessConfigGenerator;
+import org.kie.kogito.codegen.process.events.ProcessCloudEventMeta;
 import 
org.kie.kogito.codegen.process.events.ProcessCloudEventMetaFactoryGenerator;
 import org.kie.kogito.internal.SupportedExtensions;
 import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcess;
@@ -279,7 +280,7 @@ public class ProcessCodegen extends AbstractGenerator {
         List<ProcessInstanceGenerator> pis = new ArrayList<>();
         List<ProcessExecutableModelGenerator> processExecutableModelGenerators 
= new ArrayList<>();
         List<ProcessResourceGenerator> rgs = new ArrayList<>(); // REST 
resources
-        List<MessageConsumerGenerator> megs = new ArrayList<>(); // message 
endpoints/consumers
+        Map<ProcessCloudEventMeta, MessageConsumerGenerator> megs = new 
HashMap<>(); // message endpoints/consumers
         List<MessageProducerGenerator> mpgs = new ArrayList<>(); // message 
producers
 
         Map<String, ModelClassGenerator> processIdToModelGenerator = new 
HashMap<>();
@@ -372,14 +373,14 @@ public class ProcessCodegen extends AbstractGenerator {
 
                     // generate message consumers for processes with message 
start events
                     if 
(trigger.getType().equals(TriggerMetaData.TriggerType.ConsumeMessage)) {
-                        MessageConsumerGenerator messageConsumerGenerator = 
new MessageConsumerGenerator(
-                                context(),
-                                workFlowProcess,
-                                modelClassGenerator.className(),
-                                execModelGen.className(),
-                                applicationCanonicalName(),
-                                trigger);
-                        megs.add(messageConsumerGenerator);
+                        MessageConsumerGenerator messageConsumerGenerator =
+                                megs.computeIfAbsent(new 
ProcessCloudEventMeta(workFlowProcess.getId(), trigger), k -> new 
MessageConsumerGenerator(
+                                        context(),
+                                        workFlowProcess,
+                                        modelClassGenerator.className(),
+                                        execModelGen.className(),
+                                        applicationCanonicalName(),
+                                        trigger));
                         metaData.addConsumer(trigger.getName(), 
messageConsumerGenerator.compilationUnit());
                     } else if 
(trigger.getType().equals(TriggerMetaData.TriggerType.ProduceMessage)) {
                         MessageProducerGenerator messageProducerGenerator = 
new MessageProducerGenerator(
@@ -441,7 +442,7 @@ public class ProcessCodegen extends AbstractGenerator {
             }
         }
 
-        for (MessageConsumerGenerator messageConsumerGenerator : megs) {
+        for (MessageConsumerGenerator messageConsumerGenerator : 
megs.values()) {
             storeFile(MESSAGE_CONSUMER_TYPE, 
messageConsumerGenerator.generatedFilePath(),
                     messageConsumerGenerator.generate());
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to