aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AbstractController.java42
1 files changed, 34 insertions, 8 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AbstractController.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AbstractController.java
index 8c0708fd5..49035aba3 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AbstractController.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/AbstractController.java
@@ -56,6 +56,7 @@ import at.gv.egovernment.moa.id.protocols.AbstractAuthProtocolModulController;
import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.AuthnRequestValidatorException;
import at.gv.egovernment.moa.id.storage.ITransactionStorage;
import at.gv.egovernment.moa.id.util.ErrorResponseUtils;
+import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;
import at.gv.egovernment.moa.id.util.Random;
import at.gv.egovernment.moa.id.util.ServletUtils;
import at.gv.egovernment.moa.id.util.VelocityProvider;
@@ -98,7 +99,7 @@ public abstract class AbstractController extends MOAIDAuthConstants {
}
@ExceptionHandler({IOException.class})
- public void IOExceptionHandler(HttpServletResponse resp, IOException exception) {
+ public void IOExceptionHandler(HttpServletResponse resp, Throwable exception) {
Logger.error("Internel Server Error." , exception);
resp.setContentType("text/html;charset=UTF-8");
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
@@ -136,8 +137,11 @@ public abstract class AbstractController extends MOAIDAuthConstants {
String redirectURL = null;
redirectURL = ServletUtils.getBaseUrl(req);
redirectURL += "/"+AbstractAuthProtocolModulController.FINALIZEPROTOCOL_ENDPOINT
- + "?" + ERROR_CODE_PARAM + "=" + key
- + "&" + MOAIDAuthConstants.PARAM_TARGET_PENDINGREQUESTID + "=" + pendingRequestID;
+ + "?" + ERROR_CODE_PARAM + "=" + key;
+
+ //only add pending-request Id if it exists
+ if (MiscUtil.isNotEmpty(pendingRequestID))
+ redirectURL += "&" + MOAIDAuthConstants.PARAM_TARGET_PENDINGREQUESTID + "=" + pendingRequestID;
resp.setContentType("text/html");
resp.setStatus(302);
@@ -178,8 +182,13 @@ public abstract class AbstractController extends MOAIDAuthConstants {
if (throwable instanceof MOAIDException || throwable instanceof ProcessExecutionException)
internalMOAIDExceptionHandler(req, resp, (Exception)throwable, false);
- else
- GenericExceptionHandler(resp, (Exception)throwable);
+ else {
+ //write generic message for general exceptions
+ String msg = MOAIDMessageProvider.getInstance().getMessage("internal.00", null);
+ writeHTMLErrorResponse(resp, msg, "9199", (Exception) throwable);
+
+ }
+
}
/**
@@ -213,7 +222,22 @@ public abstract class AbstractController extends MOAIDAuthConstants {
" | Description=" + descr + ")");
}
+
+ private void writeHTMLErrorResponse(HttpServletResponse httpResp, String msg, String errorCode, Exception error) throws IOException {
+ VelocityContext context = new VelocityContext();
+ //add errorcode and errormessage
+ context.put("errorMsg", msg);
+ context.put("errorCode", errorCode);
+
+ //add stacktrace if debug is enabled
+ if (Logger.isTraceEnabled()) {
+ context.put("stacktrace", getStacktraceFromException(error));
+
+ }
+
+ }
+
private void writeHTMLErrorResponse(HttpServletResponse httpResp, Exception error) throws IOException {
VelocityContext context = new VelocityContext();
@@ -222,11 +246,13 @@ public abstract class AbstractController extends MOAIDAuthConstants {
context.put("errorCode", ErrorResponseUtils.getInstance().getResponseErrorCode(error));
//add stacktrace if debug is enabled
- if (Logger.isDebugEnabled()) {
+ if (Logger.isTraceEnabled()) {
context.put("stacktrace", getStacktraceFromException(error));
}
-
+ }
+
+ private void writeHTMLErrorResponse(HttpServletResponse httpResp, VelocityContext context) throws IOException {
try {
InputStream is = null;
String pathLocation = null;
@@ -260,7 +286,7 @@ public abstract class AbstractController extends MOAIDAuthConstants {
}
} catch (Exception e) {
Logger.error("Error-message form can not created.", e);
- GenericExceptionHandler(httpResp, error);
+ IOExceptionHandler(httpResp, e);
}
}