Skip to content
Snippets Groups Projects
Commit 064bbf0b authored by Jan Zickermann's avatar Jan Zickermann
Browse files

OZG-6891 Move FetchMessageParameterFactory::create into XtaClient

parent a05df692
No related branches found
No related tags found
No related merge requests found
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());
}
}
package de.ozgcloud.xta.client; package de.ozgcloud.xta.client;
import static java.util.Collections.*;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer; import java.util.function.Consumer;
...@@ -32,7 +34,6 @@ public class XtaClient { ...@@ -32,7 +34,6 @@ public class XtaClient {
private final XtaClientService service; private final XtaClientService service;
private final XtaClientConfig config; private final XtaClientConfig config;
private final FetchMessageParameterFactory fetchMessageParameterFactory;
private final XtaExceptionHandler exceptionHandler; 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."; 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 { ...@@ -52,11 +53,15 @@ public class XtaClient {
List<XtaTransportReport> fetchMessagesRaw(Consumer<XtaMessage> processMessage) { List<XtaTransportReport> fetchMessagesRaw(Consumer<XtaMessage> processMessage) {
return config.getClientIdentifiers().stream() return config.getClientIdentifiers().stream()
.filter(service::checkAccountActive) .filter(service::checkAccountActive)
.map(clientIdentifier -> fetchMessageParameterFactory.create(clientIdentifier, processMessage)) .map(clientIdentifier -> initializeFetchMessageParameter(clientIdentifier, processMessage))
.flatMap(this::fetchMessagesForClientIdentifier) .flatMap(this::fetchMessagesForClientIdentifier)
.toList(); .toList();
} }
FetchMessageParameter initializeFetchMessageParameter(XtaIdentifier clientIdentifier, Consumer<XtaMessage> processMessage) {
return new FetchMessageParameter(clientIdentifier, processMessage, emptySet());
}
Stream<XtaTransportReport> fetchMessagesForClientIdentifier(FetchMessageParameter parameter) { Stream<XtaTransportReport> fetchMessagesForClientIdentifier(FetchMessageParameter parameter) {
return service.getStatusList(parameter.clientIdentifier()) return service.getStatusList(parameter.clientIdentifier())
.map(listing -> { .map(listing -> {
......
...@@ -15,7 +15,6 @@ public class XtaClientFactory { ...@@ -15,7 +15,6 @@ public class XtaClientFactory {
private final XtaConfigValidator configValidator; private final XtaConfigValidator configValidator;
private final XtaClientServiceFactory xtaClientServiceFactory; private final XtaClientServiceFactory xtaClientServiceFactory;
private final XtaClientConfig config; private final XtaClientConfig config;
private final FetchMessageParameterFactory fetchMessageParameterFactory;
private final XtaExceptionHandlerFactory exceptionHandlerFactory; private final XtaExceptionHandlerFactory exceptionHandlerFactory;
public static XtaClientFactory from(final XtaClientConfig config) { public static XtaClientFactory from(final XtaClientConfig config) {
...@@ -23,7 +22,6 @@ public class XtaClientFactory { ...@@ -23,7 +22,6 @@ public class XtaClientFactory {
.config(config) .config(config)
.configValidator(XtaConfigValidator.builder().build()) .configValidator(XtaConfigValidator.builder().build())
.xtaClientServiceFactory(XtaClientServiceFactory.from(config)) .xtaClientServiceFactory(XtaClientServiceFactory.from(config))
.fetchMessageParameterFactory(FetchMessageParameterFactory.builder().build())
.exceptionHandlerFactory(XtaExceptionHandlerFactory.builder().build()) .exceptionHandlerFactory(XtaExceptionHandlerFactory.builder().build())
.build(); .build();
} }
...@@ -33,7 +31,6 @@ public class XtaClientFactory { ...@@ -33,7 +31,6 @@ public class XtaClientFactory {
return XtaClient.builder() return XtaClient.builder()
.config(config) .config(config)
.service(xtaClientServiceFactory.create()) .service(xtaClientServiceFactory.create())
.fetchMessageParameterFactory(fetchMessageParameterFactory)
.exceptionHandler(exceptionHandlerFactory.create()) .exceptionHandler(exceptionHandlerFactory.create())
.build(); .build();
} }
......
...@@ -24,8 +24,6 @@ class XtaClientFactoryTest { ...@@ -24,8 +24,6 @@ class XtaClientFactoryTest {
private XtaClientServiceFactory xtaClientServiceFactory; private XtaClientServiceFactory xtaClientServiceFactory;
@Mock @Mock
private XtaClientConfig config; private XtaClientConfig config;
@Mock
private FetchMessageParameterFactory fetchMessageParameterFactory;
@InjectMocks @InjectMocks
private XtaClientFactory factory; private XtaClientFactory factory;
...@@ -61,7 +59,6 @@ class XtaClientFactoryTest { ...@@ -61,7 +59,6 @@ class XtaClientFactoryTest {
.isEqualTo(XtaClient.builder() .isEqualTo(XtaClient.builder()
.config(config) .config(config)
.service(service) .service(service)
.fetchMessageParameterFactory(fetchMessageParameterFactory)
.build()); .build());
} }
} }
......
...@@ -30,6 +30,7 @@ import de.ozgcloud.xta.client.core.XtaExceptionHandler; ...@@ -30,6 +30,7 @@ import de.ozgcloud.xta.client.core.XtaExceptionHandler;
import de.ozgcloud.xta.client.exception.ClientRuntimeException; import de.ozgcloud.xta.client.exception.ClientRuntimeException;
import de.ozgcloud.xta.client.exception.XtaClientException; import de.ozgcloud.xta.client.exception.XtaClientException;
import de.ozgcloud.xta.client.factory.ClientRuntimeExceptionTestFactory; 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.XtaMessageMetaDataListingTestFactory;
import de.ozgcloud.xta.client.factory.XtaMessageMetaDataTestFactory; import de.ozgcloud.xta.client.factory.XtaMessageMetaDataTestFactory;
import de.ozgcloud.xta.client.factory.XtaMessageTestFactory; import de.ozgcloud.xta.client.factory.XtaMessageTestFactory;
...@@ -49,9 +50,6 @@ class XtaClientTest { ...@@ -49,9 +50,6 @@ class XtaClientTest {
@Mock @Mock
private XtaClientConfig config; private XtaClientConfig config;
@Mock
private FetchMessageParameterFactory fetchMessageParameterFactory;
@Mock @Mock
private XtaExceptionHandler exceptionHandler; private XtaExceptionHandler exceptionHandler;
...@@ -86,16 +84,13 @@ class XtaClientTest { ...@@ -86,16 +84,13 @@ class XtaClientTest {
@Mock @Mock
private XtaTransportReport transportReport; private XtaTransportReport transportReport;
@Mock
private XtaClientException exception;
@DisplayName("should return") @DisplayName("should return")
@Test @Test
@SneakyThrows @SneakyThrows
void shouldReturn() { void shouldReturn() {
doReturn(List.of(transportReport)).when(client).fetchMessagesRaw(processMessage); doReturn(List.of(transportReport)).when(client).fetchMessagesRaw(processMessage);
var result = client.fetchMessagesRaw(processMessage); var result = client.fetchMessages(processMessage);
assertThat(result).containsExactly(transportReport); assertThat(result).containsExactly(transportReport);
} }
...@@ -103,12 +98,13 @@ class XtaClientTest { ...@@ -103,12 +98,13 @@ class XtaClientTest {
@DisplayName("should throw checked exception on runtime exception") @DisplayName("should throw checked exception on runtime exception")
@Test @Test
void shouldThrowCheckedExceptionOnRuntimeException() { void shouldThrowCheckedExceptionOnRuntimeException() {
var clientException = XtaClientExceptionTestFactory.create();
var runTimeException = ClientRuntimeExceptionTestFactory.create(); var runTimeException = ClientRuntimeExceptionTestFactory.create();
doThrow(runTimeException).when(client).sendMessageRaw(message); doThrow(runTimeException).when(client).fetchMessagesRaw(processMessage);
when(exceptionHandler.deriveXtaClientException(runTimeException)).thenReturn(exception); when(exceptionHandler.deriveXtaClientException(runTimeException)).thenReturn(clientException);
assertThatThrownBy(() -> client.fetchMessagesRaw(processMessage)) assertThatThrownBy(() -> client.fetchMessages(processMessage))
.isEqualTo(exception); .isEqualTo(clientException);
} }
} }
...@@ -139,7 +135,7 @@ class XtaClientTest { ...@@ -139,7 +135,7 @@ class XtaClientTest {
@Test @Test
void shouldFetchMessagesForClientIdentifier() { void shouldFetchMessagesForClientIdentifier() {
doReturn(true).when(service).checkAccountActive(SELF_IDENTIFIER); 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); doReturn(Stream.of(transportReport)).when(client).fetchMessagesForClientIdentifier(parameter);
var result = fetchMessages(); var result = fetchMessages();
...@@ -169,6 +165,42 @@ class XtaClientTest { ...@@ -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") @DisplayName("fetch messages for client identifier")
@Nested @Nested
class TestFetchMessagesForClientIdentifier { class TestFetchMessagesForClientIdentifier {
...@@ -634,9 +666,6 @@ class XtaClientTest { ...@@ -634,9 +666,6 @@ class XtaClientTest {
@Mock @Mock
private XtaTransportReport transportReport; private XtaTransportReport transportReport;
@Mock
private XtaClientException exception;
@DisplayName("should return") @DisplayName("should return")
@Test @Test
@SneakyThrows @SneakyThrows
...@@ -648,15 +677,18 @@ class XtaClientTest { ...@@ -648,15 +677,18 @@ class XtaClientTest {
assertThat(result).isEqualTo(transportReport); assertThat(result).isEqualTo(transportReport);
} }
@DisplayName("should throw checked exception on runtime exception") @DisplayName("should throw checked exception on runtime exception")
@Test @Test
@SneakyThrows
void shouldThrowCheckedExceptionOnRuntimeException() { void shouldThrowCheckedExceptionOnRuntimeException() {
var clientException = XtaClientExceptionTestFactory.create();
var runtimeException = ClientRuntimeExceptionTestFactory.create(); var runtimeException = ClientRuntimeExceptionTestFactory.create();
doThrow(runtimeException).when(client).sendMessageRaw(message); doThrow(runtimeException).when(client).sendMessageRaw(message);
when(exceptionHandler.deriveXtaClientException(runtimeException)).thenReturn(exception); when(exceptionHandler.deriveXtaClientException(runtimeException)).thenReturn(clientException);
assertThatThrownBy(() -> client.sendMessage(message)) assertThatThrownBy(() -> client.sendMessage(message))
.isEqualTo(exception); .isEqualTo(clientException);
} }
} }
......
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());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment