@Override protected Tasklet createTasklet() { Assert.state(reader != null, "ItemReader must be provided"); Assert.state(writer != null, "ItemWriter must be provided"); RepeatOperations repeatOperations = createChunkOperations(); SimpleChunkProvider<I> chunkProvider = new SimpleChunkProvider<>(getReader(), repeatOperations); SimpleChunkProcessor<I, O> chunkProcessor = new SimpleChunkProcessor<>(getProcessor(), getWriter()); chunkProvider.setListeners(new ArrayList<>(itemListeners)); chunkProcessor.setListeners(new ArrayList<>(itemListeners)); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!readerTransactionalQueue); return tasklet; }
@Test public void testFail() throws Exception { ChunkOrientedTasklet<String> handler = new ChunkOrientedTasklet<>(new ChunkProvider<String>() { @Override public Chunk<String> provide(StepContribution contribution) throws Exception { throw new RuntimeException("Foo!"); } @Override public void postProcess(StepContribution contribution, Chunk<String> chunk) {} }, new ChunkProcessor<String>() { @Override public void process(StepContribution contribution, Chunk<String> chunk) { fail("Not expecting to get this far"); } }); StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( 123L, "job"), new JobParameters()))); try { handler.execute(contribution, context); fail("Expected RuntimeException"); } catch (RuntimeException e) { assertEquals("Foo!", e.getMessage()); } assertEquals(0, contribution.getReadCount()); }
@Test public void testExitCode() throws Exception { ChunkOrientedTasklet<String> handler = new ChunkOrientedTasklet<>(new ChunkProvider<String>() { @Override public Chunk<String> provide(StepContribution contribution) throws Exception { contribution.incrementReadCount(); Chunk<String> chunk = new Chunk<>(); chunk.add("foo"); chunk.setEnd(); return chunk; } @Override public void postProcess(StepContribution contribution, Chunk<String> chunk) {} }, new ChunkProcessor<String>() { @Override public void process(StepContribution contribution, Chunk<String> chunk) { contribution.incrementWriteCount(1); } }); StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( 123L, "job"), new JobParameters()))); ExitStatus expected = contribution.getExitStatus(); handler.execute(contribution, context); // The tasklet does not change the exit code assertEquals(expected, contribution.getExitStatus()); }
/** * Create a new chunk oriented tasklet with reader, writer and processor as provided. * * @see org.springframework.batch.core.step.builder.SimpleStepBuilder#createTasklet() */ @Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getWriter() != null, "ItemWriter must be provided"); addSpecialExceptions(); registerSkipListeners(); ChunkProvider<I> chunkProvider = createChunkProvider(); ChunkProcessor<I> chunkProcessor = createChunkProcessor(); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
@Test public void testHandle() throws Exception { ChunkOrientedTasklet<String> handler = new ChunkOrientedTasklet<>(new ChunkProvider<String>() { @Override public Chunk<String> provide(StepContribution contribution) throws Exception { contribution.incrementReadCount(); Chunk<String> chunk = new Chunk<>(); chunk.add("foo"); return chunk; } @Override public void postProcess(StepContribution contribution, Chunk<String> chunk) {} }, new ChunkProcessor<String>() { @Override public void process(StepContribution contribution, Chunk<String> chunk) { contribution.incrementWriteCount(1); } }); StepContribution contribution = new StepContribution(new StepExecution("foo", new JobExecution(new JobInstance( 123L, "job"),new JobParameters()))); handler.execute(contribution, context); assertEquals(1, contribution.getReadCount()); assertEquals(1, contribution.getWriteCount()); assertEquals(0, context.attributeNames().length); }
@Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getProcessor() != null || getWriter() != null, "ItemWriter or ItemProcessor must be provided"); RepeatOperations repeatOperations = createRepeatOperations(); ChunkProvider<I> chunkProvider = new JsrChunkProvider<>(); JsrChunkProcessor<I, O> chunkProcessor = new JsrChunkProcessor<>(getReader(), getProcessor(), getWriter(), repeatOperations); chunkProcessor.setListeners(new ArrayList<>(getItemListeners())); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
@Override protected Tasklet createTasklet() { Assert.state(reader != null, "ItemReader must be provided"); Assert.state(processor != null || writer != null, "ItemWriter or ItemProcessor must be provided"); RepeatOperations repeatOperations = createChunkOperations(); SimpleChunkProvider<I> chunkProvider = new SimpleChunkProvider<I>(reader, repeatOperations); SimpleChunkProcessor<I, O> chunkProcessor = new SimpleChunkProcessor<I, O>(processor, writer); chunkProvider.setListeners(new ArrayList<StepListener>(itemListeners)); chunkProcessor.setListeners(new ArrayList<StepListener>(itemListeners)); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<I>(chunkProvider, chunkProcessor); tasklet.setBuffering(!readerTransactionalQueue); return tasklet; }
@Override protected Tasklet createTasklet() { Assert.state(reader != null, "ItemReader must be provided"); Assert.state(writer != null, "ItemWriter must be provided"); RepeatOperations repeatOperations = createChunkOperations(); SimpleChunkProvider<I> chunkProvider = new SimpleChunkProvider<>(getReader(), repeatOperations); SimpleChunkProcessor<I, O> chunkProcessor = new SimpleChunkProcessor<>(getProcessor(), getWriter()); chunkProvider.setListeners(new ArrayList<>(itemListeners)); chunkProcessor.setListeners(new ArrayList<>(itemListeners)); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!readerTransactionalQueue); return tasklet; }
@Override protected Tasklet createTasklet() { Assert.state(reader != null, "ItemReader must be provided"); Assert.state(writer != null, "ItemWriter must be provided"); RepeatOperations repeatOperations = createChunkOperations(); SimpleChunkProvider<I> chunkProvider = new SimpleChunkProvider<>(getReader(), repeatOperations); SimpleChunkProcessor<I, O> chunkProcessor = new SimpleChunkProcessor<>(getProcessor(), getWriter()); chunkProvider.setListeners(new ArrayList<>(itemListeners)); chunkProcessor.setListeners(new ArrayList<>(itemListeners)); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!readerTransactionalQueue); return tasklet; }
/** * Create a new chunk oriented tasklet with reader, writer and processor as provided. * * @see org.springframework.batch.core.step.builder.SimpleStepBuilder#createTasklet() */ @Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getWriter() != null, "ItemWriter must be provided"); addSpecialExceptions(); registerSkipListeners(); ChunkProvider<I> chunkProvider = createChunkProvider(); ChunkProcessor<I> chunkProcessor = createChunkProcessor(); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
/** * Create a new chunk oriented tasklet with reader, writer and processor as provided. * * @see org.springframework.batch.core.step.builder.SimpleStepBuilder#createTasklet() */ @Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getWriter() != null, "ItemWriter must be provided"); addSpecialExceptions(); registerSkipListeners(); ChunkProvider<I> chunkProvider = createChunkProvider(); ChunkProcessor<I> chunkProcessor = createChunkProcessor(); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
/** * Create a new chunk oriented tasklet with reader, writer and processor as provided. * * @see org.springframework.batch.core.step.builder.SimpleStepBuilder#createTasklet() */ @Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getProcessor() != null || getWriter() != null, "ItemWriter or ItemProcessor must be provided"); addSpecialExceptions(); registerSkipListeners(); ChunkProvider<I> chunkProvider = createChunkProvider(); ChunkProcessor<I> chunkProcessor = createChunkProcessor(); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<I>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
@Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getProcessor() != null || getWriter() != null, "ItemWriter or ItemProcessor must be provided"); RepeatOperations repeatOperations = createRepeatOperations(); ChunkProvider<I> chunkProvider = new JsrChunkProvider<I>(); JsrChunkProcessor<I, O> chunkProcessor = new JsrChunkProcessor<I, O>(getReader(), getProcessor(), getWriter(), repeatOperations); chunkProcessor.setListeners(new ArrayList<StepListener>(getItemListeners())); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<I>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
@Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getProcessor() != null || getWriter() != null, "ItemWriter or ItemProcessor must be provided"); RepeatOperations repeatOperations = createRepeatOperations(); ChunkProvider<I> chunkProvider = new JsrChunkProvider<I>(); JsrChunkProcessor<I, O> chunkProcessor = new JsrChunkProcessor<I, O>(getReader(), getProcessor(), getWriter(), repeatOperations); chunkProcessor.setListeners(new ArrayList<StepListener>(getItemListeners())); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<I>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
@Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); Assert.state(getProcessor() != null || getWriter() != null, "ItemWriter or ItemProcessor must be provided"); RepeatOperations repeatOperations = createRepeatOperations(); ChunkProvider<I> chunkProvider = new JsrChunkProvider<I>(); JsrChunkProcessor<I, O> chunkProcessor = new JsrChunkProcessor<I, O>(getReader(), getProcessor(), getWriter(), repeatOperations); chunkProcessor.setListeners(new ArrayList<StepListener>(getItemListeners())); ChunkOrientedTasklet<I> tasklet = new ChunkOrientedTasklet<I>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue()); return tasklet; }
final ChunkOrientedTasklet newTasklet = new ChunkOrientedTasklet(newChunkProvider, chunkProcessor); newTasklet.setBuffering(buffering);
registerStreams(step, itemReader, itemProcessor, itemWriter); ChunkOrientedTasklet<T> tasklet = new ChunkOrientedTasklet<T>(chunkProvider, chunkProcessor); tasklet.setBuffering(!isReaderTransactionalQueue());