Skip to content
Snippets Groups Projects
Commit 37193e3b authored by OZGCloud's avatar OZGCloud
Browse files

OZG-3665 send data to semantik adapter

parent 0cc586cd
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,10 @@
<groupId>de.itvsh.kop.eingangsadapter</groupId>
<artifactId>common</artifactId>
</dependency>
<dependency>
<groupId>de.itvsh.kop.eingangsadapter</groupId>
<artifactId>semantik-adapter</artifactId>
</dependency>
<!--mapstruct-->
<dependency>
<groupId>org.mapstruct</groupId>
......
......@@ -32,7 +32,7 @@ interface XtaMessageMapper {
@Mapping(target = "formEngineName", ignore = true)
@Mapping(target = "formId", source = "messageType")
@Mapping(target = "requestId", ignore = true)
@Mapping(target = "requestId", source = "messageId")
@Mapping(target = "serviceKonto", ignore = true)
@Mapping(target = "createdAt", source = "origin")
@Mapping(target = "sender", constant = "XTA")
......@@ -58,4 +58,8 @@ interface XtaMessageMapper {
throw new TechnicalException("Error opening xta message file.");
}
}
default String fromId(XtaMessageId id) {
return id.toString();
}
}
package de.ozgcloud.eingang.xta;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader;
class FormDataTestFactory {
......@@ -11,15 +10,7 @@ class FormDataTestFactory {
static FormData.FormDataBuilder createBuilder() {
return FormData.builder()
.header(createHeader());
.header(FormHeaderTestFactory.create());
}
static FormHeader createHeader() {
return FormHeader.builder()
.sender("XTA")
.formName(XtaMessageMetaDataTestFactory.MESSAGE_TYPE)
.formId(XtaMessageMetaDataTestFactory.MESSAGE_TYPE)
.createdAt(XtaMessageMetaDataTestFactory.ORIGIN)
.build();
}
}
package de.ozgcloud.eingang.xta;
import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader;
import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader.FormHeaderBuilder;
public class FormHeaderTestFactory {
static FormHeader create() {
return createBuilder().build();
}
static FormHeaderBuilder createBuilder() {
return FormHeader.builder()
.sender("XTA")
.requestId(XtaMessageTestFactory.MESSAGE_ID.toString())
.formName(XtaMessageMetaDataTestFactory.MESSAGE_TYPE)
.formId(XtaMessageMetaDataTestFactory.MESSAGE_TYPE)
.createdAt(XtaMessageMetaDataTestFactory.ORIGIN);
}
}
......@@ -42,6 +42,16 @@ class XtaMessageMapperTest {
verify(mapper).toIncomingFile(message.getMessageFile());
}
@Nested
class ToFormHeader {
@Test
void shouldMapToFormHeader() {
var mapped = mapper.formHeaderFromMetaData(XtaMessageMetaDataTestFactory.create());
assertThat(mapped).usingRecursiveComparison().isEqualTo(FormHeaderTestFactory.create());
}
}
@Nested
class ToIncomingFile {
@Test
......
package de.ozgcloud.eingang.xta;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter;
import lombok.NonNull;
import lombok.extern.log4j.Log4j2;
@Log4j2
@Component
@Profile("!itcase")
@ConditionalOnProperty(havingValue = "ozgcloud.xta.scheduler.enabled")
class XtaScheduler {
@Autowired
private XtaService service;
@Autowired
private SemantikAdapter semantikAdapter;
@Scheduled(initialDelayString = "${ozgcloud.xta.scheduler.initialDelay:5000}", fixedDelayString = "${ozgcloud.xta.scheduler.fixedDelay:900000")
void runGetXtaMessages() {
service.getMessagesAsFormData().forEach(this::processAndAcknowledge);
}
private void processAndAcknowledge(@NonNull FormData formData) {
try {
semantikAdapter.processFormData(formData);
service.acknowledgeReceive(XtaMessageId.from(formData.getHeader().getRequestId()));
} catch (RuntimeException e) {
LOG.error("Error on processing XTA-Message. Continue with next message.", e);
}
}
}
package de.ozgcloud.eingang.xta;
import static org.mockito.Mockito.*;
import java.util.stream.Stream;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.semantik.SemantikAdapter;
class XtaSchedulerTest {
@InjectMocks
private XtaScheduler scheduler;
@Mock
private XtaService service;
@Mock
private SemantikAdapter semantikAdapter;
@Nested
class TestRunGetXtaMessages {
private FormData formData = FormDataTestFactory.create();
@BeforeEach
void init() {
when(service.getMessagesAsFormData()).thenReturn(Stream.of(formData));
}
@Test
void shouldCallXtaService() {
scheduler.runGetXtaMessages();
verify(service).getMessagesAsFormData();
}
@Test
void shouldHandOverFormDataToSemantikAdapter() {
scheduler.runGetXtaMessages();
verify(semantikAdapter).processFormData(formData);
}
@Test
void shouldAcknowledgeReceive() {
scheduler.runGetXtaMessages();
verify(service).acknowledgeReceive(XtaMessageTestFactory.MESSAGE_ID);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment