diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/MultiResourceItemReader.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/MultiResourceItemReader.java index 0aef44662..ab30e6956 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/MultiResourceItemReader.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/MultiResourceItemReader.java @@ -6,14 +6,11 @@ import java.util.List; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.util.Assert; /** * Reads items from multiple resources sequentially - resource list is given by - * {@link #setResourcePatternResolver(ResourcePatternResolver)}, the actual - * reading is delegated to + * {@link #setResources(Resource[])}, the actual reading is delegated to * {@link #setDelegate(ResourceAwareItemReaderItemStream)}. * * Reset (rollback) capability is implemented by item buffering. @@ -27,10 +24,6 @@ public class MultiResourceItemReader extends ExecutionContextUserSupport impleme private ResourceAwareItemReaderItemStream delegate; - private ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); - - private String resourceLocationPattern; - private Resource[] resources; private int currentResourceIndex; @@ -117,12 +110,6 @@ public class MultiResourceItemReader extends ExecutionContextUserSupport impleme * delegate. */ public void open(ExecutionContext executionContext) throws ItemStreamException { - try { - resources = resourcePatternResolver.getResources(resourceLocationPattern); - } - catch (Exception e) { - throw new ItemStreamException("Couldn't get resource", e); - } if (executionContext.containsKey(getKey(RESOURCE_INDEX))) { int index = Long.valueOf(executionContext.getLong(getKey(RESOURCE_INDEX))).intValue(); @@ -149,26 +136,15 @@ public class MultiResourceItemReader extends ExecutionContextUserSupport impleme this.delegate = delegate; } - /** - * @param resourcePatternResolver provides the list of input - * {@link Resource}s given {@link #setResourceLocationPattern(String)}. - * {@link PathMatchingResourcePatternResolver} is used by default. - */ - public void setResourcePatternResolver(ResourcePatternResolver resourcePatternResolver) { - this.resourcePatternResolver = resourcePatternResolver; - } - - /** - * @param resourceLocationPattern identifies the input {@link Resource}s, - * parsed by {@link #setResourcePatternResolver(ResourcePatternResolver)} - */ - public void setResourceLocationPattern(String resourceLocationPattern) { - this.resourceLocationPattern = resourceLocationPattern; - } - public void afterPropertiesSet() throws Exception { - Assert.notNull(resourcePatternResolver, "resourcePatternResolver property must be set"); - Assert.hasLength(resourceLocationPattern, "resourceLocationPattern property must be set"); + Assert.notEmpty(resources, "There must be at least one input resource"); + } + + /** + * @param resources input resources + */ + public void setResources(Resource[] resources) { + this.resources = resources; } } diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderIntegrationTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderIntegrationTests.java index 82349030c..f9ad85bf9 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderIntegrationTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/item/MultiResourceItemReaderIntegrationTests.java @@ -2,21 +2,17 @@ package org.springframework.batch.item; import junit.framework.TestCase; -import org.easymock.MockControl; import org.springframework.batch.item.file.FlatFileItemReader; import org.springframework.batch.item.file.mapping.FieldSet; import org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; -import org.springframework.core.io.support.ResourcePatternResolver; /** * Tests for {@link MultiResourceItemReader}. */ public class MultiResourceItemReaderIntegrationTests extends TestCase { - private static final String PATTERN = "resource location pattern"; - private MultiResourceItemReader tested = new MultiResourceItemReader(); private FlatFileItemReader itemReader = new FlatFileItemReader(); @@ -39,17 +35,10 @@ public class MultiResourceItemReaderIntegrationTests extends TestCase { */ protected void setUp() throws Exception { - MockControl control = MockControl.createStrictControl(ResourcePatternResolver.class); - ResourcePatternResolver resolver = (ResourcePatternResolver) control.getMock(); - resolver.getResources(PATTERN); - control.setReturnValue(new Resource[] { r1, r2, r3, r4, r5 }, 2); - control.replay(); - itemReader.setFieldSetMapper(new PassThroughFieldSetMapper()); - tested.setResourcePatternResolver(resolver); tested.setDelegate(itemReader); - tested.setResourceLocationPattern(PATTERN); + tested.setResources(new Resource[] { r1, r2, r3, r4, r5 }); tested.afterPropertiesSet(); }