diff options
author | Thomas <> | 2025-01-27 16:10:45 +0100 |
---|---|---|
committer | Thomas <> | 2025-01-27 16:10:45 +0100 |
commit | 0bead0663c9f97adf37515a87a57f1f715603487 (patch) | |
tree | cd2878eaa6477cba9502d9fbdf7d5ed106ff1bab | |
parent | d779aeaf9ab0f00329f1fcd500a4c0181da4cbdf (diff) | |
download | EAAF-Components-0bead0663c9f97adf37515a87a57f1f715603487.tar.gz EAAF-Components-0bead0663c9f97adf37515a87a57f1f715603487.tar.bz2 EAAF-Components-0bead0663c9f97adf37515a87a57f1f715603487.zip |
feat(core): add HTTP status-code as a property in central error-handling configuration
7 files changed, 37 insertions, 0 deletions
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/data/ErrorConfig.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/data/ErrorConfig.java index 5f1d0976..e430999c 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/data/ErrorConfig.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/data/ErrorConfig.java @@ -53,6 +53,12 @@ public class ErrorConfig { @JsonSetter(nulls = Nulls.SKIP) private Boolean writeThrowable = true; + @Getter + @Setter + @Builder.Default + @JsonSetter(nulls = Nulls.SKIP) + private int httpStatusCode = 200; + /** * Get type of error-handling flow. * diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/DefaultErrorService.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/DefaultErrorService.java index e8e22b8f..d0957f42 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/DefaultErrorService.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/DefaultErrorService.java @@ -108,6 +108,10 @@ public class DefaultErrorService implements IErrorService { @Builder.Default private boolean writeThrowable = true; + @Getter + @Builder.Default + private int httpStatusCode = 200; + @Override public Map<String, String> getAdditionalGuiModelElements() { return Collections.emptyMap(); @@ -118,5 +122,6 @@ public class DefaultErrorService implements IErrorService { return MessageFormat.format(TECH_LOG_MSG, internalErrorCode, throwable.getMessage()); } + } } diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/IErrorService.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/IErrorService.java index 657ebb4d..407bd1f2 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/IErrorService.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/IErrorService.java @@ -164,6 +164,18 @@ public interface IErrorService { boolean isWriteThrowable(); /** + * Get HTTP status-code that should be used for that error. + * + * <p> + * Status-code 200 is used by default, because error will be rendered as HTML. + * </p> + * + * @return HTTP status-code + * + */ + int getHttpStatusCode(); + + /** * Get the log-level for this internal errorId. * * @return Level to Log the error diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/TicketErrorService.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/TicketErrorService.java index 8f32dcb0..a256b493 100644 --- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/TicketErrorService.java +++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/TicketErrorService.java @@ -86,6 +86,7 @@ public abstract class TicketErrorService implements IErrorService { return HandleData.builder() .throwable(throwable) .writeThrowable(errorFlowConfig.getWriteThrowable()) + .httpStatusCode(errorFlowConfig.getHttpStatusCode()) .internalErrorCode(internalErrorId) .actionType(errorHandlingFlow) .logLevel(LogLevel.fromString(errorFlowConfig.getLogLevel())) @@ -266,6 +267,10 @@ public abstract class TicketErrorService implements IErrorService { private boolean writeThrowable = true; @Getter + @Builder.Default + private int httpStatusCode = 200; + + @Getter private Map<String, String> additionalGuiModelElements; public String getPreFormatedErrorMessage() { diff --git a/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/dummy/DummyDefaultErrorService.java b/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/dummy/DummyDefaultErrorService.java index 6a15ce4d..7424a902 100644 --- a/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/dummy/DummyDefaultErrorService.java +++ b/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/dummy/DummyDefaultErrorService.java @@ -112,6 +112,10 @@ public class DummyDefaultErrorService implements IErrorService { private boolean writeThrowable = true; @Getter + @Builder.Default + private int httpStatusCode = 200; + + @Getter private Map<String, String> additionalGuiModelElements; public String getPreFormatedErrorMessage() { diff --git a/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/service/TicketErrorServiceTest.java b/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/service/TicketErrorServiceTest.java index 8f87383d..78d86bc0 100644 --- a/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/service/TicketErrorServiceTest.java +++ b/eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/service/TicketErrorServiceTest.java @@ -244,6 +244,8 @@ public class TicketErrorServiceTest { // wrong excepiton Assert.assertEquals(errorData.getInternalErrorCode(), "module.binding.14"); + assertEquals("httpStatusCode", 400, errorData.getHttpStatusCode()); + assertEquals("wrong errorLevel", LogLevel.WARN, errorData.getLogLevel()); assertFalse("ticket", errorData.getPreFormatedErrorMessage().contains("Ticket=")); } @@ -271,6 +273,8 @@ public class TicketErrorServiceTest { Assert.assertEquals(errorData.getInternalErrorCode(), "auth.21"); Assert.assertTrue(errorData.getAdditionalGuiModelElements().isEmpty()); + assertEquals("httpStatusCode", 200, errorData.getHttpStatusCode()); + assertEquals("wrong errorLevel", LogLevel.INFO, errorData.getLogLevel()); assertFalse("ticket", errorData.getPreFormatedErrorMessage().contains("Ticket=")); } diff --git a/eaaf_core/src/test/resources/config/error_conf.yaml b/eaaf_core/src/test/resources/config/error_conf.yaml index 0536624e..7d7d358e 100644 --- a/eaaf_core/src/test/resources/config/error_conf.yaml +++ b/eaaf_core/src/test/resources/config/error_conf.yaml @@ -101,6 +101,7 @@ externalCode: 9199 logLevel: WARN writeThrowable: true + httpStatusCode: 400 internalCode: - module.binding.14 - module.binding.25 |