summaryrefslogtreecommitdiff
path: root/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
diff options
context:
space:
mode:
authorlalber <lukas.alber@iaik.tugraz.at>2021-03-08 18:27:55 +0100
committerlalber <lukas.alber@iaik.tugraz.at>2021-03-08 18:27:55 +0100
commitd025ac30b9c65a19535c7d6955b084960b4d0621 (patch)
treea9e6c68f7bf61dc27aefc60d28a0d746ec9ec3b6 /eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/ProtocolFinalizationController.java
parent54736c76e0ce7187915ccf9dec7573c0ab12d0a8 (diff)
downloadEAAF-Components-d025ac30b9c65a19535c7d6955b084960b4d0621.tar.gz
EAAF-Components-d025ac30b9c65a19535c7d6955b084960b4d0621.tar.bz2
EAAF-Components-d025ac30b9c65a19535c7d6955b084960b4d0621.zip
First version of feature
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.java84
1 files changed, 70 insertions, 14 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 4ff41836..f0be9a5e 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
@@ -19,20 +19,6 @@
package at.gv.egiz.eaaf.core.impl.idp.controller;
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.text.StringEscapeUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-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;
@@ -42,6 +28,18 @@ 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;
import at.gv.egiz.eaaf.core.impl.utils.TransactionIdUtils;
+import org.apache.commons.text.StringEscapeUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.SerializationUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
/**
* Protocol finialization end-point.
@@ -54,11 +52,68 @@ public class ProtocolFinalizationController extends AbstractController {
private static final Logger log = LoggerFactory.getLogger(ProtocolFinalizationController.class);
public static final String ENDPOINT_FINALIZEPROTOCOL = "finalizeAuthProtocol";
public static final String ENDPOINT_ERRORHANDLING = "errorHandling";
+ public static final String ENDPOINT_ERROR_REDIRECT = "errorRedirect";
@Autowired(required = true)
IRequestStorage requestStorage;
@Autowired IPendingRequestIdGenerationStrategy requestIdValidationStragegy;
+ @RequestMapping(value = ENDPOINT_ERROR_REDIRECT, method = { RequestMethod.GET, RequestMethod.POST })
+ public void errorRedirect(final HttpServletRequest req, final HttpServletResponse resp)
+ throws EaafException, IOException {
+
+ final String errorToken =
+ StringEscapeUtils.escapeHtml4(req.getParameter(EaafConstants.PARAM_HTTP_ERROR_CODE));
+ if (errorToken != null) {
+ IRequest pendingReq = null;
+ try {
+ String errorId = requestIdValidationStragegy.validateAndGetPendingRequestId(errorToken);
+ log.debug("Searching exception with internal error-token: {}", errorId);
+
+ // load stored exception from database
+ final byte[] containerSerialized = transactionStorage.get(errorId, byte[].class);
+ if (containerSerialized != null) {
+ // remove exception if it was found
+ transactionStorage.remove(errorId);
+ log.trace("Find exception with internal error-token: {}", 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();
+ pendingReq = container.getPendingRequest();
+
+ if (pendingReq != null) {
+
+ }
+ }
+ }
+ } catch (Exception e) {
+ }
+ }
+
+ //TODO finish
+// final Class<?> clazz = Class.forName(req.requestedModule());
+//
+// if (clazz == null || !IModulInfo.class.isAssignableFrom(clazz)) {
+// log.error(
+// "Requested protocol module Class is NULL or does not implement the IModulInfo interface.");
+// throw new ClassCastException(
+// "Requested protocol module Class is NULL or does not implement the IModulInfo interface.");
+//
+// }
+//
+// final IModulInfo handlingModule = (IModulInfo) applicationContext.getBean(clazz);
+//
+// handlingModule.generateErrorMessage(throwable, req, resp, protocolRequest);
+
+ }
+
/**
* End-Point to handle errors.
*
@@ -67,6 +122,7 @@ public class ProtocolFinalizationController extends AbstractController {
* @throws EaafException In case of an internal error
* @throws IOException In case of a servlet error
*/
+ // TODO reuse for the redirection to SP or own enpoint
@RequestMapping(value = ENDPOINT_ERRORHANDLING, method = { RequestMethod.GET, RequestMethod.POST })
public void errorHandling(final HttpServletRequest req, final HttpServletResponse resp)
throws EaafException, IOException {