/** * Constructs an {@link LoggingTaskHandlerDecorator} instance that wraps a * created instance of the {@link WorkItemHandler} class given. This * instance will only keep the given number of {@link WorkItemExceptionInfo} * instances instead of the default 100. * * @param originalTaskHandlerClass * @param logLimit */ public LoggingTaskHandlerDecorator(Class<? extends WorkItemHandler> originalTaskHandlerClass, int logLimit) { super(originalTaskHandlerClass); initializeExceptionInfoList(logLimit); }
@Override public synchronized void handleExecuteException(Throwable cause, WorkItem workItem, WorkItemManager manager) { if (exceptionInfoList.size() == this.loggedExceptionsLimit) { exceptionInfoList.poll(); } exceptionInfoList.add(new WorkItemExceptionInfo(workItem, cause, true)); logMessage(true, workItem, cause); }
@Test public void testFormatLoggingError() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ExceptionThrowingServiceProcess.bpmn2"); ksession = createKnowledgeSession(kbase); LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new LoggingTaskHandlerDecorator(ServiceTaskHandler.class, 2); loggingTaskHandlerWrapper.setLoggedMessageFormat("{0} - {1} - {2} - {3}"); List<InputParameter> inputParameters = new ArrayList<LoggingTaskHandlerDecorator.InputParameter>(); inputParameters.add(InputParameter.EXCEPTION_CLASS); inputParameters.add(InputParameter.WORK_ITEM_ID); inputParameters.add(InputParameter.WORK_ITEM_NAME); inputParameters.add(InputParameter.PROCESS_INSTANCE_ID); loggingTaskHandlerWrapper.setLoggedMessageInput(inputParameters); loggingTaskHandlerWrapper.setPrintStackTrace(false); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", loggingTaskHandlerWrapper); Map<String, Object> params = new HashMap<String, Object>(); params.put("serviceInputItem", "exception message"); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); }
@Test public void testLimitExceptionInfoList() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ExceptionThrowingServiceProcess.bpmn2"); ksession = createKnowledgeSession(kbase); LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new LoggingTaskHandlerDecorator(ServiceTaskHandler.class, 2); loggingTaskHandlerWrapper.setPrintStackTrace(false); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", loggingTaskHandlerWrapper); Map<String, Object> params = new HashMap<String, Object>(); params.put("serviceInputItem", "exception message"); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); int size = loggingTaskHandlerWrapper.getWorkItemExceptionInfoList().size(); assertTrue( "WorkItemExceptionInfoList is too large: " + size, size == 2 ); }
break; case WORK_ITEM_HANDLER_TYPE: inputList.add(getOriginalTaskHandler().getClass().getSimpleName()); break; case WORK_ITEM_METHOD:
@Test public void testFormatLoggingError() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ExceptionThrowingServiceProcess.bpmn2"); ksession = createKnowledgeSession(kbase); LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new LoggingTaskHandlerDecorator(ServiceTaskHandler.class, 2); loggingTaskHandlerWrapper.setLoggedMessageFormat("{0} - {1} - {2} - {3}"); List<InputParameter> inputParameters = new ArrayList<LoggingTaskHandlerDecorator.InputParameter>(); inputParameters.add(InputParameter.EXCEPTION_CLASS); inputParameters.add(InputParameter.WORK_ITEM_ID); inputParameters.add(InputParameter.WORK_ITEM_NAME); inputParameters.add(InputParameter.PROCESS_INSTANCE_ID); loggingTaskHandlerWrapper.setLoggedMessageInput(inputParameters); loggingTaskHandlerWrapper.setPrintStackTrace(false); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", loggingTaskHandlerWrapper); Map<String, Object> params = new HashMap<String, Object>(); params.put("serviceInputItem", "exception message"); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); }
@Test public void testLimitExceptionInfoList() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ExceptionThrowingServiceProcess.bpmn2"); ksession = createKnowledgeSession(kbase); LoggingTaskHandlerDecorator loggingTaskHandlerWrapper = new LoggingTaskHandlerDecorator(ServiceTaskHandler.class, 2); loggingTaskHandlerWrapper.setPrintStackTrace(false); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", loggingTaskHandlerWrapper); Map<String, Object> params = new HashMap<String, Object>(); params.put("serviceInputItem", "exception message"); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); ksession.startProcess("ServiceProcess", params); int size = loggingTaskHandlerWrapper.getWorkItemExceptionInfoList().size(); assertTrue( "WorkItemExceptionInfoList is too large: " + size, size == 2 ); }
break; case WORK_ITEM_HANDLER_TYPE: inputList.add(getOriginalTaskHandler().getClass().getSimpleName()); break; case WORK_ITEM_METHOD:
@Override public synchronized void handleAbortException(Throwable cause, WorkItem workItem, WorkItemManager manager) { if (exceptionInfoList.size() == this.loggedExceptionsLimit) { exceptionInfoList.poll(); } exceptionInfoList.add(new WorkItemExceptionInfo(workItem, cause, false)); logMessage(false, workItem, cause); }
public synchronized void setLoggedExceptionInfoListSize(int loggedExceptionInfoListSize) { initializeExceptionInfoList(loggedExceptionInfoListSize); }
@Override public synchronized void handleExecuteException(Throwable cause, WorkItem workItem, WorkItemManager manager) { if (exceptionInfoList.size() == this.loggedExceptionsLimit) { exceptionInfoList.poll(); } exceptionInfoList.add(new WorkItemExceptionInfo(workItem, cause, true)); logMessage(true, workItem, cause); }
/** * Constructs an {@link LoggingTaskHandlerDecorator} instance that wraps a * created instance of the {@link WorkItemHandler} class given. This * instance will only keep the given number of {@link WorkItemExceptionInfo} * instances instead of the default 100. * * @param originalTaskHandlerClass * @param logLimit */ public LoggingTaskHandlerDecorator(Class<? extends WorkItemHandler> originalTaskHandlerClass, int logLimit) { super(originalTaskHandlerClass); initializeExceptionInfoList(logLimit); }
@Override public synchronized void handleAbortException(Throwable cause, WorkItem workItem, WorkItemManager manager) { if (exceptionInfoList.size() == this.loggedExceptionsLimit) { exceptionInfoList.poll(); } exceptionInfoList.add(new WorkItemExceptionInfo(workItem, cause, false)); logMessage(false, workItem, cause); }
public synchronized void setLoggedExceptionInfoListSize(int loggedExceptionInfoListSize) { initializeExceptionInfoList(loggedExceptionInfoListSize); }