From 33c6a5ca5f255a8afae245f1b33490dd8b8f469a Mon Sep 17 00:00:00 2001 From: Quyen Ly Date: Fri, 25 Oct 2024 15:25:01 +0700 Subject: [PATCH] RAP-111 Send JMS topic after completing the extension upgrade --- .../services/CodeSystemUpgradeService.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/snomed/snowstorm/core/data/services/CodeSystemUpgradeService.java b/src/main/java/org/snomed/snowstorm/core/data/services/CodeSystemUpgradeService.java index c1d2bf6a3..c07632030 100644 --- a/src/main/java/org/snomed/snowstorm/core/data/services/CodeSystemUpgradeService.java +++ b/src/main/java/org/snomed/snowstorm/core/data/services/CodeSystemUpgradeService.java @@ -4,6 +4,7 @@ import io.kaicode.elasticvc.api.PathUtil; import io.kaicode.elasticvc.domain.Branch; import io.kaicode.elasticvc.domain.Metadata; +import org.apache.activemq.command.ActiveMQTopic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.snomed.snowstorm.core.data.domain.CodeSystem; @@ -14,6 +15,7 @@ import org.snomed.snowstorm.dailybuild.DailyBuildService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.jms.core.JmsTemplate; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; @@ -24,7 +26,8 @@ import java.util.concurrent.ExecutorService; import static org.snomed.snowstorm.core.data.services.BranchMetadataHelper.INTERNAL_METADATA_KEY; -import static org.snomed.snowstorm.core.data.services.BranchMetadataKeys.*; +import static org.snomed.snowstorm.core.data.services.BranchMetadataKeys.DEPENDENCY_PACKAGE; +import static org.snomed.snowstorm.core.data.services.BranchMetadataKeys.DEPENDENCY_RELEASE; @Service public class CodeSystemUpgradeService { @@ -55,9 +58,18 @@ public class CodeSystemUpgradeService { @Autowired private ExecutorService executorService; + @Autowired + private JmsTemplate jmsTemplate; + @Value("${snowstorm.rest-api.readonly}") private boolean isReadOnly; + @Value("${snowstorm.codesystem-version.message.enabled}") + private boolean jmsMessageEnabled; + + @Value("${jms.queue.prefix}") + private String jmsQueuePrefix; + private static final Map upgradeJobMap = new HashMap<>(); private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -202,6 +214,19 @@ public synchronized void upgrade(String id, CodeSystem codeSystem, Integer newDe if (job != null) { job.setStatus(CodeSystemUpgradeJob.UpgradeStatus.COMPLETED); } + + if (jmsMessageEnabled) { + Map payload = new HashMap<>(); + payload.put("codeSystemShortName", codeSystem.getShortName()); + payload.put("codeSystemBranchPath", codeSystem.getBranchPath()); + payload.put(DEPENDENCY_PACKAGE, newParentVersion.getReleasePackage()); + payload.put(DEPENDENCY_RELEASE, String.valueOf(newParentVersion.getEffectiveDate())); + + String topicDestination = jmsQueuePrefix + ".upgrade.complete"; + logger.info("Sending JMS Topic - destination {}, payload {}...", topicDestination, payload); + jmsTemplate.convertAndSend(new ActiveMQTopic(topicDestination), payload); + } + upgradedSuccessfully = true; } catch (Exception e) { logger.error("Upgrade on {} failed", branchPath, e);