From 6cf8a58f2646e72d631b68c22664c29646f2e97b Mon Sep 17 00:00:00 2001 From: lucasward Date: Thu, 14 Aug 2008 15:32:34 +0000 Subject: [PATCH] BATCH-734:Merged fixes into 1.1 branch. --- .../batch/item/file/FlatFileItemReader.java | 2 +- .../batch/item/file/FlatFileItemWriter.java | 3 ++- .../item/file/MultiResourceItemReader.java | 11 +++----- .../batch/item/xml/StaxEventItemReader.java | 2 +- .../batch/item/xml/StaxEventItemWriter.java | 3 ++- .../file/FlatFileItemReaderBasicTests.java | 20 +++++++++++++++ .../MultiResourceItemReaderFlatFileTests.java | 2 -- ...ltiResourceItemReaderIntegrationTests.java | 25 ++++++++++++++++++- .../file/MultiResourceItemReaderXmlTests.java | 2 -- .../item/xml/StaxEventItemReaderTests.java | 7 +----- 10 files changed, 55 insertions(+), 22 deletions(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java index f293df03d..3d4ad822b 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemReader.java @@ -206,7 +206,6 @@ public class FlatFileItemReader extends AbstractBufferedItemReaderItemStream imp } public void afterPropertiesSet() throws Exception { - Assert.notNull(resource, "Input resource must not be null"); Assert.notNull(fieldSetMapper, "FieldSetMapper must not be null."); } @@ -223,6 +222,7 @@ public class FlatFileItemReader extends AbstractBufferedItemReaderItemStream imp } protected void doOpen() throws Exception { + Assert.notNull(resource, "Input Resource must not be null"); Assert.state(resource.exists(), "Resource must exist: [" + resource + "]"); log.debug("Opening flat file for reading: " + resource); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemWriter.java index 71b11f5eb..13f614c1a 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/FlatFileItemWriter.java @@ -109,7 +109,6 @@ public class FlatFileItemWriter extends ExecutionContextUserSupport implements I * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ public void afterPropertiesSet() throws Exception { - Assert.notNull(resource, "The resource must be set"); Assert.notNull(fieldSetCreator, "A FieldSetCreator must be provided."); } @@ -238,6 +237,8 @@ public class FlatFileItemWriter extends ExecutionContextUserSupport implements I */ public void open(ExecutionContext executionContext) throws ItemStreamException { + Assert.notNull(resource, "The resource must be set"); + if(!getOutputState().isInitialized()){ doOpen(executionContext); } diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/MultiResourceItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/MultiResourceItemReader.java index 602a89478..c6e8e08ed 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/MultiResourceItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/MultiResourceItemReader.java @@ -16,7 +16,6 @@ import org.springframework.batch.item.ParseException; import org.springframework.batch.item.ResetFailedException; import org.springframework.batch.item.UnexpectedInputException; import org.springframework.batch.item.util.ExecutionContextUserSupport; -import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -34,8 +33,7 @@ import org.springframework.util.ClassUtils; * * @author Robert Kasanicky */ -public class MultiResourceItemReader extends ExecutionContextUserSupport implements ItemReader, ItemStream, - InitializingBean { +public class MultiResourceItemReader extends ExecutionContextUserSupport implements ItemReader, ItemStream { /** * Unique object instance that marks resource boundaries in the item buffer @@ -199,6 +197,9 @@ public class MultiResourceItemReader extends ExecutionContextUserSupport impleme */ public void open(ExecutionContext executionContext) throws ItemStreamException { + Assert.notEmpty(resources, "There must be at least one input resource"); + Assert.notNull(delegate, "Delegate must not be null"); + Arrays.sort(resources, comparator); index.open(executionContext); @@ -234,10 +235,6 @@ public class MultiResourceItemReader extends ExecutionContextUserSupport impleme this.delegate = delegate; } - public void afterPropertiesSet() throws Exception { - Assert.notEmpty(resources, "There must be at least one input resource"); - } - /** * Set the boolean indicating whether or not state should be saved in the * provided {@link ExecutionContext} during the {@link ItemStream} call to diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemReader.java index 58510eaf3..b9827e751 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemReader.java @@ -79,7 +79,6 @@ public class StaxEventItemReader extends AbstractBufferedItemReaderItemStream im * @throws IllegalStateException if the Resource does not exist. */ public void afterPropertiesSet() throws Exception { - Assert.notNull(resource, "The Resource must not be null."); Assert.notNull(eventReaderDeserializer, "The FragmentDeserializer must not be null."); Assert.hasLength(fragmentRootElementName, "The FragmentRootElementName must not be null"); } @@ -135,6 +134,7 @@ public class StaxEventItemReader extends AbstractBufferedItemReaderItemStream im } protected void doOpen() throws Exception { + Assert.notNull(resource, "The Resource must not be null."); Assert.state(resource.exists(), "Input resource does not exist: [" + resource + "]"); inputStream = resource.getInputStream(); diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java index 7e5cb47fd..87db8d648 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/xml/StaxEventItemWriter.java @@ -244,7 +244,6 @@ public class StaxEventItemWriter extends ExecutionContextUserSupport implements * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() */ public void afterPropertiesSet() throws Exception { - Assert.notNull(resource); Assert.notNull(serializer); } @@ -255,6 +254,8 @@ public class StaxEventItemWriter extends ExecutionContextUserSupport implements */ public void open(ExecutionContext executionContext) { + Assert.notNull(resource); + long startAtPosition = 0; // if restart data is provided, restart from provided offset diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java index 508794eb0..7b61c7b24 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/FlatFileItemReaderBasicTests.java @@ -152,6 +152,26 @@ public class FlatFileItemReaderBasicTests extends TestCase { assertTrue(contains(e.getMessage(), "open")); } } + + public void testResourceUnavailableAfterPropertiesSet() throws Exception{ + + itemReader.setResource(null); + itemReader.afterPropertiesSet(); + //no exception should be thrown + } + + public void testNullResourceInOpen() throws Exception{ + + itemReader.setResource(null); + try{ + itemReader.open(new ExecutionContext()); + fail(); + } + catch(Exception ex){ + //expected + } + } + public void testCloseBeforeOpen() throws Exception { itemReader = new FlatFileItemReader(); diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderFlatFileTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderFlatFileTests.java index 4eacb0c18..7d1cac456 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderFlatFileTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderFlatFileTests.java @@ -43,7 +43,6 @@ public class MultiResourceItemReaderFlatFileTests extends } }); - multiReader.afterPropertiesSet(); return multiReader; } @@ -53,7 +52,6 @@ public class MultiResourceItemReaderFlatFileTests extends multiReader.close(new ExecutionContext()); multiReader.setResources(new Resource[] { new ByteArrayResource("" .getBytes()) }); - multiReader.afterPropertiesSet(); multiReader.open(new ExecutionContext()); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderIntegrationTests.java index af66fcd4b..634a10af9 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderIntegrationTests.java @@ -45,7 +45,6 @@ public class MultiResourceItemReaderIntegrationTests extends TestCase { return 0; // do not change ordering }}); tested.setResources(new Resource[] { r1, r2, r3, r4, r5 }); - tested.afterPropertiesSet(); } /** @@ -182,5 +181,29 @@ public class MultiResourceItemReaderIntegrationTests extends TestCase { return result == null ? null : ((FieldSet) result).readString(0); } + + public void testNullResourceInOpen() throws Exception{ + + tested.setResources(null); + try{ + tested.open(new ExecutionContext()); + fail(); + } + catch(Exception ex){ + //expected + } + } + + public void testNullDelegateInOpen() throws Exception{ + + tested.setDelegate(null); + try{ + tested.open(new ExecutionContext()); + fail(); + } + catch(Exception ex){ + //expected + } + } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderXmlTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderXmlTests.java index 5a34f4ff2..a3e87c54a 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderXmlTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/file/MultiResourceItemReaderXmlTests.java @@ -56,7 +56,6 @@ public class MultiResourceItemReaderXmlTests extends CommonItemStreamItemReaderT return 0; // preserve original ordering } }); - multiReader.afterPropertiesSet(); return multiReader; } @@ -66,7 +65,6 @@ public class MultiResourceItemReaderXmlTests extends CommonItemStreamItemReaderT multiReader.close(new ExecutionContext()); multiReader.setResources(new Resource[] { new ByteArrayResource("" .getBytes()) }); - multiReader.afterPropertiesSet(); multiReader.open(new ExecutionContext()); } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemReaderTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemReaderTests.java index 5664da8bf..0ae79b743 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemReaderTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/xml/StaxEventItemReaderTests.java @@ -51,12 +51,7 @@ public class StaxEventItemReaderTests extends TestCase { public void testAfterPropertesSetException() throws Exception { source.setResource(null); - try { - source.afterPropertiesSet(); - fail(); - } catch (IllegalArgumentException e) { - // expected; - } + source.afterPropertiesSet(); source = createNewInputSouce(); source.setFragmentRootElementName("");