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

OZG-6054 xta: Get messages with multiple identifiers

parent eb9bc752
No related branches found
No related tags found
No related merge requests found
Showing
with 151 additions and 19 deletions
......@@ -11,7 +11,7 @@ import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
import eu.osci.ws._2014._10.transport.OriginatorsType;
import eu.osci.ws._2014._10.transport.PartyIdentifierType;
import eu.osci.ws._2014._10.transport.PartyType;
import jakarta.validation.Valid;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;
......@@ -20,8 +20,7 @@ import jakarta.xml.bind.JAXBException;
class WsHeaderAddingInterceptor implements ClientInterceptor {
@Autowired
@Valid
private XtaProperties properties;
private XtaCurrentIdentifierService xtaCurrentIdentifierService;
@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
......@@ -44,7 +43,7 @@ class WsHeaderAddingInterceptor implements ClientInterceptor {
PartyType partyType = new PartyType();
PartyIdentifierType identifier = new PartyIdentifierType();
identifier.setValue(properties.getIdentifier());
identifier.setValue(xtaCurrentIdentifierService.getCurrentIdentifier());
partyType.setIdentifier(identifier);
var origin = new OriginatorsType();
......
package de.ozgcloud.eingang.xta;
import java.util.List;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.Getter;
import lombok.Setter;
@Service
public class XtaCurrentIdentifierService {
@Setter
@Getter
private String currentIdentifier = "*";
@Autowired
@Valid
private XtaProperties properties;
public List<String> getIdentifiers() {
return properties.getIdentifiers();
}
}
......@@ -2,6 +2,7 @@ package de.ozgcloud.eingang.xta;
import java.math.BigInteger;
import java.net.URI;
import java.util.List;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
......@@ -31,7 +32,7 @@ class XtaProperties {
private KeyStore keyStore;
private Actions actions;
@NotEmpty
private String identifier;
private List<String> identifiers;
}
@Validated
......
......@@ -4,14 +4,13 @@ import java.util.Spliterators;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper;
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
......@@ -31,12 +30,20 @@ class XtaService {
private XdomeaMessageDataMapper xdomeaMessageDataMapper;
@Autowired
private XtaIncomingFilesMapper xtaIncomingFilesMapper;
@Autowired
private XtaCurrentIdentifierService service;
public Stream<FormData> getMessages() {
return createXtaMessageStream().filter(this::isSupportedMessageType).map(this::getFormData);
}
Stream<XtaMessageMetaData> createXtaMessageStream() {
return service.getIdentifiers().stream()
.flatMap(this::createXtaMessageStreamForIdentifier);
}
private Stream<XtaMessageMetaData> createXtaMessageStreamForIdentifier(String identifier) {
service.setCurrentIdentifier(identifier);
var iterator = new XtaMessageMetadataRemoteIterator(remoteService);
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false);
}
......
ozgcloud:
xta:
identifier: gae:jens.reese@mgm-tp.com
identifiers:
- gae:jens.reese@mgm-tp.com
server:
address: localhost:3000
name: LI33-0005
......
......@@ -60,7 +60,8 @@ tests:
image.name: xta-adapter
xta:
schedule: "1 1 * * * *"
identifier: gae:test@ozg-sh.de
identifiers:
- gae:test@ozg-sh.de
server:
address: 1.2.3.4
name: test
......@@ -144,4 +145,4 @@ tests:
path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.capabilities
value:
drop:
- ALL
\ No newline at end of file
- ALL
......@@ -36,7 +36,8 @@ tests:
set:
image.name: xta-adapter
xta:
identifier: gae:test@ozg-sh.de
identifiers:
- gae:test@ozg-sh.de
server:
name: test
address: 1.2.3.4
......@@ -116,7 +117,8 @@ tests:
image.name: xta-adapter
env.overrideSpringProfiles: local
xta:
identifier: gae:test@ozg-sh.de
identifiers:
- gae:test@ozg-sh.de
server:
name: test
address: 1.2.3.4
......@@ -154,4 +156,4 @@ tests:
path: spec.jobTemplate.spec.template.spec.containers[0].env
content:
name: grpc_client_vorgang-manager-vorgang-manager_negotiationType
value: "TLS"
\ No newline at end of file
value: "TLS"
......@@ -36,7 +36,8 @@ tests:
set:
image.name: xta-adapter
xta:
identifier: gae:test@ozg-sh.de
identifiers:
- gae:test@ozg-sh.de
server:
name: test
address: 1.2.3.4
......@@ -66,7 +67,8 @@ tests:
set:
image.name: xta-adapter
xta:
identifier: gae:test@ozg-sh.de
identifiers:
- gae:test@ozg-sh.de
server:
name: test
address: 1.2.3.4
......
package de.ozgcloud.eingang.xta;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
class XtaActiveIdentifierServiceTest {
private static final String IDENTIFIER1 = "identifier1";
private static final String IDENTIFIER2 = "identifier2";
private static final List<String> IDENTIFIERS = List.of(IDENTIFIER1, IDENTIFIER2);
@Spy
@InjectMocks
private XtaCurrentIdentifierService service;
@Mock
private XtaProperties properties;
@DisplayName("get identifiers")
@Nested
class TestGetIdentifiers {
@BeforeEach
void mock() {
when(properties.getIdentifiers()).thenReturn(IDENTIFIERS);
}
@DisplayName("should return")
@Test
void shouldReturn() {
assertThat(service.getIdentifiers()).isEqualTo(IDENTIFIERS);
}
}
}
......@@ -8,6 +8,7 @@ import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
......@@ -19,8 +20,8 @@ import org.mockito.Spy;
import de.ozgcloud.eingang.common.formdata.IncomingFileTestFactory;
import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
import de.ozgcloud.eingang.xdomea.XdomeaMessageData;
import de.ozgcloud.eingang.xdomea.XdomeaMessageDataTestFactory;
import de.ozgcloud.eingang.xdomea.XdomeaMessageDataMapper;
import de.ozgcloud.eingang.xdomea.XdomeaMessageDataTestFactory;
class XtaServiceTest {
......@@ -43,6 +44,9 @@ class XtaServiceTest {
@Mock
private XdomeaMessageDataMapper xdomeaMessageDataMapper;
@Mock
private XtaCurrentIdentifierService currentIdentifierService;
@Nested
class TestGetMessagesAsFormData {
......@@ -124,7 +128,7 @@ class XtaServiceTest {
private ArgumentCaptor<XtaMessageMetaData> messageMetaDataCaptor;
@Captor
private ArgumentCaptor<XdomeaMessageData> classificationCaptor;
private ArgumentCaptor<XdomeaMessageData> classificationCaptor;
@BeforeEach
void init() {
......@@ -185,4 +189,46 @@ class XtaServiceTest {
}
}
@DisplayName("create XTA message stream")
@Nested
class TestCreateXtaMessageStream {
private static final List<String> XTA_IDENTIFIERS = List.of("XTA_IDENTIFIER", "XTA_IDENTIFIER2");
@Captor
private ArgumentCaptor<String> identifierCaptor;
@BeforeEach
void mock() {
when(remoteService.getMessagesMetadata())
.thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create())
.thenReturn(XtaMessageMetaDatasAndHeaderTestFactory.create());
when(currentIdentifierService.getIdentifiers()).thenReturn(XTA_IDENTIFIERS);
}
@DisplayName("should return")
@Test
void shouldReturn() {
var result = service.createXtaMessageStream().toList();
assertThat(result).isEqualTo(getExpectedMessages());
}
private List<XtaMessageMetaData> getExpectedMessages() {
return Stream.concat(
XtaMessageMetaDatasAndHeaderTestFactory.create().getMessages(),
XtaMessageMetaDatasAndHeaderTestFactory.create().getMessages()
).toList();
}
@DisplayName("should call set current identifier")
@Test
void shouldCallSetCurrentIdentifier() {
service.createXtaMessageStream().toList();
verify(currentIdentifierService, times(2))
.setCurrentIdentifier(identifierCaptor.capture());
assertThat(identifierCaptor.getAllValues()).isEqualTo(XTA_IDENTIFIERS);
}
}
}
ozgcloud:
xta:
identifier: afmsh:010600000000_Online-Dienste
identifiers:
- afmsh:010600000000_Online-Dienste
server:
address: localhost:3000
name: LI33-0005
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment