Skip to content

Commit

Permalink
fix feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
elguardian committed Jun 20, 2024
1 parent 53564d4 commit 397adc1
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
*/
public class LoggingTaskHandlerDecorator extends AbstractExceptionHandlingTaskHandler {

private static final Logger logger = LoggerFactory.getLogger(LoggingTaskHandlerDecorator.class);
private static Logger logger = LoggerFactory.getLogger(LoggingTaskHandlerDecorator.class);
private int loggedExceptionsLimit = 100;
private Queue<WorkItemExceptionInfo> exceptionInfoList = new ArrayDeque<>(loggedExceptionsLimit);

Expand Down Expand Up @@ -210,6 +210,10 @@ public synchronized void handleAbortException(Throwable cause, KogitoWorkItem wo
logMessage(false, workItem, cause);
}

public static void setLogger(Logger logger) {
LoggingTaskHandlerDecorator.logger = logger;
}

private void logMessage(boolean onExecute, KogitoWorkItem workItem, Throwable cause) {
String handlerMethodStem = "execut";
if (!onExecute) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ public final void trigger(KogitoNodeInstance from, String type) {

protected void captureError(Exception e) {
logger.error("capture error", e);
e.printStackTrace();
getProcessInstance().setErrorState(this, e);
}

Expand Down
31 changes: 23 additions & 8 deletions jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/ErrorEventTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.jbpm.bpmn2.event.BoundaryErrorEventSubProcessExceptionMappingProcess;
import org.jbpm.bpmn2.handler.SignallingTaskHandlerDecorator;
import org.jbpm.bpmn2.objects.ExceptionOnPurposeHandler;
import org.jbpm.bpmn2.objects.ExceptionService;
import org.jbpm.bpmn2.objects.MyError;
import org.jbpm.bpmn2.objects.Person;
import org.jbpm.bpmn2.objects.TestWorkItemHandler;
Expand All @@ -56,6 +57,8 @@
import org.kie.api.event.process.ProcessNodeLeftEvent;
import org.kie.kogito.Application;
import org.kie.kogito.handlers.AlwaysThrowingComponent_throwException__8DA0CD88_0714_43C1_B492_A70FADE42361_Handler;
import org.kie.kogito.handlers.ExceptionService_handleException__X_2_Handler;
import org.kie.kogito.handlers.ExceptionService_throwException__2_Handler;
import org.kie.kogito.handlers.ExceptionService_throwException__3_Handler;
import org.kie.kogito.handlers.HelloService_helloException_ServiceTask_2_Handler;
import org.kie.kogito.handlers.LoggingComponent_logException__E5B0E78B_0112_42F4_89FF_0DCC4FCB6BCD_Handler;
Expand All @@ -66,7 +69,6 @@
import org.kie.kogito.internal.process.runtime.KogitoWorkItem;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemHandler;
import org.kie.kogito.internal.process.runtime.KogitoWorkItemManager;
import org.kie.kogito.process.ProcessError;
import org.kie.kogito.process.workitem.WorkItemExecutionException;

import static org.assertj.core.api.Assertions.assertThat;
Expand Down Expand Up @@ -340,7 +342,14 @@ public void testErrorSignallingExceptionServiceTask() throws Exception {
String input = "this is my service input";

Application app = ProcessTestHelper.newApplication();
ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.ExceptionService_throwException__3_Handler", new ExceptionService_throwException__3_Handler());
SignallingTaskHandlerDecorator signallingTaskWrapper = new SignallingTaskHandlerDecorator(ExceptionService_throwException__3_Handler.class, "Error-code");
signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
Object[] caughtEventObjectHolder = new Object[1];
caughtEventObjectHolder[0] = null;
ExceptionService.setCaughtEventObjectHolder(caughtEventObjectHolder);

ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.ExceptionService_throwException__3_Handler", signallingTaskWrapper);
ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.ExceptionService_handleException__X_2_Handler", new ExceptionService_handleException__X_2_Handler());
org.kie.kogito.process.Process<ExceptionServiceProcessErrorSignallingModel> definition = ExceptionServiceProcessErrorSignallingProcess.newProcess(app);

ExceptionServiceProcessErrorSignallingModel model = definition.createModel();
Expand All @@ -349,17 +358,23 @@ public void testErrorSignallingExceptionServiceTask() throws Exception {
instance.start();

ProcessTestHelper.completeWorkItem(instance, "john", Collections.emptyMap());
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ERROR);
assertThat(instance.error()).isPresent().get().extracting(ProcessError::errorMessage).isEqualTo("java.lang.RuntimeException - " + input);

assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ABORTED);
assertThat(caughtEventObjectHolder[0] != null && caughtEventObjectHolder[0] instanceof KogitoWorkItem).withFailMessage("Event was not passed to Event Subprocess.").isTrue();
}

@Test
public void testSignallingExceptionServiceTask() throws Exception {
String input = "this is my service input";

SignallingTaskHandlerDecorator signallingTaskWrapper = new SignallingTaskHandlerDecorator(ExceptionService_throwException__2_Handler.class, "exception-signal");
signallingTaskWrapper.setWorkItemExceptionParameterName(ExceptionService.exceptionParameterName);
Object[] caughtEventObjectHolder = new Object[1];
caughtEventObjectHolder[0] = null;
ExceptionService.setCaughtEventObjectHolder(caughtEventObjectHolder);

Application app = ProcessTestHelper.newApplication();
ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler", new ExceptionService_throwException__3_Handler());
ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler", signallingTaskWrapper);
ProcessTestHelper.registerHandler(app, "org.jbpm.bpmn2.objects.ExceptionService_handleException__X_2_Handler", new ExceptionService_handleException__X_2_Handler());
org.kie.kogito.process.Process<ExceptionServiceProcessSignallingModel> definition = ExceptionServiceProcessSignallingProcess.newProcess(app);

ExceptionServiceProcessSignallingModel model = definition.createModel();
Expand All @@ -368,8 +383,8 @@ public void testSignallingExceptionServiceTask() throws Exception {
instance.start();

ProcessTestHelper.completeWorkItem(instance, "john", Collections.emptyMap());
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ERROR);
assertThat(instance.error()).isPresent().get().extracting(ProcessError::errorMessage).isEqualTo("java.lang.RuntimeException - " + input);
assertThat(instance.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_COMPLETED);
assertThat(caughtEventObjectHolder[0] != null && caughtEventObjectHolder[0] instanceof KogitoWorkItem).withFailMessage("Event was not passed to Event Subprocess.").isTrue();

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@
import org.junit.jupiter.api.Test;
import org.kie.kogito.Application;
import org.kie.kogito.handlers.ExceptionService_throwException__2_Handler;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -62,9 +67,18 @@ public void testLimitExceptionInfoList() throws Exception {

@Test
public void testFormatLoggingError() throws Exception {
ListAppender<ILoggingEvent> logAppender = new ListAppender<>();
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
logAppender.setContext(loggerContext);
ch.qos.logback.classic.Logger decoratorLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LoggingTaskHandlerDecorator.class);
decoratorLogger.addAppender(logAppender);

logAppender.start();

Application app = ProcessTestHelper.newApplication();

LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new LoggingTaskHandlerDecorator(ExceptionService_throwException__2_Handler.class, 2);
LoggingTaskHandlerDecorator.setLogger(decoratorLogger);
loggingTaskHandlerWrapper.setLoggedMessageFormat("{0} - {1} - {2} - {3}");
List<InputParameter> inputParameters = new ArrayList<LoggingTaskHandlerDecorator.InputParameter>();
inputParameters.add(InputParameter.EXCEPTION_CLASS);
Expand All @@ -83,13 +97,10 @@ public void testFormatLoggingError() throws Exception {
instance1.start();
assertThat(instance1.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);

org.kie.kogito.process.ProcessInstance<ExceptionThrowingServiceProcessModel> instance2 = definition.createInstance(model);
instance2.start();
assertThat(instance2.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
String wid = loggingTaskHandlerWrapper.getWorkItemExceptionInfoList().get(0).getWorkItemId();
assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo("RuntimeException - " + wid + " - org.jbpm.bpmn2.objects.ExceptionService_throwException__2_Handler - " + instance1.id());

org.kie.kogito.process.ProcessInstance<ExceptionThrowingServiceProcessModel> instance3 = definition.createInstance(model);
instance3.start();
assertThat(instance3.status()).isEqualTo(org.kie.kogito.process.ProcessInstance.STATE_ACTIVE);
decoratorLogger.detachAppender(logAppender);

}

Expand Down

0 comments on commit 397adc1

Please sign in to comment.