From 4fcb0654e81a0e3abf400dbbbd8d2bedbbf5864d Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Tue, 11 Jun 2024 14:43:12 +0200 Subject: feat(core): add method parameter to define custom max. age for pendingRequestId --- .../gv/egiz/eaaf/core/impl/idp/auth/RequestStorage.java | 10 ++++++++-- .../AbstractProcessEngineSignalController.java | 17 ++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) (limited to 'eaaf_core/src') diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/RequestStorage.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/RequestStorage.java index db13bf71..1bc40720 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/RequestStorage.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/RequestStorage.java @@ -47,13 +47,19 @@ public class RequestStorage implements IRequestStorage { @Autowired(required = true) IPendingRequestIdGenerationStrategy pendingReqIdGenerationStrategy; - @Override public IRequest getPendingRequest(final String pendingReqID) throws PendingReqIdValidationException { + return getPendingRequest(pendingReqID, -1); + + } + + @Override + public IRequest getPendingRequest(final String pendingReqID, int maxPendingRequestIdAge) + throws PendingReqIdValidationException { try { final String internalPendingReqId = - pendingReqIdGenerationStrategy.validateAndGetPendingRequestId(pendingReqID); + pendingReqIdGenerationStrategy.validateAndGetPendingRequestId(pendingReqID, maxPendingRequestIdAge); log.debug("PendingReqId is valid"); // get pending-request from storage diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/AbstractProcessEngineSignalController.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/AbstractProcessEngineSignalController.java index 17d240cb..706b8fb2 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/AbstractProcessEngineSignalController.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/controller/AbstractProcessEngineSignalController.java @@ -29,6 +29,7 @@ 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.idp.process.ProcessEngine; +import at.gv.egiz.eaaf.core.api.utils.IPendingRequestIdGenerationStrategy; import at.gv.egiz.eaaf.core.exceptions.EaafException; import at.gv.egiz.eaaf.core.exceptions.EaafIllegalStateException; import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException; @@ -62,7 +63,7 @@ public abstract class AbstractProcessEngineSignalController extends AbstractCont } - pendingReq = requestStorage.getPendingRequest(pendingRequestID); + pendingReq = requestStorage.getPendingRequest(pendingRequestID, getMaxPendingReqIdAge()); if (pendingReq == null) { log.info("No PendingRequest with Id: " + pendingRequestID + " Maybe, a transaction timeout occure."); @@ -102,6 +103,20 @@ public abstract class AbstractProcessEngineSignalController extends AbstractCont } + /** + * Defines max. age of pendingrequestId for validation. + * + *
+ * Default implementation set -1 and uses default value of + * {@link IPendingRequestIdGenerationStrategy} + *
+ * + * @return max. age in seconds, or -1 if default value should be used + */ + protected int getMaxPendingReqIdAge() { + return -1; + + } /** * Retrieves the current pending-request id from the HttpServletRequest -- cgit v1.2.3