diff --git a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java index 6db10a803f40301eb344db18da27fa3ab0f35c92..ab21c063e9669b00f07e5af63e0c3552e097b229 100644 --- a/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java +++ b/src/main/java/de/ozgcloud/processor/result/AktennotizFactory.java @@ -23,6 +23,7 @@ */ package de.ozgcloud.processor.result; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.springframework.stereotype.Component; import de.ozgcloud.processor.ProcessorManagerConfiguration; @@ -34,7 +35,8 @@ public class AktennotizFactory { static final String AKTENNOTIZ_ERROR_TEXT = """ Bei der Verarbeitung im Processor '%s' ist ein Fehler aufgetreten. - ExceptionId: %s + ExceptionId: %s. + Meldung: %s. """; public Aktennotiz createFrom(ProcessorResult processorResult) { @@ -47,9 +49,9 @@ public class AktennotizFactory { .build(); } - public Aktennotiz createErrorAktennotiz(VorgangId vorgangId, String processorName, String exceptionId) { - return createErrorAktennotizBuilder(vorgangId) - .text(buildErrorText(processorName, exceptionId)) + public Aktennotiz createErrorAktennotiz(ProcessorTechnicalException e) { + return createErrorAktennotizBuilder(VorgangId.from(e.getVorgangId())) + .text(buildErrorText(e.getProcessorName(), e.getExceptionId(), ExceptionUtils.getRootCauseMessage(e))) .build(); } @@ -60,8 +62,8 @@ public class AktennotizFactory { .headline("Fehler"); } - String buildErrorText(String processorName, String exceptionId) { - return AKTENNOTIZ_ERROR_TEXT.formatted(processorName, exceptionId); + String buildErrorText(String processorName, String exceptionId, String causeMessage) { + return AKTENNOTIZ_ERROR_TEXT.formatted(processorName, exceptionId, causeMessage); } } diff --git a/src/main/java/de/ozgcloud/processor/result/ResultService.java b/src/main/java/de/ozgcloud/processor/result/ResultService.java index 3e041010602c5e74f09832185000a515a4f53a97..c809ca953875736cfff7b226571fa4fdd7066554 100644 --- a/src/main/java/de/ozgcloud/processor/result/ResultService.java +++ b/src/main/java/de/ozgcloud/processor/result/ResultService.java @@ -54,12 +54,10 @@ public class ResultService { public void processError(Throwable cause, VorgangId vorgangId) { if (cause instanceof ProcessorTechnicalException exception) { - addAktenNotiz( - aktennotizFactory.createErrorAktennotiz(VorgangId.from(exception.getVorgangId()), exception.getProcessorName(), - exception.getExceptionId())); + addAktenNotiz(aktennotizFactory.createErrorAktennotiz(exception)); } else { addAktenNotiz(aktennotizFactory.createErrorAktennotizBuilder(vorgangId) - .text("Es ist eine Fehler bei der Verarbeitung des Vorganges aufgetreten").build()); + .text("Es ist eine Fehler bei der Verarbeitung des Vorganges aufgetreten.").build()); } } diff --git a/src/test/java/de/ozgcloud/processor/result/AktennotizFactoryTest.java b/src/test/java/de/ozgcloud/processor/result/AktennotizFactoryTest.java index 561ffe55d404bb22dc65c9a1e4ab7c7406d409ef..18d5938f2ae4886445ce5502b5159ca02e61fcb8 100644 --- a/src/test/java/de/ozgcloud/processor/result/AktennotizFactoryTest.java +++ b/src/test/java/de/ozgcloud/processor/result/AktennotizFactoryTest.java @@ -108,7 +108,7 @@ class AktennotizFactoryTest { @Test void shouldSetText() { var errorText = "errorText"; - doReturn(errorText).when(factory).buildErrorText(anyString(), anyString()); + doReturn(errorText).when(factory).buildErrorText(anyString(), anyString(), anyString()); var aktennotiz = createErrorAktennotiz(); @@ -116,7 +116,7 @@ class AktennotizFactoryTest { } private Aktennotiz createErrorAktennotiz() { - return factory.createErrorAktennotiz(VORGANG_ID, PROCESSOR_NAME, EXCEPTION_ID); + return factory.createErrorAktennotiz(new ProcessorTechnicalException(VORGANG_ID.toString(), PROCESSOR_NAME, EXCEPTION_ID)); } } @@ -127,7 +127,7 @@ class AktennotizFactoryTest { void shouldAddProcessorName() { var processorName = "processorName"; - var errorText = factory.buildErrorText(processorName, ""); + var errorText = factory.buildErrorText(processorName, "", ""); assertThat(errorText).contains(processorName); } @@ -136,9 +136,18 @@ class AktennotizFactoryTest { void shouldAddExceptionId() { var exceptionId = "exceptionId"; - var errorText = factory.buildErrorText("", exceptionId); + var errorText = factory.buildErrorText("", exceptionId, ""); assertThat(errorText).contains(exceptionId); } + + @Test + void shouldAddRootCause() { + var rootCause = "cause"; + + var errorText = factory.buildErrorText("", "", rootCause); + + assertThat(errorText).contains(rootCause); + } } } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/processor/result/ResultServiceTest.java b/src/test/java/de/ozgcloud/processor/result/ResultServiceTest.java index 1de5efb5f9e81a6b3a98fa4ec51816f29c739fe2..4287d42c2396c4cc97760183aa2a6c2d89907be9 100644 --- a/src/test/java/de/ozgcloud/processor/result/ResultServiceTest.java +++ b/src/test/java/de/ozgcloud/processor/result/ResultServiceTest.java @@ -38,7 +38,6 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper; import de.ozgcloud.processor.processor.ProcessorResult; import de.ozgcloud.processor.processor.ProcessorResultTestFactory; -import de.ozgcloud.processor.processor.ProcessorTestFactory; import de.ozgcloud.processor.vorgang.VorgangTestFactory; class ResultServiceTest { @@ -83,26 +82,19 @@ class ResultServiceTest { @Nested class TestProcessError { - private static final String EXCEPTION_ID = "exceptionId"; - @Mock private ProcessorTechnicalException exception; @BeforeEach void setup() { - when(exception.getVorgangId()).thenReturn(VorgangTestFactory.ID.toString()); - when(exception.getExceptionId()).thenReturn(EXCEPTION_ID); - when(aktennotizFactory.createErrorAktennotiz(any(), any(), any())).thenReturn(aktennotiz); + when(aktennotizFactory.createErrorAktennotiz(any())).thenReturn(aktennotiz); } @Test void shouldCallCreateErrorAktennotiz() { - when(exception.getProcessorName()).thenReturn(ProcessorTestFactory.PROCESSOR_NAME); - when(exception.getExceptionId()).thenReturn(EXCEPTION_ID); - resultService.processError(exception, VorgangTestFactory.ID); - verify(aktennotizFactory).createErrorAktennotiz(VorgangTestFactory.ID, ProcessorTestFactory.PROCESSOR_NAME, EXCEPTION_ID); + verify(aktennotizFactory).createErrorAktennotiz(exception); } @Test