summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas <>2025-01-27 16:10:45 +0100
committerThomas <>2025-01-27 16:10:45 +0100
commit0bead0663c9f97adf37515a87a57f1f715603487 (patch)
treecd2878eaa6477cba9502d9fbdf7d5ed106ff1bab
parentd779aeaf9ab0f00329f1fcd500a4c0181da4cbdf (diff)
downloadEAAF-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
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/data/ErrorConfig.java6
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/DefaultErrorService.java5
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/IErrorService.java12
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/services/TicketErrorService.java5
-rw-r--r--eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/dummy/DummyDefaultErrorService.java4
-rw-r--r--eaaf_core/src/test/java/at/gv/egiz/eaaf/core/impl/idp/auth/service/TicketErrorServiceTest.java4
-rw-r--r--eaaf_core/src/test/resources/config/error_conf.yaml1
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