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

KOP-2694 KOP-3045 add origin and delivery timestamps to XtaMessageMetadata

deliveryAttributes.origin and deliveryAttributes.delivery from MessageMetaData
parent a6265006
No related branches found
No related tags found
1 merge request!1KOP-2694 KOP-3045 add origin and delivery timestamps to XtaMessageMetadata
Pipeline #1796 passed
......@@ -51,6 +51,8 @@ public interface ResponseMapper {
@Mapping(target = "authorIdentifier", source = "originators.author.identifier")
@Mapping(target = "readerIdentifier", source = "destinations.reader.identifier")
@Mapping(target = "messageSize", source = "msgSize")
@Mapping(target = "deliveryAttributesOrigin", source = "deliveryAttributes.origin")
@Mapping(target = "deliveryAttributesDelivery", source = "deliveryAttributes.delivery")
XtaMessageMetaData mapXtaMessageMetaData(MessageMetaData messageMetaData);
@Named("mapBusinessScenarioCode")
......@@ -83,7 +85,7 @@ public interface ResponseMapper {
XtaTransportReport mapXtaTransportReport(TransportReport transportReport);
default ZonedDateTime mapZonedDateTime(XMLGregorianCalendar xmlGregorianCalendar) {
return xmlGregorianCalendar.toGregorianCalendar().toZonedDateTime();
return xmlGregorianCalendar == null ? null : xmlGregorianCalendar.toGregorianCalendar().toZonedDateTime();
}
default XtaMessageStatus mapXtaMessageStatus(MessageStatusType statusType) {
......
package de.ozgcloud.xta.client.model;
import java.math.BigInteger;
import java.time.ZonedDateTime;
import jakarta.annotation.Nullable;
import jakarta.validation.Valid;
......@@ -26,7 +27,9 @@ import lombok.Builder;
* @param messageId Unique identifier of the message. <p>The ID is generated by the server and thus not required when sending.</p>
* @param authorIdentifier Identifier of the author of the message. <p>This field is required.</p>
* @param readerIdentifier Identifier of the reader of the message. <p>This field is required.</p>
* @param messageSize Size of the message in bytes. <p>The size is determined by the server an thus not required when sending.</p>
* @param messageSize Size of the message in bytes. <p>The size is determined by the server and thus not required when sending.</p>
* @param deliveryAttributesOrigin Timestamp when the message was sent. <p>This field is only set for received messages and not required when sending.</p>
* @param deliveryAttributesDelivery Timestamp when the message was delivered. <p>This field is only set for received messages and not required when sending.</p>
*/
@Builder(toBuilder = true)
public record XtaMessageMetaData(
......@@ -39,9 +42,8 @@ public record XtaMessageMetaData(
@Nullable String messageId,
@NotNull @Valid XtaIdentifier authorIdentifier,
@NotNull @Valid XtaIdentifier readerIdentifier,
@Nullable @PositiveOrZero BigInteger messageSize
// TODO
// DeliveryAttributes.origin
// @Nullable ZonedDateTime deliveryAttributesOrigin;
@Nullable @PositiveOrZero BigInteger messageSize,
@Nullable ZonedDateTime deliveryAttributesOrigin,
@Nullable ZonedDateTime deliveryAttributesDelivery
) {
}
......@@ -45,6 +45,8 @@ public interface MetadataMapper {
@Mapping(target = "readerIdentifier", source = "readerIdSuffix", qualifiedByName = "mapReaderIdentifier")
@Mapping(target = "messageId", ignore = true)
@Mapping(target = "messageSize", ignore = true)
@Mapping(target = "deliveryAttributesOrigin", ignore = true)
@Mapping(target = "deliveryAttributesDelivery", ignore = true)
XtaMessageMetaData mapXtaMessageMetadata(XdomeaXmlValues xdomeaXmlValues);
@Named("getServiceByMessageTypeCode")
......
......@@ -2,7 +2,14 @@ package de.ozgcloud.xta.client.factory;
import static de.ozgcloud.xta.client.mapper.RequestMapper.*;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.math.BigInteger;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.GregorianCalendar;
import lombok.SneakyThrows;
import de.ozgcloud.xta.client.gen.v3.eu.osci.ws.x2014.x10.transport.MessageMetaData;
import de.ozgcloud.xta.client.gen.v3.eu.osci.ws.x2014.x10.transport.PartyIdentifierType;
......@@ -39,6 +46,9 @@ public class MessageMetaDataTestFactory {
public static final BigInteger MESSAGE_SIZE = BigInteger.valueOf(1234);
public static final ZonedDateTime DELIVERY_ATTRIBUTES_ORIGIN_TIME = ZonedDateTime.of(2021, 1, 1, 12, 0, 0, 0, ZoneId.of("UTC"));
public static final ZonedDateTime DELIVERY_ATTRIBUTES_DELIVERY_TIME = ZonedDateTime.of(2021, 1, 1, 12, 5, 0, 0, ZoneId.of("UTC"));
public static MessageMetaData create() {
return createWithDefined(true);
}
......@@ -48,6 +58,18 @@ public class MessageMetaDataTestFactory {
}
@SneakyThrows
public static MessageMetaData createWithDeliveryAttributes() {
final XMLGregorianCalendar deliveryAttributesOrigin = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(GregorianCalendar.from(DELIVERY_ATTRIBUTES_ORIGIN_TIME));
final XMLGregorianCalendar deliveryAttributesDelivery = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(GregorianCalendar.from(DELIVERY_ATTRIBUTES_DELIVERY_TIME));
var messageMetaData = createWithDefined(true);
messageMetaData.getDeliveryAttributes().setOrigin(deliveryAttributesOrigin);
messageMetaData.getDeliveryAttributes().setDelivery(deliveryAttributesDelivery);
return messageMetaData;
}
public static MessageMetaData create(String messageId, String messageType, BigInteger messageSize, boolean businessScenarioDefined) {
var messageMetaData = new MessageMetaData();
......
......@@ -99,7 +99,7 @@ class ResponseMapperTest {
@Nested
class TestMapXtaMessageMeta {
private final MessageMetaData messageMetaData = MessageMetaDataTestFactory.create();
private final MessageMetaData messageMetaData = MessageMetaDataTestFactory.createWithDeliveryAttributes();
@DisplayName("should map message id")
@Test
......@@ -189,6 +189,22 @@ class ResponseMapperTest {
assertThat(result.messageSize()).isEqualTo(MESSAGE_SIZE);
}
@DisplayName("should map delivery attributes origin")
@Test
void shouldMapDeliveryAttributesOrigin() {
var result = doMapping();
assertThat(result.deliveryAttributesOrigin()).isEqualTo(DELIVERY_ATTRIBUTES_ORIGIN_TIME);
}
@DisplayName("should map delivery attributes delivery")
@Test
void shouldMapDeliveryAttributesDelivery() {
var result = doMapping();
assertThat(result.deliveryAttributesDelivery()).isEqualTo(DELIVERY_ATTRIBUTES_DELIVERY_TIME);
}
private XtaMessageMetaData doMapping() {
return mapper.mapXtaMessageMetaData(messageMetaData);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment