summaryrefslogtreecommitdiff
path: root/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
diff options
context:
space:
mode:
authorThomas Lenz <thomas.lenz@egiz.gv.at>2020-11-06 11:16:53 +0100
committerThomas Lenz <thomas.lenz@egiz.gv.at>2020-11-06 11:16:53 +0100
commit1c19ec91df9f0cd6a010d16c9190c5d16ec5fdc8 (patch)
treed655cf71be448d18ad1f3d8d02b5224ca106a744 /eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
parent83e19359c762bd5652dfa8e2a66d7e5a0c3f2184 (diff)
downloadEAAF-Components-1c19ec91df9f0cd6a010d16c9190c5d16ec5fdc8.tar.gz
EAAF-Components-1c19ec91df9f0cd6a010d16c9190c5d16ec5fdc8.tar.bz2
EAAF-Components-1c19ec91df9f0cd6a010d16c9190c5d16ec5fdc8.zip
optimize error-handling in case with special focus on backend communication-requests
Diffstat (limited to 'eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java')
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java35
1 files changed, 22 insertions, 13 deletions
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
index 3fc31673..2a8dd756 100644
--- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
+++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
@@ -24,14 +24,6 @@ import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import at.gv.egiz.components.eventlog.api.EventConstants;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.IRequestStorage;
-import at.gv.egiz.eaaf.core.api.IStatusMessenger;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.data.ExceptionContainer;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-
import org.apache.commons.text.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,6 +33,15 @@ import org.springframework.util.SerializationUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import at.gv.egiz.components.eventlog.api.EventConstants;
+import at.gv.egiz.eaaf.core.api.IRequest;
+import at.gv.egiz.eaaf.core.api.IRequestStorage;
+import at.gv.egiz.eaaf.core.api.IStatusMessenger;
+import at.gv.egiz.eaaf.core.api.data.EaafConstants;
+import at.gv.egiz.eaaf.core.api.data.ExceptionContainer;
+import at.gv.egiz.eaaf.core.api.utils.IPendingRequestIdGenerationStrategy;
+import at.gv.egiz.eaaf.core.exceptions.EaafException;
+
/**
* Protocol finialization end-point.
*
@@ -55,6 +56,7 @@ public class ProtocolFinalizationController extends AbstractController {
@Autowired(required = true)
IRequestStorage requestStorage;
+ @Autowired IPendingRequestIdGenerationStrategy requestIdValidationStragegy;
/**
* End-Point to handle errors.
@@ -68,19 +70,26 @@ public class ProtocolFinalizationController extends AbstractController {
public void errorHandling(final HttpServletRequest req, final HttpServletResponse resp)
throws EaafException, IOException {
// receive an authentication error
- final String errorid =
+ final String errorToken =
StringEscapeUtils.escapeHtml4(req.getParameter(EaafConstants.PARAM_HTTP_ERROR_CODE));
- if (errorid != null) {
+ if (errorToken != null) {
IRequest pendingReq = null;
- try {
+ try {
+ String errorId = requestIdValidationStragegy.validateAndGetPendingRequestId(errorToken);
+
// load stored exception from database
final byte[] containerSerialized =
- transactionStorage.get(errorid, byte[].class);
+ transactionStorage.get(errorId, byte[].class);
if (containerSerialized != null) {
// remove exception if it was found
- transactionStorage.remove(errorid);
+ transactionStorage.remove(errorId);
+ //final Object containerObj = EaafSerializationUtils.deserialize(containerSerialized,
+ // Arrays.asList(
+ // ExceptionContainer.class.getName()
+ // ));
final Object containerObj = SerializationUtils.deserialize(containerSerialized);
+
if (containerObj instanceof ExceptionContainer) {
final ExceptionContainer container = (ExceptionContainer) containerObj;
final Throwable throwable = container.getExceptionThrown();