aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java36
1 files changed, 13 insertions, 23 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
index 65b6425..cabb128 100644
--- a/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
+++ b/src/main/java/at/gv/egiz/moazs/scheme/Msg2MzsConverter.java
@@ -24,53 +24,48 @@ import static java.util.stream.Collectors.toList;
@Component
public class Msg2MzsConverter {
- private static final Logger log = LoggerFactory.getLogger(Msg2MzsConverter.class);
-
- private static final String ANSWERS_MISSING_ERROR_MSG = "msg:DeliveryNotification contains no msg:Answer elements" +
- " and cannot be converted to mzs:DeliveryNotification.";
private static final String UNKNOWN_ANSWER_ERROR_MSG = "msg:DeliveryNotification/msg:Answer is of unknown type" +
" and cannot be converted.";
- private static final String TOO_MANY_ANSWERS_MSG = "msg:DeliveryNotification contains more msg:Answer elements than" +
- " expected. All answers except the first one will be ignored.";
public DeliveryResponseType convert(DeliveryRequestStatusType status, Optional<byte[]> signedStatus) {
var responseBuilder = deliveryResponseTypeBuilder();
if (status.getError() != null) {
- responseBuilder.withError(convert(status.getError(), signedStatus));
+ responseBuilder.withError(convert(status.getError(), signedStatus, status.getRelayedViaERV()));
} else if (status.getSuccess() != null) {
- responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus));
+ responseBuilder.withSuccess(convert(status.getSuccess(), signedStatus, status.getRelayedViaERV()));
} else {
- responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus));
+ responseBuilder.withPartialSuccess(convert(status.getPartialSuccess(), signedStatus, status.getRelayedViaERV()));
}
return responseBuilder.build();
}
- private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus) {
+ private SuccessType convert(DeliveryRequestStatusType.Success success, Optional<byte[]> signedStatus, RelayedViaERV relayed) {
return successTypeBuilder()
.withAppDeliveryID(success.getAppDeliveryID())
.withDeliverySystem(success.getDeliverySystem())
.withGZ(success.getGZ())
.withZSDeliveryID(success.getZSDeliveryID())
.withSignedDeliveryRequestStatus(signedStatus.orElse(null))
- .withRelayedViaERV(success.isRelayedViaERV())
+ .withRelayedViaERV(relayed)
.withDeliveryTimestamp(success.getDeliveryTimestamp())
.build();
}
- private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus) {
+ private PartialSuccessType convert(DeliveryAnswerType answer, Optional<byte[]> signedStatus, RelayedViaERV relayed) {
return partialSuccessTypeBuilder()
.withAppDeliveryID(answer.getAppDeliveryID())
.withDeliverySystem(answer.getDeliverySystem())
.withGZ(answer.getGZ())
.withZSDeliveryID(answer.getZSDeliveryID())
+ .withRelayedViaERV(relayed)
.withSignedDeliveryRequestStatus(signedStatus.orElse(null))
.build();
}
- private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus) {
+ private ErrorType convert(DeliveryRequestStatusType.Error error, Optional<byte[]> signedStatus, RelayedViaERV relayed) {
var builder = errorTypeBuilder()
.withAppDeliveryID(error.getAppDeliveryID())
.withDeliverySystem(error.getDeliverySystem())
@@ -78,6 +73,7 @@ public class Msg2MzsConverter {
.withZSDeliveryID(error.getZSDeliveryID())
.withSignedDeliveryRequestStatus(signedStatus.orElse(null))
.withPreAdviceNoteSent(error.getPreAdviceNoteSent())
+ .withRelayedViaERV(relayed)
.withCode(new BigInteger(error.getErrorInfo().getCode()));
if(error.getErrorInfo().getText() != null) builder.withText(error.getErrorInfo().getText());
@@ -90,15 +86,7 @@ public class Msg2MzsConverter {
var builder = deliveryNotificationTypeBuilder();
- if (msgNotification.getAnswer().isEmpty()) {
- throw moaZSException(ANSWERS_MISSING_ERROR_MSG);
- }
-
- if (msgNotification.getAnswer().size() > 1) {
- log.warn(TOO_MANY_ANSWERS_MSG);
- }
-
- JAXBElement<? extends AbstractOperationType> answer = msgNotification.getAnswer().get(0);
+ JAXBElement<? extends AbstractOperationType> answer = msgNotification.getAnswer();
if(answer.getValue() instanceof AcceptedType) {
var accepted = (AcceptedType) answer.getValue();
@@ -108,6 +96,9 @@ public class Msg2MzsConverter {
var error = (DeliveryErrorType) answer.getValue();
builder.withError(extractError(msgNotification, error, signedNotification))
.withNotificationsPerformed(error.getNotificationsPerformed());
+ } else if(answer.getValue() instanceof ERVConfirmedDeliveryType) {
+ ERVConfirmedDeliveryType ervConfirmed = (ERVConfirmedDeliveryType) answer.getValue();
+ builder.withERVConfirmedDelivery(ervConfirmed);
} else {
throw moaZSException(UNKNOWN_ANSWER_ERROR_MSG);
}
@@ -141,7 +132,6 @@ public class Msg2MzsConverter {
.withZSDeliveryID(msgNotification.getZSDeliveryID())
.withGZ(msgNotification.getGZ())
.withSignedDeliveryRequestStatus(signedNotification.orElse(null))
- .withRelayedViaERV(msgNotification.isRelayedViaERV())
.withDeliveryTimestamp(msgNotification.getTimestamp())
.build();
}