Skip to content
Snippets Groups Projects
Commit 19d28206 authored by Lukas Malte Monnerjahn's avatar Lukas Malte Monnerjahn
Browse files

OZG-6240 KOP-2589 ResponseMapping

parent abd45eb5
Branches
No related tags found
No related merge requests found
...@@ -5,32 +5,14 @@ import java.math.BigInteger; ...@@ -5,32 +5,14 @@ import java.math.BigInteger;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.datatype.XMLGregorianCalendar;
import jakarta.activation.DataHandler;
import jakarta.activation.FileDataSource;
import org.apache.cxf.ws.addressing.AttributedURIType;
import org.mapstruct.Condition;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Named;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.SourcePropertyName;
import org.mapstruct.TargetPropertyName;
import de.ozgcloud.xta.test.app.model.XtaFile;
import de.ozgcloud.xta.test.app.model.XtaIdentifier;
import de.ozgcloud.xta.test.app.model.XtaLookupServiceRequest;
import de.ozgcloud.xta.test.app.model.XtaMessage;
import de.ozgcloud.xta.test.app.model.XtaMessageMetaData;
import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListing;
import genv3.de.xoev.transport.xta.x211.ContentType; import genv3.de.xoev.transport.xta.x211.ContentType;
import genv3.de.xoev.transport.xta.x211.GenericContentContainer; import genv3.de.xoev.transport.xta.x211.GenericContentContainer;
import genv3.de.xoev.transport.xta.x211.LookupServiceResponse; import genv3.de.xoev.transport.xta.x211.LookupServiceResponse;
import genv3.de.xoev.transport.xta.x211.LookupServiceResultType; import genv3.de.xoev.transport.xta.x211.LookupServiceResultType;
import genv3.de.xoev.transport.xta.x211.TransportReport;
import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxResponseType; import genv3.eu.osci.ws.x2008.x05.transport.MsgBoxResponseType;
import genv3.eu.osci.ws.x2008.x05.transport.MsgStatusListType; import genv3.eu.osci.ws.x2008.x05.transport.MsgStatusListType;
import genv3.eu.osci.ws.x2014.x10.transport.DeliveryAttributesType; import genv3.eu.osci.ws.x2014.x10.transport.DeliveryAttributesType;
...@@ -38,7 +20,13 @@ import genv3.eu.osci.ws.x2014.x10.transport.KeyCodeType; ...@@ -38,7 +20,13 @@ import genv3.eu.osci.ws.x2014.x10.transport.KeyCodeType;
import genv3.eu.osci.ws.x2014.x10.transport.MessageMetaData; import genv3.eu.osci.ws.x2014.x10.transport.MessageMetaData;
import genv3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType; import genv3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType;
import genv3.eu.osci.ws.x2014.x10.transport.QualifierType; import genv3.eu.osci.ws.x2014.x10.transport.QualifierType;
import jakarta.activation.DataHandler;
import jakarta.activation.FileDataSource;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.apache.cxf.ws.addressing.AttributedURIType;
import org.mapstruct.*;
import de.ozgcloud.xta.test.app.model.*;
@Mapper( @Mapper(
unmappedTargetPolicy = ReportingPolicy.ERROR, unmappedTargetPolicy = ReportingPolicy.ERROR,
...@@ -65,7 +53,7 @@ public interface ResponseMapper { ...@@ -65,7 +53,7 @@ public interface ResponseMapper {
@Mapping(target = "destinations.reader.identifier", source = "readerIdentifier") @Mapping(target = "destinations.reader.identifier", source = "readerIdentifier")
@Mapping(target = "msgSize", source = "messageSize") @Mapping(target = "msgSize", source = "messageSize")
@Mapping(target = "testMsg", ignore = true) @Mapping(target = "testMsg", ignore = true)
@Mapping(target = "deliveryAttributes", expression = "java( createDefaultDeliveryAttributes(createNowXmlGregorianCalendarFromLocalDateTime()) )") @Mapping(target = "deliveryAttributes", expression = "java( createDefaultDeliveryAttributes(createNowXmlGregorianCalendar()) )")
@Mapping(target = "messageProperties", ignore = true) @Mapping(target = "messageProperties", ignore = true)
MessageMetaData mapMessageMetaData(XtaMessageMetaData xtaMessageMetaData); MessageMetaData mapMessageMetaData(XtaMessageMetaData xtaMessageMetaData);
...@@ -127,8 +115,13 @@ public interface ResponseMapper { ...@@ -127,8 +115,13 @@ public interface ResponseMapper {
DeliveryAttributesType createDefaultDeliveryAttributes(XMLGregorianCalendar timestamp); DeliveryAttributesType createDefaultDeliveryAttributes(XMLGregorianCalendar timestamp);
@SneakyThrows @SneakyThrows
default XMLGregorianCalendar createNowXmlGregorianCalendarFromLocalDateTime() { default XMLGregorianCalendar createNowXmlGregorianCalendar() {
var isoTimeString = DateTimeFormatter.ISO_DATE_TIME.format(LocalDateTime.now()); return mapXmlGregorianCalendarFromLocalDateTime(LocalDateTime.now());
}
@SneakyThrows
default XMLGregorianCalendar mapXmlGregorianCalendarFromLocalDateTime(LocalDateTime localDateTime) {
var isoTimeString = DateTimeFormatter.ISO_DATE_TIME.format(localDateTime);
return DatatypeFactory.newInstance().newXMLGregorianCalendar(isoTimeString); return DatatypeFactory.newInstance().newXMLGregorianCalendar(isoTimeString);
} }
...@@ -177,6 +170,14 @@ public interface ResponseMapper { ...@@ -177,6 +170,14 @@ public interface ResponseMapper {
@Mapping(target = "lookupServiceResultList.lookupServiceResult", expression = "java( List.of( mapLookupServiceResultType(xtaLookupServiceRequest) ) )") @Mapping(target = "lookupServiceResultList.lookupServiceResult", expression = "java( List.of( mapLookupServiceResultType(xtaLookupServiceRequest) ) )")
LookupServiceResponse mapLookupServiceResponse(XtaLookupServiceRequest xtaLookupServiceRequest); LookupServiceResponse mapLookupServiceResponse(XtaLookupServiceRequest xtaLookupServiceRequest);
@Mapping(target = "messageMetaData", source = "messageMetaData")
@Mapping(target = "reportTime", source = "reportTime")
@Mapping(target = "XTAServerIdentity", constant = "xta-test-server")
@Mapping(target = "messageStatus.status", expression = "java( BigInteger.valueOf(xtaTransportReport.status().ordinal()) )")
@Mapping(target = "additionalReports", ignore = true)
@Mapping(target = "signature", ignore = true)
TransportReport mapTransportReport(XtaTransportReport xtaTransportReport);
@Mapping(target = "otherAttributes", ignore = true) @Mapping(target = "otherAttributes", ignore = true)
AttributedURIType mapCreateMessageIdResponse(String value); AttributedURIType mapCreateMessageIdResponse(String value);
} }
package de.ozgcloud.xta.test.app.mapper; package de.ozgcloud.xta.test.app.mapper;
import static de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory.*; import static de.ozgcloud.xta.test.app.factory.MessageMetaDataTestFactory.MESSAGE_SIZE;
import static de.ozgcloud.xta.test.app.factory.PartyIdentifierTypeTestFactory.*; import static de.ozgcloud.xta.test.app.factory.PartyIdentifierTypeTestFactory.READER_PARTY_IDENTIFIER;
import static de.ozgcloud.xta.test.app.factory.XtaLookupServiceRequestTestFactory.*; import static de.ozgcloud.xta.test.app.factory.XtaLookupServiceRequestTestFactory.LOOKUP_SERVICE_SERVICE;
import static de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory.*; import static de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory.*;
import static de.ozgcloud.xta.test.app.mapper.ResponseMapper.*; import static de.ozgcloud.xta.test.app.mapper.ResponseMapper.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.assertThat;
import java.math.BigInteger; import java.math.BigInteger;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import javax.xml.datatype.DatatypeConstants;
import genv3.de.xoev.transport.xta.x211.ContentType;
import genv3.de.xoev.transport.xta.x211.LookupServiceResponse;
import genv3.de.xoev.transport.xta.x211.LookupServiceResultType;
import genv3.de.xoev.transport.xta.x211.TransportReport;
import genv3.eu.osci.ws.x2008.x05.transport.MsgStatusListType;
import genv3.eu.osci.ws.x2014.x10.transport.DeliveryAttributesType;
import genv3.eu.osci.ws.x2014.x10.transport.MessageMetaData;
import genv3.eu.osci.ws.x2014.x10.transport.QualifierType;
import lombok.SneakyThrows;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import de.ozgcloud.xta.test.app.factory.XtaFileTestFactory; import de.ozgcloud.xta.test.app.factory.XtaFileTestFactory;
...@@ -22,15 +35,9 @@ import de.ozgcloud.xta.test.app.factory.XtaLookupServiceRequestTestFactory; ...@@ -22,15 +35,9 @@ import de.ozgcloud.xta.test.app.factory.XtaLookupServiceRequestTestFactory;
import de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory; import de.ozgcloud.xta.test.app.factory.XtaMessageMetaDataTestFactory;
import de.ozgcloud.xta.test.app.factory.XtaMessageTestFactory; import de.ozgcloud.xta.test.app.factory.XtaMessageTestFactory;
import de.ozgcloud.xta.test.app.model.XtaFile; import de.ozgcloud.xta.test.app.model.XtaFile;
import de.ozgcloud.xta.test.app.model.XtaMessageMetaData;
import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListing; import de.ozgcloud.xta.test.app.model.XtaMessageMetaDataListing;
import genv3.de.xoev.transport.xta.x211.ContentType; import de.ozgcloud.xta.test.app.model.XtaTransportReport;
import genv3.de.xoev.transport.xta.x211.LookupServiceResponse;
import genv3.de.xoev.transport.xta.x211.LookupServiceResultType;
import genv3.eu.osci.ws.x2008.x05.transport.MsgStatusListType;
import genv3.eu.osci.ws.x2014.x10.transport.DeliveryAttributesType;
import genv3.eu.osci.ws.x2014.x10.transport.MessageMetaData;
import genv3.eu.osci.ws.x2014.x10.transport.QualifierType;
import lombok.SneakyThrows;
public class ResponseMapperTest { public class ResponseMapperTest {
...@@ -481,4 +488,87 @@ public class ResponseMapperTest { ...@@ -481,4 +488,87 @@ public class ResponseMapperTest {
} }
} }
@DisplayName("map transport report")
@Nested
class TestMapTransportReport {
private XtaMessageMetaData xtaMessageMetaData;
private LocalDateTime reportTime;
@BeforeEach
void beforeEach() {
xtaMessageMetaData = XtaMessageMetaDataTestFactory.create();
reportTime = LocalDateTime.now();
}
@DisplayName("should map message meta data")
@Test
void shouldMapMessageMetaData() {
var result = doMapping();
assertThat(result.getMessageMetaData().getMsgIdentification().getMessageID().getValue()).isEqualTo(xtaMessageMetaData.messageId());
}
@DisplayName("should map message status")
@ParameterizedTest
@EnumSource(XtaTransportReport.MessageStatus.class)
void shouldMapMessageStatus(XtaTransportReport.MessageStatus status) {
var result = doMapping(status);
assertThat(result.getMessageStatus().getStatus()).isEqualTo(status.ordinal());
}
@DisplayName("should map report time")
@Test
void shouldMapReportTime() {
var result = doMapping();
assertThat(result.getReportTime()).isEqualTo(mapper.mapXmlGregorianCalendarFromLocalDateTime(reportTime));
}
@DisplayName("should set server identity")
@Test
void shouldSetServerIdentity() {
var result = doMapping();
assertThat(result.getXTAServerIdentity()).isEqualTo("xta-test-server");
}
private TransportReport doMapping() {
return doMapping(XtaTransportReport.MessageStatus.GRUEN);
}
private TransportReport doMapping(XtaTransportReport.MessageStatus status) {
return mapper.mapTransportReport(XtaTransportReport.builder()
.messageMetaData(xtaMessageMetaData)
.status(status)
.reportTime(reportTime)
.build());
}
}
@DisplayName("map XmlGregorianCalendar from LocalDateTime")
@Nested
class TestMapXmlGregorianCalendarFromLocalDateTime {
private LocalDateTime localDateTime;
@BeforeEach
void beforeEach() {
localDateTime = LocalDateTime.parse("2007-12-03T10:15:30");
}
@DisplayName("should map xml gregorian calendar from local date time")
@Test
void shouldMapXmlGregorianCalendarFromLocalDateTime() {
var result = mapper.mapXmlGregorianCalendarFromLocalDateTime(localDateTime);
assertThat(result.getDay()).isEqualTo(3);
assertThat(result.getMonth()).isEqualTo(12);
assertThat(result.getYear()).isEqualTo(2007);
assertThat(result.getEon() == null || result.getEon().equals(BigInteger.ZERO)).isTrue();
assertThat(result.getHour()).isEqualTo(10);
assertThat(result.getMinute()).isEqualTo(15);
assertThat(result.getSecond()).isEqualTo(30);
assertThat(result.getTimezone()).isEqualTo(DatatypeConstants.FIELD_UNDEFINED);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment