diff --git a/src/main/java/de/ozgcloud/xta/client/FetchMessageParameterFactory.java b/src/main/java/de/ozgcloud/xta/client/FetchMessageParameterFactory.java deleted file mode 100644 index 34f32976ad1a9faf8760317436134bdc687ac3f6..0000000000000000000000000000000000000000 --- a/src/main/java/de/ozgcloud/xta/client/FetchMessageParameterFactory.java +++ /dev/null @@ -1,16 +0,0 @@ -package de.ozgcloud.xta.client; - -import java.util.Collections; -import java.util.function.Consumer; - -import de.ozgcloud.xta.client.model.XtaIdentifier; -import de.ozgcloud.xta.client.model.XtaMessage; -import lombok.Builder; - -@Builder -class FetchMessageParameterFactory { - - public FetchMessageParameter create(XtaIdentifier clientIdentifier, Consumer<XtaMessage> processMessage) { - return new FetchMessageParameter(clientIdentifier, processMessage, Collections.emptySet()); - } -} diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClient.java b/src/main/java/de/ozgcloud/xta/client/XtaClient.java index 3a25a8fd115a4c742bc135881494a560f709ca11..16216282fe7a61ddabb650ff6f8a4ff47627f8e8 100644 --- a/src/main/java/de/ozgcloud/xta/client/XtaClient.java +++ b/src/main/java/de/ozgcloud/xta/client/XtaClient.java @@ -1,5 +1,7 @@ package de.ozgcloud.xta.client; +import static java.util.Collections.*; + import java.util.List; import java.util.Optional; import java.util.function.Consumer; @@ -32,7 +34,6 @@ public class XtaClient { private final XtaClientService service; private final XtaClientConfig config; - private final FetchMessageParameterFactory fetchMessageParameterFactory; private final XtaExceptionHandler exceptionHandler; static final String NO_MESSAGE_CLOSED_WARNING = "No message has been closed although more are pending. Try increasing max list items."; @@ -52,11 +53,15 @@ public class XtaClient { List<XtaTransportReport> fetchMessagesRaw(Consumer<XtaMessage> processMessage) { return config.getClientIdentifiers().stream() .filter(service::checkAccountActive) - .map(clientIdentifier -> fetchMessageParameterFactory.create(clientIdentifier, processMessage)) + .map(clientIdentifier -> initializeFetchMessageParameter(clientIdentifier, processMessage)) .flatMap(this::fetchMessagesForClientIdentifier) .toList(); } + FetchMessageParameter initializeFetchMessageParameter(XtaIdentifier clientIdentifier, Consumer<XtaMessage> processMessage) { + return new FetchMessageParameter(clientIdentifier, processMessage, emptySet()); + } + Stream<XtaTransportReport> fetchMessagesForClientIdentifier(FetchMessageParameter parameter) { return service.getStatusList(parameter.clientIdentifier()) .map(listing -> { diff --git a/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java b/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java index 81d0fa5b1fb564dc298ecb6a682c7c24acd06a22..e5429aec7a7c5ee0762362333985eab6b22a74d4 100644 --- a/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java +++ b/src/main/java/de/ozgcloud/xta/client/XtaClientFactory.java @@ -15,7 +15,6 @@ public class XtaClientFactory { private final XtaConfigValidator configValidator; private final XtaClientServiceFactory xtaClientServiceFactory; private final XtaClientConfig config; - private final FetchMessageParameterFactory fetchMessageParameterFactory; private final XtaExceptionHandlerFactory exceptionHandlerFactory; public static XtaClientFactory from(final XtaClientConfig config) { @@ -23,7 +22,6 @@ public class XtaClientFactory { .config(config) .configValidator(XtaConfigValidator.builder().build()) .xtaClientServiceFactory(XtaClientServiceFactory.from(config)) - .fetchMessageParameterFactory(FetchMessageParameterFactory.builder().build()) .exceptionHandlerFactory(XtaExceptionHandlerFactory.builder().build()) .build(); } @@ -33,7 +31,6 @@ public class XtaClientFactory { return XtaClient.builder() .config(config) .service(xtaClientServiceFactory.create()) - .fetchMessageParameterFactory(fetchMessageParameterFactory) .exceptionHandler(exceptionHandlerFactory.create()) .build(); } diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java b/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java index 1e3dbfcb7924306ca7bc604632bb68d7f97f1ab7..6b21c7fc4143e0aab2cce55dc37146067d32f0ba 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaClientFactoryTest.java @@ -24,8 +24,6 @@ class XtaClientFactoryTest { private XtaClientServiceFactory xtaClientServiceFactory; @Mock private XtaClientConfig config; - @Mock - private FetchMessageParameterFactory fetchMessageParameterFactory; @InjectMocks private XtaClientFactory factory; @@ -61,7 +59,6 @@ class XtaClientFactoryTest { .isEqualTo(XtaClient.builder() .config(config) .service(service) - .fetchMessageParameterFactory(fetchMessageParameterFactory) .build()); } } diff --git a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java index 181f3db8a79bf81812a746d117357b78454effbe..6b4cba4aae4b457d21fbb58f380c053a9a0408ca 100644 --- a/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java +++ b/src/test/java/de/ozgcloud/xta/client/XtaClientTest.java @@ -30,6 +30,7 @@ import de.ozgcloud.xta.client.core.XtaExceptionHandler; import de.ozgcloud.xta.client.exception.ClientRuntimeException; import de.ozgcloud.xta.client.exception.XtaClientException; import de.ozgcloud.xta.client.factory.ClientRuntimeExceptionTestFactory; +import de.ozgcloud.xta.client.factory.XtaClientExceptionTestFactory; import de.ozgcloud.xta.client.factory.XtaMessageMetaDataListingTestFactory; import de.ozgcloud.xta.client.factory.XtaMessageMetaDataTestFactory; import de.ozgcloud.xta.client.factory.XtaMessageTestFactory; @@ -49,9 +50,6 @@ class XtaClientTest { @Mock private XtaClientConfig config; - @Mock - private FetchMessageParameterFactory fetchMessageParameterFactory; - @Mock private XtaExceptionHandler exceptionHandler; @@ -86,16 +84,13 @@ class XtaClientTest { @Mock private XtaTransportReport transportReport; - @Mock - private XtaClientException exception; - @DisplayName("should return") @Test @SneakyThrows void shouldReturn() { doReturn(List.of(transportReport)).when(client).fetchMessagesRaw(processMessage); - var result = client.fetchMessagesRaw(processMessage); + var result = client.fetchMessages(processMessage); assertThat(result).containsExactly(transportReport); } @@ -103,12 +98,13 @@ class XtaClientTest { @DisplayName("should throw checked exception on runtime exception") @Test void shouldThrowCheckedExceptionOnRuntimeException() { + var clientException = XtaClientExceptionTestFactory.create(); var runTimeException = ClientRuntimeExceptionTestFactory.create(); - doThrow(runTimeException).when(client).sendMessageRaw(message); - when(exceptionHandler.deriveXtaClientException(runTimeException)).thenReturn(exception); + doThrow(runTimeException).when(client).fetchMessagesRaw(processMessage); + when(exceptionHandler.deriveXtaClientException(runTimeException)).thenReturn(clientException); - assertThatThrownBy(() -> client.fetchMessagesRaw(processMessage)) - .isEqualTo(exception); + assertThatThrownBy(() -> client.fetchMessages(processMessage)) + .isEqualTo(clientException); } } @@ -139,7 +135,7 @@ class XtaClientTest { @Test void shouldFetchMessagesForClientIdentifier() { doReturn(true).when(service).checkAccountActive(SELF_IDENTIFIER); - when(fetchMessageParameterFactory.create(SELF_IDENTIFIER, processMessage)).thenReturn(parameter); + doReturn(parameter).when(client).initializeFetchMessageParameter(SELF_IDENTIFIER, processMessage); doReturn(Stream.of(transportReport)).when(client).fetchMessagesForClientIdentifier(parameter); var result = fetchMessages(); @@ -169,6 +165,42 @@ class XtaClientTest { } } + @DisplayName("initialize fetch message parameter") + @Nested + class TestInitializeFetchMessageParameter { + + @Mock + private Consumer<XtaMessage> processMessage; + + @DisplayName("should init empty viewed message ids") + @Test + void shouldInitEmptyViewedMessageIds() { + var result = initializeFetchMessageParameter(); + + assertThat(result.viewedMessageIds()).isEmpty(); + } + + @DisplayName("should set client identifier") + @Test + void shouldSetClientIdentifier() { + var result = initializeFetchMessageParameter(); + + assertThat(result.clientIdentifier()).isEqualTo(SELF_IDENTIFIER); + } + + @DisplayName("should set process message") + @Test + void shouldSetProcessMessage() { + var result = initializeFetchMessageParameter(); + + assertThat(result.processMessage()).isEqualTo(processMessage); + } + + FetchMessageParameter initializeFetchMessageParameter() { + return client.initializeFetchMessageParameter(SELF_IDENTIFIER, processMessage); + } + } + @DisplayName("fetch messages for client identifier") @Nested class TestFetchMessagesForClientIdentifier { @@ -634,9 +666,6 @@ class XtaClientTest { @Mock private XtaTransportReport transportReport; - @Mock - private XtaClientException exception; - @DisplayName("should return") @Test @SneakyThrows @@ -648,15 +677,18 @@ class XtaClientTest { assertThat(result).isEqualTo(transportReport); } + @DisplayName("should throw checked exception on runtime exception") @Test + @SneakyThrows void shouldThrowCheckedExceptionOnRuntimeException() { + var clientException = XtaClientExceptionTestFactory.create(); var runtimeException = ClientRuntimeExceptionTestFactory.create(); doThrow(runtimeException).when(client).sendMessageRaw(message); - when(exceptionHandler.deriveXtaClientException(runtimeException)).thenReturn(exception); + when(exceptionHandler.deriveXtaClientException(runtimeException)).thenReturn(clientException); assertThatThrownBy(() -> client.sendMessage(message)) - .isEqualTo(exception); + .isEqualTo(clientException); } } diff --git a/src/test/java/de/ozgcloud/xta/client/factory/XtaClientExceptionTestFactory.java b/src/test/java/de/ozgcloud/xta/client/factory/XtaClientExceptionTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ac6767647f556c06078c2ac90025f966ba5207a4 --- /dev/null +++ b/src/test/java/de/ozgcloud/xta/client/factory/XtaClientExceptionTestFactory.java @@ -0,0 +1,12 @@ +package de.ozgcloud.xta.client.factory; + +import de.ozgcloud.xta.client.exception.XtaClientException; + +public class XtaClientExceptionTestFactory { + + public static final String CLIENT_EXCEPTION_MESSAGE = "CLIENT_EXCEPTION_MESSAGE"; + + public static XtaClientException create() { + return new XtaClientException(CLIENT_EXCEPTION_MESSAGE, ClientRuntimeExceptionTestFactory.create().getCause()); + } +}