@Override public void addExitStatus(String code) { exitStatus = exitStatus.and(new ExitStatus(code)); }
@Override public Object invoke(MethodInvocation invocation) throws Throwable { String methodName = invocation.getMethod().getName(); if (ordered && methodName.equals("getOrder")) { return invocation.proceed(); } Set<MethodInvoker> invokers = invokerMap.get(methodName); if (invokers == null) { return null; } ExitStatus status = null; for (MethodInvoker invoker : invokers) { Object retVal = invoker.invokeMethod(invocation.getArguments()); if (retVal instanceof ExitStatus) { if (status != null) { status = status.and((ExitStatus) retVal); } else { status = (ExitStatus) retVal; } } } // The only possible return values are ExitStatus or int (from Ordered) return status; }
@Override public void addExitStatus(String code) { ExitStatus status = new ExitStatus(code); if((exitStatus != null && ExitStatus.isNonDefaultExitStatus(exitStatus)) && !ExitStatus.isNonDefaultExitStatus(status)) { exitStatus = exitStatus.and(status); } }
/** * Determines the {@link ExitStatus} taking into consideration the {@link ExitStatus} from * the {@link StepExecution}, which invoked the {@link JobStep}, and the {@link JobExecution}. * * @param stepExecution the {@link StepExecution} which invoked the {@link JobExecution} * @param jobExecution the {@link JobExecution} * @return the final {@link ExitStatus} */ private ExitStatus determineStepExitStatus(StepExecution stepExecution, JobExecution jobExecution) { ExitStatus exitStatus = stepExecution.getExitStatus() != null ? stepExecution.getExitStatus() : ExitStatus.COMPLETED; return exitStatus.and(jobExecution.getExitStatus()); }
/** * Call the registered listeners in reverse order, respecting and * prioritizing those that implement {@link Ordered}. * @see org.springframework.batch.core.StepExecutionListener#afterStep(StepExecution) */ @Override public ExitStatus afterStep(StepExecution stepExecution) { for (Iterator<StepExecutionListener> iterator = list.reverse(); iterator.hasNext();) { StepExecutionListener listener = iterator.next(); ExitStatus close = listener.afterStep(stepExecution); stepExecution.setExitStatus(stepExecution.getExitStatus().and(close)); } return stepExecution.getExitStatus(); }
@Override public void updateJobExecutionStatus(FlowExecutionStatus status) { execution.setStatus(findBatchStatus(status)); exitStatus = exitStatus.and(new ExitStatus(status.getName())); execution.setExitStatus(exitStatus); }
@Override public void updateJobExecutionStatus(FlowExecutionStatus status) { JobExecution execution = super.getJobExecution(); execution.setStatus(findBatchStatus(status)); ExitStatus curStatus = execution.getExitStatus(); if(ExitStatus.isNonDefaultExitStatus(curStatus)) { exitStatus = exitStatus.and(new ExitStatus(status.getName())); execution.setExitStatus(exitStatus); } else { exitStatus = exitStatus.and(curStatus); execution.setExitStatus(exitStatus); } } }
@Override public ExitStatus afterStep(StepExecution stepExecution) { return new ExitStatus("FOO").and(stepExecution.getExitStatus()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusFailedPlusFinished() { assertEquals("FAILED", ExitStatus.COMPLETED.and(ExitStatus.FAILED).getExitCode()); assertEquals("FAILED", ExitStatus.FAILED.and(ExitStatus.COMPLETED).getExitCode()); }
/** * On successful execution just before a chunk commit, this method should be * called. Synchronizes access to the {@link StepExecution} so that changes * are atomic. * * @param contribution {@link StepContribution} instance used to update the StepExecution state. */ public synchronized void apply(StepContribution contribution) { readSkipCount += contribution.getReadSkipCount(); writeSkipCount += contribution.getWriteSkipCount(); processSkipCount += contribution.getProcessSkipCount(); filterCount += contribution.getFilterCount(); readCount += contribution.getReadCount(); writeCount += contribution.getWriteCount(); exitStatus = exitStatus.and(contribution.getExitStatus()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusStillExecutable() { assertEquals(ExitStatus.EXECUTING.getExitCode(), ExitStatus.EXECUTING.and(ExitStatus.EXECUTING).getExitCode()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusWhenCustomCompletedAddedToCompleted() { assertEquals("COMPLETED_CUSTOM", ExitStatus.COMPLETED.and( ExitStatus.EXECUTING.replaceExitCode("COMPLETED_CUSTOM")).getExitCode()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusWhenCustomContinuableAddedToFinished() { assertEquals("CUSTOM", ExitStatus.COMPLETED.and(ExitStatus.EXECUTING.replaceExitCode("CUSTOM")).getExitCode()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusWhenFinishedAddedToContinuable() { assertEquals(ExitStatus.COMPLETED.getExitCode(), ExitStatus.EXECUTING.and(ExitStatus.COMPLETED).getExitCode()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusWhenContinuableAddedToFinished() { assertEquals(ExitStatus.COMPLETED.getExitCode(), ExitStatus.COMPLETED.and(ExitStatus.EXECUTING).getExitCode()); }
/** * Test method for * {@link org.springframework.batch.core.ExitStatus#and(org.springframework.batch.core.ExitStatus)} * . */ @Test public void testAndExitStatusWhenCustomContinuableAddedToContinuable() { assertEquals("CUSTOM", ExitStatus.EXECUTING.and(ExitStatus.EXECUTING.replaceExitCode("CUSTOM")).getExitCode()); }
ExitStatus newExitStatus = ExitStatus.NOOP.addExitDescription("All steps already completed or no steps configured for this job."); execution.setExitStatus(exitStatus.and(newExitStatus));
@Test public void testAggregateExitStatusSunnyDay() { stepExecution1.setExitStatus(ExitStatus.EXECUTING); stepExecution2.setExitStatus(ExitStatus.FAILED); aggregator.aggregate(result, Arrays.<StepExecution> asList(stepExecution1, stepExecution2)); assertNotNull(result); assertEquals(ExitStatus.FAILED.and(ExitStatus.EXECUTING), result.getExitStatus()); }
/** * Update a StepContribution with all the data from a StepContributionSource. The filter and write counts plus the * exit status will be updated to reflect the data in the source. * * @param contribution the current contribution * @param stepContributionSource a source of StepContributions */ protected void updateStepContribution(StepContribution contribution, StepContributionSource stepContributionSource) { for (StepContribution result : stepContributionSource.getStepContributions()) { contribution.incrementFilterCount(result.getFilterCount()); contribution.incrementWriteCount(result.getWriteCount()); for (int i = 0; i < result.getProcessSkipCount(); i++) { contribution.incrementProcessSkipCount(); } for (int i = 0; i < result.getWriteSkipCount(); i++) { contribution.incrementWriteSkipCount(); } contribution.setExitStatus(contribution.getExitStatus().and(result.getExitStatus())); } }
BatchStatus status = stepExecution.getStatus(); result.setStatus(BatchStatus.max(result.getStatus(), status)); result.setExitStatus(result.getExitStatus().and(stepExecution.getExitStatus())); result.setFilterCount(result.getFilterCount() + stepExecution.getFilterCount()); result.setProcessSkipCount(result.getProcessSkipCount() + stepExecution.getProcessSkipCount());