From a19b85723223dbefff7f34a59421c2d2edf3261f Mon Sep 17 00:00:00 2001 From: Thomas Lenz 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. + * + *

If the current state is marked as 'in iFrame', + * than the process engine will perform an target=_parent hope in case of an error

+ * + * @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 errorToHandle, String errorKey, + HttpServletRequest req, HttpServletResponse resp) throws GuiBuildException; + + + } -- cgit v1.2.3