From a19b85723223dbefff7f34a59421c2d2edf3261f Mon Sep 17 00:00:00 2001
From: Thomas Lenz <thomas.lenz@egiz.gv.at>
Date: Wed, 1 Apr 2020 23:17:27 +0200
Subject: update process-engine support HTTP POST and GET error forwarting.
 This is needed for processes in IFrames

---
 .../main/java/at/gv/egiz/eaaf/core/api/IRequest.java  | 19 +++++++++++++++++++
 .../core/api/gui/IGuiBuilderConfigurationFactory.java | 13 +++++++++++++
 .../auth/services/IProtocolAuthenticationService.java | 16 ++++++++++++++++
 3 files changed, 48 insertions(+)

(limited to 'eaaf_core_api/src')

diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java
index 384446b8..05b7784e 100644
--- a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java
+++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/IRequest.java
@@ -263,5 +263,24 @@ public interface IRequest extends Serializable {
    *                  otherwise false
    */
   void setAbortedByUser(boolean isAborted);
+  
+  /**
+   * Indicates, if the current process stage is in iFrame.
+   * 
+   * <p>If the current state is marked as 'in iFrame', 
+   * than the process engine will perform an target=_parent hope in case of an error</p>
+   * 
+   * @return true, if the process is in iFrame, otherwise false
+   */
+  boolean isProcessInIframe();
+  
+  /**
+   * Set the 'isProcessInIframe' flag to this pending-request.
+   * 
+   * @param flag true, if the process is in iFrame and needs a target=_parent hope in case of an error
+   */
+  void setProcessInFrame(boolean flag);
 
+  
+  
 }
diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGuiBuilderConfigurationFactory.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGuiBuilderConfigurationFactory.java
index ed888f87..618b5987 100644
--- a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGuiBuilderConfigurationFactory.java
+++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/gui/IGuiBuilderConfigurationFactory.java
@@ -22,6 +22,8 @@ package at.gv.egiz.eaaf.core.api.gui;
 import java.net.MalformedURLException;
 import java.net.URI;
 
+import javax.annotation.Nonnull;
+
 import at.gv.egiz.eaaf.core.api.IRequest;
 
 public interface IGuiBuilderConfigurationFactory {
@@ -34,6 +36,17 @@ public interface IGuiBuilderConfigurationFactory {
    */
   IGuiBuilderConfiguration getDefaultErrorGui(String authUrl);
 
+  /**
+   * Get a default {@link IGuiBuilderConfiguration} that implements an iFrame to parent hop.
+   * 
+   * @param pendingReq Current pending-request object
+   * @param endpoint Request end-point
+   * @param errorKey Error identifier
+   * @return GUIBuilder configuration with parent hop.
+   */
+  IGuiBuilderConfiguration getDefaultIFrameParentHopGui(@Nonnull IRequest pendingReq, 
+      @Nonnull String endpoint, @Nonnull String errorKey);
+  
   /**
    * Default Velocity based GUI builder configuration.
    *
diff --git a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java
index 86d15d5b..d1d68c2d 100644
--- a/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java
+++ b/eaaf_core_api/src/main/java/at/gv/egiz/eaaf/core/api/idp/auth/services/IProtocolAuthenticationService.java
@@ -27,6 +27,8 @@ import javax.servlet.http.HttpServletResponse;
 import at.gv.egiz.eaaf.core.api.IRequest;
 import at.gv.egiz.eaaf.core.api.logging.IStatisticLogger;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
+import at.gv.egiz.eaaf.core.exceptions.GuiBuildException;
+import at.gv.egiz.eaaf.core.impl.data.Pair;
 
 public interface IProtocolAuthenticationService {
 
@@ -92,4 +94,18 @@ public interface IProtocolAuthenticationService {
   void handleErrorNoRedirect(Throwable throwable, HttpServletRequest req, HttpServletResponse resp,
       boolean writeExceptionToStatisticLog) throws IOException, EaafException;
 
+  /**
+   * Forward the process to error-handler in case of an error.
+   * 
+   * @param errorToHandle Error to handle
+   * @param errorKey ErrorId for error-handler
+   * @param req HTTP response
+   * @param resp HTTP response
+   * @throws GuiBuildException In case of an GUI generation error
+   */
+  void forwardToErrorHandler(Pair<IRequest, Throwable> errorToHandle, String errorKey, 
+      HttpServletRequest req, HttpServletResponse resp) throws GuiBuildException;
+  
+  
+  
 }
-- 
cgit v1.2.3