From 403bacddc5617572e91eb536cf44a66a7593a7f5 Mon Sep 17 00:00:00 2001 From: Tristan Chuine Date: Thu, 20 Jun 2024 14:08:54 +0200 Subject: [PATCH] Mockable time in messages --- .../ws/commons/computation/ComputationConfig.java | 7 +++++++ .../computation/service/AbstractResultContext.java | 11 +++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/powsybl/ws/commons/computation/ComputationConfig.java b/src/main/java/com/powsybl/ws/commons/computation/ComputationConfig.java index b2685f0..fc5ddc7 100644 --- a/src/main/java/com/powsybl/ws/commons/computation/ComputationConfig.java +++ b/src/main/java/com/powsybl/ws/commons/computation/ComputationConfig.java @@ -7,6 +7,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.time.Clock; + @Configuration public class ComputationConfig { @Bean @@ -14,4 +16,9 @@ public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() { return builder -> builder.modulesToInstall(new ReportNodeJsonModule()) .postConfigurer(objMapper -> objMapper.setInjectableValues(new InjectableValues.Std().addValue(ReportNodeDeserializer.DICTIONARY_VALUE_ID, null))); } + + @Bean + public Clock clock() { + return Clock.systemUTC(); + } } diff --git a/src/main/java/com/powsybl/ws/commons/computation/service/AbstractResultContext.java b/src/main/java/com/powsybl/ws/commons/computation/service/AbstractResultContext.java index 80280dc..dfed304 100644 --- a/src/main/java/com/powsybl/ws/commons/computation/service/AbstractResultContext.java +++ b/src/main/java/com/powsybl/ws/commons/computation/service/AbstractResultContext.java @@ -10,9 +10,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; import org.springframework.messaging.Message; +import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.support.MessageBuilder; +import javax.annotation.Nullable; import java.io.UncheckedIOException; +import java.time.Clock; import java.util.Map; import java.util.Objects; import java.util.UUID; @@ -50,7 +53,7 @@ protected AbstractResultContext(UUID resultUuid, R runContext) { this.runContext = Objects.requireNonNull(runContext); } - public Message toMessage(ObjectMapper objectMapper) { + public Message toMessage(@Nullable final Clock clock, @Nullable final ObjectMapper objectMapper) { String parametersJson = ""; if (objectMapper != null) { try { @@ -59,7 +62,11 @@ public Message toMessage(ObjectMapper objectMapper) { throw new UncheckedIOException(e); } } - return MessageBuilder.withPayload(parametersJson) + MessageBuilder messageBuilder = MessageBuilder.withPayload(parametersJson); + if (clock != null) { + messageBuilder.setHeader(MessageHeaders.TIMESTAMP, clock.millis()); + } + return messageBuilder .setHeader(RESULT_UUID_HEADER, resultUuid.toString()) .setHeader(NETWORK_UUID_HEADER, runContext.getNetworkUuid().toString()) .setHeader(VARIANT_ID_HEADER, runContext.getVariantId())