diff --git a/spring-batch-samples/src/main/resources/data/restartFileSample/input/restartFile.csv b/spring-batch-samples/src/main/resources/data/restartFileSample/input/restartFile.csv new file mode 100644 index 000000000..8be0f6b83 --- /dev/null +++ b/spring-batch-samples/src/main/resources/data/restartFileSample/input/restartFile.csv @@ -0,0 +1,20 @@ +customer1,10 +customer2,20 +customer3,30 +customer4,40 +customer5,50 +customer6,60 +customer7,70 +customer8,80 +customer9,90 +customer10,100 +customer11,110 +customer12,120 +customer13,130 +customer14,140 +customer15,150 +customer16,160 +customer17,170 +customer18,180 +customer19,190 +customer20,200 diff --git a/spring-batch-samples/src/main/resources/jobs/restartFileSampleJob.xml b/spring-batch-samples/src/main/resources/jobs/restartFileSampleJob.xml new file mode 100644 index 000000000..3763743ed --- /dev/null +++ b/spring-batch-samples/src/main/resources/jobs/restartFileSampleJob.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-batch-samples/src/test/java/org/springframework/batch/sample/RestartFileSampleFunctionalTests.java b/spring-batch-samples/src/test/java/org/springframework/batch/sample/RestartFileSampleFunctionalTests.java new file mode 100644 index 000000000..1bf4c259c --- /dev/null +++ b/spring-batch-samples/src/test/java/org/springframework/batch/sample/RestartFileSampleFunctionalTests.java @@ -0,0 +1,78 @@ +/* + * Copyright 2006-2007 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.batch.sample; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.batch.core.BatchStatus; +import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.JobParameters; +import org.springframework.batch.item.file.FlatFileItemWriter; +import org.springframework.batch.sample.domain.trade.CustomerCredit; +import org.springframework.batch.test.AbstractJobTests; +import org.springframework.batch.test.AssertFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @author Dan Garrette + * @since 2.0 + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", "/jobs/restartFileSampleJob.xml" }) +public class RestartFileSampleFunctionalTests extends AbstractJobTests { + + @Autowired + private Resource outputResource; + + @Test + public void runTest() throws Exception { + JobParameters jobParameters = getUniqueJobParameters(); + + JobExecution je1 = this.launchJob(jobParameters); + assertEquals(BatchStatus.FAILED, je1.getStatus()); + AssertFile.assertLineCount(10, outputResource); + + JobExecution je2 = this.launchJob(jobParameters); + assertEquals(BatchStatus.COMPLETED, je2.getStatus()); +// AssertFile.assertLineCount(20, outputResource); + } + + public static class CustomerCreditFlatFileItemWriter extends FlatFileItemWriter { + + private boolean failed = false; + + @Override + public void write(List arg0) throws Exception { + for (CustomerCredit cc : arg0) { + if (!failed && cc.getName().equals("customer13")) { + failed = true; + throw new RuntimeException(); + } + } + super.write(arg0); + } + + } + +} \ No newline at end of file