SimpleJob job = new SimpleJob(); job.setName("TestJob"); job.setJobRepository(this.jobRepository); job.setSteps(stepsToExecute); job.setJobExecutionListeners(new JobExecutionListener[] { new JobExecutionListenerSupport() { @Override public void beforeJob(JobExecution jobExecution) {
public Job build() { if (builder != null) { return builder.end().build(); } SimpleJob job = new SimpleJob(getName()); super.enhance(job); job.setSteps(steps); try { job.afterPropertiesSet(); } catch (Exception e) { throw new JobBuilderException(e); } return job; }
stepExecution = handleStep(step, execution); if (stepExecution.getStatus() != BatchStatus.COMPLETED) {
@Before public void setUp() throws Exception { job.setJobRepository(repository); job.setBeanName("simpleJob"); }
@Test public void testExceptionTerminates() throws Exception { SimpleStepFactoryBean<String, String> factory = getStepFactory(new String[] { "foo", "bar", "spam" }); factory.setBeanName("exceptionStep"); factory.setItemWriter(new ItemWriter<String>() { @Override public void write(List<? extends String> data) throws Exception { throw new RuntimeException("Foo"); } }); AbstractStep step = (AbstractStep) factory.getObject(); job.setSteps(Collections.singletonList((Step) step)); JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters()); job.execute(jobExecution); assertEquals("Foo", jobExecution.getAllFailureExceptions().get(0).getMessage()); assertEquals(BatchStatus.FAILED, jobExecution.getStatus()); }
jobLauncher.afterPropertiesSet(); SimpleJob job = new SimpleJob("job"); TaskletStep step = new TaskletStep("step"); step.setTasklet(new Tasklet() { step.setJobRepository(jobRepository); step.afterPropertiesSet(); job.addStep(step); job.setJobRepository(jobRepository); job.afterPropertiesSet();
private StepExecution getStepExecution(Step step) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException { SimpleJob job = new SimpleJob(); job.setName("job"); JobExecution jobExecution = jobRepository.createJobExecution(job.getName(), new JobParametersBuilder().addLong( "job.counter", jobCounter++).toJobParameters()); StepExecution stepExecution = jobExecution.createStepExecution(step.getName()); jobRepository.add(stepExecution); return stepExecution; }
@Before public void initialize() { this.job = new SimpleJob("simpleJob"); this.jobExplorer = mock(JobExplorer.class); this.jobInstanceList = new ArrayList<>(1); this.jobExecutionList = new ArrayList<>(1); this.parametersBuilder = new JobParametersBuilder(this.jobExplorer); }
@Test public void testSimpleJob() throws Exception { job.setSteps(new ArrayList<>()); AbstractStep step = (AbstractStep) getStepFactory("foo", "bar").getObject(); step.setName("step1"); job.addStep(step); step = (AbstractStep) getStepFactory("spam").getObject(); step.setName("step2"); job.addStep(step); JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters()); job.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); assertEquals(3, written.size()); assertTrue(written.contains("foo")); }
@Test public void testAnnotationBasedChunkListenerForJobStepBuilder() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); StepExecution execution = jobRepository.createJobExecution("foo", new JobParameters()).createStepExecution("step"); jobRepository.add(execution); PlatformTransactionManager transactionManager = new ResourcelessTransactionManager(); SimpleJob job = new SimpleJob("job"); job.setJobRepository(jobRepository); JobStepBuilder builder = new StepBuilder("step") .repository(jobRepository) .transactionManager(transactionManager) .job(job) .listener(new AnnotationBasedChunkListener()); builder.build().execute(execution); assertEquals(BatchStatus.COMPLETED, execution.getStatus()); // it makes no sense to register a ChunkListener on a step which is not of type tasklet, so it should not be invoked assertEquals(0, AnnotationBasedChunkListener.beforeChunkCount); assertEquals(0, AnnotationBasedChunkListener.afterChunkCount); }
@Test public void testFoo() throws Exception { Step testStep1 = buildTestStep("foo"); Step testStep2 = buildTestStep("bar"); Step testStep3 = buildTestStep("baz"); SimpleJob simpleJob = new SimpleJob(); // is a StepLocator simpleJob.addStep(testStep1); simpleJob.addStep(testStep2); simpleJob.addStep(testStep3); StepLocatorStepFactoryBean stepLocatorStepFactoryBean = new StepLocatorStepFactoryBean(); stepLocatorStepFactoryBean.setStepLocator(simpleJob); stepLocatorStepFactoryBean.setStepName("bar"); assertEquals(testStep2, stepLocatorStepFactoryBean.getObject()); }
@Test public void testRunNormallyWithListener() throws Exception { job.setJobExecutionListeners(new JobExecutionListenerSupport[] { new JobExecutionListenerSupport() { @Override public void beforeJob(JobExecution jobExecution) { list.add("before"); } @Override public void afterJob(JobExecution jobExecution) { list.add("after"); } } }); job.execute(jobExecution); assertEquals(4, list.size()); }
@Test public void testRunWithSimpleStepExecutor() throws Exception { job.setJobRepository(jobRepository); // do not set StepExecutorFactory... step1.setStartLimit(5); step2.setStartLimit(5); job.execute(jobExecution); assertEquals(2, list.size()); checkRepository(BatchStatus.COMPLETED, ExitStatus.COMPLETED); }
public void registerListener(final Job job) { if (job != null) { try { if (job instanceof SimpleJob) { final SimpleJob simpleJob = (SimpleJob) job; final JobExecutionListener[] jobExecutionListeners = this.getJobExecutionListeners(); simpleJob.setJobExecutionListeners(jobExecutionListeners); } else if (job instanceof FlowJob) { final FlowJob flowJob = (FlowJob) job; final JobExecutionListener[] jobExecutionListeners = this.getJobExecutionListeners(); flowJob.setJobExecutionListeners(jobExecutionListeners); } else { throw new SpringBatchLightminApplicationException("Could not cast" + job + "to org.springframework.batch.core.job.SimpleJob or " + "org.springframework.batch.core.job.FlowJob"); } } catch (final Exception e) { log.error("Could not cast {} to org.springframework.batch.core.job.SimpleJob or " + "org.springframework.batch.core.job.FlowJob", job); } } else { throw new SpringBatchLightminApplicationException("Could not register listener for a null job"); } }
@Before public void init() throws Exception { JobRepository jobRepository = new MapJobRepositoryFactoryBean().getObject(); job.setJobRepository(jobRepository); execution = jobRepository.createJobExecution("job", new JobParameters()); }
@Test public void testAutoRegisterItemListenersNoDoubleCounting() throws Exception { SimpleStepFactoryBean<String, String> factory = getStepFactory(new String[] { "foo", "bar", "spam" }); final List<String> listenerCalls = new ArrayList<>(); class TestItemListenerWriter implements ItemWriter<String>, ItemWriteListener<String> { @Override public void write(List<? extends String> items) throws Exception { } @Override public void afterWrite(List<? extends String> items) { listenerCalls.add("write"); } @Override public void beforeWrite(List<? extends String> items) { } @Override public void onWriteError(Exception exception, List<? extends String> items) { } } TestItemListenerWriter itemWriter = new TestItemListenerWriter(); factory.setListeners(new StepListener[] { itemWriter }); factory.setItemWriter(itemWriter); Step step = factory.getObject(); job.setSteps(Collections.singletonList(step)); JobExecution jobExecution = repository.createJobExecution(job.getName(), new JobParameters()); job.execute(jobExecution); assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()); assertEquals("[write, write, write]", listenerCalls.toString()); }