From c85b42bd4e5773c1fd2a7a88e5f46a04389f43b2 Mon Sep 17 00:00:00 2001 From: Dmytro Lapko Date: Wed, 24 May 2023 16:28:20 +0300 Subject: [PATCH] Implementation copied from https://rep.erst.dk/git/openebusiness/nemhandeledelivery/oxalis/-/blob/51b4dff8b9ed9d69d72b3ecbbcaf5aaf846eafcb/oxalis-outbound/ --- .../transmission/MessageSenderFactory.java | 4 +++- .../transmission/MessageSenderFactoryTest.java | 16 ++++++++++++++++ .../src/test/resources/reference.conf | 14 ++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/oxalis-outbound/src/main/java/network/oxalis/outbound/transmission/MessageSenderFactory.java b/oxalis-outbound/src/main/java/network/oxalis/outbound/transmission/MessageSenderFactory.java index ca142d427..fb80d165f 100644 --- a/oxalis-outbound/src/main/java/network/oxalis/outbound/transmission/MessageSenderFactory.java +++ b/oxalis-outbound/src/main/java/network/oxalis/outbound/transmission/MessageSenderFactory.java @@ -31,6 +31,7 @@ import network.oxalis.api.lang.OxalisTransmissionException; import network.oxalis.api.outbound.MessageSender; import network.oxalis.vefa.peppol.common.model.TransportProfile; +import network.oxalis.vefa.peppol.mode.Mode; import java.util.Collections; import java.util.List; @@ -64,7 +65,7 @@ class MessageSenderFactory { private final List prioritizedTransportProfiles; @Inject - public MessageSenderFactory(Injector injector, Config config) { + public MessageSenderFactory(Injector injector, Config config, Mode mode) { this.injector = injector; // Construct map of configuration for detected transport profiles. @@ -75,6 +76,7 @@ public MessageSenderFactory(Injector injector, Config config) { // Create prioritized list of transport profiles. prioritizedTransportProfiles = Collections.unmodifiableList(configMap.values().stream() .filter(o -> !o.hasPath("enabled") || o.getBoolean("enabled")) + .filter(o -> !o.hasPath("modes") || o.getStringList("modes").contains(mode.getIdentifier())) .sorted((o1, o2) -> Integer.compare(o2.getInt("weight"), o1.getInt("weight"))) .map(o -> o.getString("profile")) .map(TransportProfile::of) diff --git a/oxalis-outbound/src/test/java/network/oxalis/outbound/transmission/MessageSenderFactoryTest.java b/oxalis-outbound/src/test/java/network/oxalis/outbound/transmission/MessageSenderFactoryTest.java index bb7fc11ae..e67bf65c1 100644 --- a/oxalis-outbound/src/test/java/network/oxalis/outbound/transmission/MessageSenderFactoryTest.java +++ b/oxalis-outbound/src/test/java/network/oxalis/outbound/transmission/MessageSenderFactoryTest.java @@ -31,6 +31,8 @@ import org.testng.annotations.Guice; import org.testng.annotations.Test; +import java.util.List; + @Guice(modules = GuiceModuleLoader.class) public class MessageSenderFactoryTest { @@ -52,4 +54,18 @@ public void validTransportProfile() throws OxalisTransmissionException { public void invalidTransportProfile() throws OxalisTransmissionException { messageSenderFactory.getMessageSender(TransportProfile.START); } + + @Test + public void canDisableTransportProfileByMode() { + List transportProfileList = messageSenderFactory.getPrioritizedTransportProfiles(); + Assert.assertNotNull(transportProfileList); + Assert.assertFalse(transportProfileList.stream().anyMatch(t -> t.getIdentifier().equals("foo-mode-transport")), "should not contain transport which is only enabled in other modes"); + } + + @Test + public void canEnableTransportProfileByMode() { + List transportProfileList = messageSenderFactory.getPrioritizedTransportProfiles(); + Assert.assertNotNull(transportProfileList); + Assert.assertTrue(transportProfileList.stream().anyMatch(t -> t.getIdentifier().equals("dummy-mode-transport")), "should contain transport which is only enabled in DUMMY mode"); + } } diff --git a/oxalis-outbound/src/test/resources/reference.conf b/oxalis-outbound/src/test/resources/reference.conf index e12c26c69..2522e8cd5 100644 --- a/oxalis-outbound/src/test/resources/reference.conf +++ b/oxalis-outbound/src/test/resources/reference.conf @@ -7,6 +7,20 @@ defaults.transport.invalid = { weight: 0 } +defaults.transport.foo_mode_transport = { + profile: foo-mode-transport + sender: invalid + weight: 0 + modes: [foo, foo_test] +} + +defaults.transport.dummy_mode_transport = { + profile: dummy-mode-transport + sender: invalid + weight: -1 + modes: [DUMMY] +} + oxalis.statistics.service = noop oxalis.asd.sender.skip = true \ No newline at end of file