Skip to content

Commit b421a9a

Browse files
committed
fix(dispatcher): dynamic perimeter detection for 15-15 routing
1 parent 103a8b4 commit b421a9a

3 files changed

Lines changed: 42 additions & 5 deletions

File tree

hub/dispatcher/src/main/java/com/hubsante/hub/config/Constants.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ public class Constants {
4747

4848
public enum Perimeter {
4949
HEALTH("15-15"),
50-
CISU("15-nexsis"),
51-
GPS("15-gps"),
52-
SMUR("15-smur");
50+
CISU("15-nexsis");
5351

5452
private final String name;
5553

@@ -60,5 +58,14 @@ public enum Perimeter {
6058
public String getName() {
6159
return name;
6260
}
61+
62+
public static Perimeter fromName(String name) {
63+
for (Perimeter p : values()) {
64+
if (p.name.equals(name)) {
65+
return p;
66+
}
67+
}
68+
return null;
69+
}
6370
}
6471
}

hub/dispatcher/src/main/java/com/hubsante/hub/utils/ConversionUtils.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,14 @@ public static ConversionParametersDTO resolveConversionParameters(
128128
private static ConversionParametersDTO resolveSamuToSamu(
129129
HubConfiguration hubConfig, EdxlMessage edxlMessage) {
130130
String recipientId = getRecipientID(edxlMessage);
131-
String targetVhost =
132-
determineTargetVhostByPerimeter(hubConfig, recipientId, Perimeter.HEALTH);
131+
String currentVhost = hubConfig.getVhost();
132+
String perimeterString = trimVersionSuffix(currentVhost);
133+
Perimeter perimeter = Perimeter.fromName(perimeterString);
134+
if (perimeter == null) {
135+
return null;
136+
}
137+
138+
String targetVhost = determineTargetVhostByPerimeter(hubConfig, recipientId, perimeter);
133139

134140
if (targetVhost == null) {
135141
return null;

hub/dispatcher/src/test/java/com/hubsante/hub/service/DispatcherTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import org.junit.jupiter.api.Disabled;
5555
import org.junit.jupiter.api.DisplayName;
5656
import org.junit.jupiter.api.Test;
57+
import org.junit.jupiter.params.ParameterizedTest;
58+
import org.junit.jupiter.params.provider.ValueSource;
5759
import org.mockito.*;
5860
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
5961
import org.springframework.amqp.core.Message;
@@ -471,6 +473,28 @@ public void shouldCallConversionServiceForCISUVersionConvertedMessagesFromNexsis
471473
.send(eq(expectedTargetExchangeName), eq(FIRE_ROUTING_KEY), argument.capture());
472474
}
473475

476+
@ParameterizedTest
477+
@ValueSource(strings = {"15-sas_v1.0", "15-smur_v1.7", "15-gps_v2.0"})
478+
@DisplayName("send message to current vhost")
479+
public void testSendMessageWithoutConversion(String vhost) throws IOException {
480+
Message message = createMessage("EDXL-DE", JSON, SAMU_A_ROUTING_KEY, SAMU_V3_ROUTING_KEY);
481+
482+
doReturn(vhost).when(hubConfig).getVhost();
483+
dispatcher.dispatch(message);
484+
485+
verify(conversionHandler, never())
486+
.callConversionService(
487+
anyString(),
488+
anyString(),
489+
anyString(),
490+
any(ConversionUtils.ConversionType.class),
491+
anyString());
492+
493+
ArgumentCaptor<Message> argument = ArgumentCaptor.forClass(Message.class);
494+
Mockito.verify(rabbitTemplate, times(1))
495+
.send(eq(DISTRIBUTION_EXCHANGE), eq(SAMU_V3_MESSAGE_QUEUE), argument.capture());
496+
}
497+
474498
@Test
475499
@DisplayName("should reset TTL if edxl dateTimeExpires is lower")
476500
public void shouldResetTTL() throws IOException {

0 commit comments

Comments
 (0)