diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/FaultTolerantStepBuilder.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/FaultTolerantStepBuilder.java index cfe440fa05..8066943aef 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/FaultTolerantStepBuilder.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/FaultTolerantStepBuilder.java @@ -178,7 +178,7 @@ protected void registerStepListenerAsSkipListener() { @Override protected Tasklet createTasklet() { Assert.state(getReader() != null, "ItemReader must be provided"); - Assert.state(getProcessor() != null || getWriter() != null, "ItemWriter or ItemProcessor must be provided"); + Assert.state(getWriter() != null, "ItemWriter must be provided"); addSpecialExceptions(); registerSkipListeners(); ChunkProvider chunkProvider = createChunkProvider(); @@ -772,6 +772,6 @@ public boolean equals(Object obj) { } return chunkListener.equals(obj); } - + } } diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/SimpleStepBuilder.java b/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/SimpleStepBuilder.java index f25f454d9d..ca2a8ee433 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/SimpleStepBuilder.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/step/builder/SimpleStepBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2014 the original author or authors. + * Copyright 2006-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -156,7 +156,7 @@ private void checkAndAddItemListener(StepListener stepListener) { @Override protected Tasklet createTasklet() { Assert.state(reader != null, "ItemReader must be provided"); - Assert.state(processor != null || writer != null, "ItemWriter or ItemProcessor must be provided"); + Assert.state(writer != null, "ItemWriter must be provided"); RepeatOperations repeatOperations = createChunkOperations(); SimpleChunkProvider chunkProvider = new SimpleChunkProvider<>(getReader(), repeatOperations); SimpleChunkProcessor chunkProcessor = new SimpleChunkProcessor<>(getProcessor(), getWriter()); diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java index 1c1da512df..4e8b12d585 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/FaultTolerantStepFactoryBeanTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2008-2014 the original author or authors. + * Copyright 2008-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -372,30 +372,6 @@ public void testProcessFilter() throws Exception { .getName())); } - @Test - public void testNullWriter() throws Exception { - - factory.setItemWriter(null); - Step step = factory.getObject(); - - step.execute(stepExecution); - - assertEquals(0, stepExecution.getSkipCount()); - assertEquals(0, stepExecution.getReadSkipCount()); - assertEquals(5, stepExecution.getReadCount()); - // Write count is incremented even if nothing happens - assertEquals(5, stepExecution.getWriteCount()); - assertEquals(0, stepExecution.getFilterCount()); - assertEquals(0, stepExecution.getRollbackCount()); - - // writer skips "4" - assertTrue(reader.getRead().contains("4")); - - assertEquals(BatchStatus.COMPLETED, stepExecution.getStatus()); - assertStepExecutionsAreEqual(stepExecution, repository.getLastStepExecution(jobExecution.getJobInstance(), step - .getName())); - } - /** * Check items causing errors are skipped as expected. */ diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java index b272df36f6..46e2417711 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/step/item/SimpleStepFactoryBeanTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2013 the original author or authors. + * Copyright 2006-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import java.util.List; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.springframework.batch.core.BatchStatus; import org.springframework.batch.core.ChunkListener; @@ -475,32 +476,6 @@ public void onWriteError(Exception exception, List items) { } - @Test - public void testNullWriter() throws Exception { - - SimpleStepFactoryBean factory = getStepFactory(new String[] { "foo", "bar", "spam" }); - factory.setItemWriter(null); - factory.setItemProcessor(new ItemProcessor() { - @Override - public String process(String item) throws Exception { - written.add(item); - return null; - } - }); - - 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("[foo, bar, spam]", written.toString()); - - } - private SimpleStepFactoryBean getStepFactory(String... args) throws Exception { SimpleStepFactoryBean factory = new SimpleStepFactoryBean();