aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java56
1 files changed, 39 insertions, 17 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java b/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
index 14e22ad..8a4b590 100644
--- a/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
+++ b/src/main/java/at/gv/egiz/moazs/scheme/RequestStatusResponse.java
@@ -6,11 +6,13 @@ import at.gv.zustellung.msg.xsd.DeliveryAnswerType;
import at.gv.zustellung.msg.xsd.DeliveryRequestStatusType;
import at.gv.zustellung.msg.xsd.ErrorInfoType;
import at.gv.zustellung.msg.xsd.ObjectFactory;
+import org.springframework.lang.Nullable;
import javax.xml.bind.JAXBElement;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
+import static at.gv.egiz.moazs.MoaZSException.moaZSException;
import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.Error.errorBuilder;
import static at.gv.zustellung.msg.xsd.DeliveryRequestStatusType.deliveryRequestStatusTypeBuilder;
@@ -26,10 +28,19 @@ public class RequestStatusResponse extends MsgResponse<DeliveryRequestStatusType
public RequestStatusResponse(DeliveryRequestStatusType status) {
this.status = status;
- this.answer = coalesce(status.getSuccess(), status.getPartialSuccess(), status.getError()).get();
+ this.answer = getAnswer(status);
super.id = createResponseId(answer.getAppDeliveryID(), ID_SUFFIX);
}
+ /**
+ * Convenience method to access DeliveryAnswerType's base fields of Success, PartialSuccess or Error.
+ * @param status
+ * @return Success, PartialSuccess, or Error casted to DeliveryAnswerType
+ */
+ public static DeliveryAnswerType getAnswer(DeliveryRequestStatusType status) {
+ return coalesce(status.getSuccess(), status.getPartialSuccess(), status.getError()).get();
+ }
+
public static String getResponseID(String appDeliveryID) {
return appDeliveryID + ID_SUFFIX;
}
@@ -60,31 +71,42 @@ public class RequestStatusResponse extends MsgResponse<DeliveryRequestStatusType
}
@Override
- public MsgResponse<DeliveryRequestStatusType> generateError(MoaZSException exception) {
- return generateErrorFromException(exception);
+ public MsgResponse<DeliveryRequestStatusType> generateError(String text, String code) {
+ var auxException = moaZSException(text, code);
+ return generateError(auxException, answer);
}
- public static MsgResponse<DeliveryRequestStatusType> generateErrorFromException(MoaZSException exception) {
+ /**
+ * Creates A MsgResponse with a DeliveryRequestStatus of type error and merges fields from
+ * {@code exception} and {@code answer}
+ * @param exception
+ * @param answer
+ * @return
+ */
+ public static MsgResponse<DeliveryRequestStatusType> generateError(MoaZSException exception,
+ @Nullable DeliveryAnswerType answer) {
ErrorInfoType info = errorInfoTypeBuilder()
.withText(exception.getMessage())
- .withCode(exception.getErrorCode())
+ .withCode(exception.getCode())
.build();
- DeliveryRequestStatusType.Error error = errorBuilder()
- .withErrorInfo(info)
- .withAppDeliveryID(exception.getAppDeliveryID())
- .withDeliverySystem(exception.getDeliverySystem())
- .withGZ(exception.getGz())
+ var errorBuilder = errorBuilder()
.withPreAdviceNoteSent(exception.getPreAdviceNoteSent())
- .withZSDeliveryID(exception.getZsDeliveryID())
- .build();
-
- var status = deliveryRequestStatusTypeBuilder()
- .withError(error)
- .withVersion(NameSpace.MSG_VERSION)
+ .withErrorInfo(info);
+
+ if (answer != null) {
+ errorBuilder
+ .withAppDeliveryID(answer.getAppDeliveryID())
+ .withDeliverySystem(answer.getDeliverySystem())
+ .withZSDeliveryID(answer.getZSDeliveryID())
+ .withGZ(answer.getGZ());
+ }
+
+ var errorStatus = deliveryRequestStatusTypeBuilder()
+ .withError(errorBuilder.build())
.build();
- return new RequestStatusResponse(status);
+ return new RequestStatusResponse(errorStatus);
}
@Override