Example usage for org.springframework.batch.core.step.factory FaultTolerantStepFactoryBean FaultTolerantStepFactoryBean

List of usage examples for org.springframework.batch.core.step.factory FaultTolerantStepFactoryBean FaultTolerantStepFactoryBean

Introduction

In this page you can find the example usage for org.springframework.batch.core.step.factory FaultTolerantStepFactoryBean FaultTolerantStepFactoryBean.

Prototype

FaultTolerantStepFactoryBean

Source Link

Usage

From source file:org.springframework.batch.core.step.item.FaultTolerantStepFactoryBeanRetryTests.java

@SuppressWarnings("unchecked")
@Before/*w ww .  j  ava2s  . c  o m*/
public void setUp() throws Exception {

    factory = new FaultTolerantStepFactoryBean<String, String>();
    factory.setBeanName("step");

    factory.setItemReader(new ListItemReader<String>(new ArrayList<String>()));
    factory.setItemWriter(writer);
    factory.setJobRepository(repository);
    factory.setTransactionManager(new ResourcelessTransactionManager());
    factory.setRetryableExceptionClasses(getExceptionMap(Exception.class));
    factory.setCommitInterval(1); // trivial by default

    factory.setSkippableExceptionClasses(getExceptionMap(Exception.class));

    JobParameters jobParameters = new JobParametersBuilder().addString("statefulTest", "make_this_unique")
            .toJobParameters();
    jobExecution = repository.createJobExecution("job", jobParameters);
    jobExecution.setEndTime(new Date());

}

From source file:org.springframework.batch.core.step.item.FaultTolerantStepFactoryBeanRetryTests.java

@Test
public void testProcessAllItemsWhenErrorInWriterTransformationWhenReaderTransactional() throws Exception {
    final int RETRY_LIMIT = 3;
    final List<String> ITEM_LIST = TransactionAwareProxyFactory
            .createTransactionalList(Arrays.asList("1", "2", "3"));
    FaultTolerantStepFactoryBean<String, Integer> factory = new FaultTolerantStepFactoryBean<String, Integer>();
    factory.setBeanName("step");

    factory.setJobRepository(repository);
    factory.setTransactionManager(new ResourcelessTransactionManager());
    ItemWriter<Integer> failingWriter = new ItemWriter<Integer>() {
        @Override//from   w w w  .j a  v  a 2s . c om
        public void write(List<? extends Integer> data) throws Exception {
            int count = 0;
            for (Integer item : data) {
                if (count++ == 2) {
                    throw new Exception("Planned failure in writer");
                }
                written.add(item);
            }
        }
    };

    ItemProcessor<String, Integer> processor = new ItemProcessor<String, Integer>() {
        @Override
        public Integer process(String item) throws Exception {
            processed.add(item);
            return Integer.parseInt(item);
        }
    };
    ItemReader<String> reader = new ListItemReader<String>(
            TransactionAwareProxyFactory.createTransactionalList(ITEM_LIST));
    factory.setCommitInterval(3);
    factory.setRetryLimit(RETRY_LIMIT);
    factory.setSkipLimit(1);
    factory.setIsReaderTransactionalQueue(true);
    @SuppressWarnings("unchecked")
    Map<Class<? extends Throwable>, Boolean> exceptionMap = getExceptionMap(Exception.class);
    factory.setSkippableExceptionClasses(exceptionMap);
    factory.setRetryableExceptionClasses(exceptionMap);
    factory.setItemReader(reader);
    factory.setItemProcessor(processor);
    factory.setItemWriter(failingWriter);
    Step step = factory.getObject();

    StepExecution stepExecution = new StepExecution(step.getName(), jobExecution);
    repository.add(stepExecution);
    step.execute(stepExecution);
    /*
     * Each chunk tried up to RETRY_LIMIT, then the scan processes each item
     * once, identifying the skip as it goes
     */
    assertEquals((RETRY_LIMIT + 1) * ITEM_LIST.size(), processed.size());
}

From source file:org.springframework.batch.core.step.item.FaultTolerantStepFactoryBeanRollbackTests.java

@SuppressWarnings("unchecked")
@Before/*from   www. j  av  a  2s.  c  om*/
public void setUp() throws Exception {
    reader = new SkipReaderStub<String>();
    processor = new SkipProcessorStub<String>();
    writer = new SkipWriterStub<String>();

    factory = new FaultTolerantStepFactoryBean<String, String>();

    factory.setBeanName("stepName");
    ResourcelessTransactionManager transactionManager = new ResourcelessTransactionManager();
    factory.setTransactionManager(transactionManager);
    factory.setCommitInterval(2);

    reader.clear();
    reader.setItems("1", "2", "3", "4", "5");
    factory.setItemReader(reader);
    processor.clear();
    factory.setItemProcessor(processor);
    writer.clear();
    factory.setItemWriter(writer);

    factory.setSkipLimit(2);

    factory.setSkippableExceptionClasses(getExceptionMap(Exception.class));

    MapJobRepositoryFactoryBean repositoryFactory = new MapJobRepositoryFactoryBean();
    repositoryFactory.setTransactionManager(transactionManager);
    repositoryFactory.afterPropertiesSet();
    repository = repositoryFactory.getObject();
    factory.setJobRepository(repository);

    jobExecution = repository.createJobExecution("skipJob", new JobParameters());
    stepExecution = jobExecution.createStepExecution(factory.getName());
    repository.add(stepExecution);
}

From source file:org.springframework.batch.core.step.item.FaultTolerantStepFactoryBeanTests.java

@SuppressWarnings("unchecked")
@Before//ww  w. j av a 2  s.c  o  m
public void setUp() throws Exception {
    factory = new FaultTolerantStepFactoryBean<String, String>();

    factory.setBeanName("stepName");
    factory.setTransactionManager(new ResourcelessTransactionManager());
    factory.setCommitInterval(2);

    reader.clear();
    reader.setItems("1", "2", "3", "4", "5");
    factory.setItemReader(reader);
    processor.clear();
    factory.setItemProcessor(processor);
    writer.clear();
    factory.setItemWriter(writer);

    factory.setSkipLimit(2);

    factory.setSkippableExceptionClasses(
            getExceptionMap(SkippableException.class, SkippableRuntimeException.class));

    MapJobRepositoryFactoryBean repositoryFactory = new MapJobRepositoryFactoryBean();
    repositoryFactory.afterPropertiesSet();
    repository = repositoryFactory.getObject();
    factory.setJobRepository(repository);

    jobExecution = repository.createJobExecution("skipJob", new JobParameters());
    stepExecution = jobExecution.createStepExecution(factory.getName());
    repository.add(stepExecution);
}

From source file:org.springframework.batch.core.step.item.FaultTolerantStepFactoryBeanUnexpectedRollbackTests.java

@Test
@Ignore //FIXME/*from   w  ww .  jav  a2s  .  c om*/
public void testTransactionException() throws Exception {

    final SkipWriterStub<String> writer = new SkipWriterStub<String>();
    FaultTolerantStepFactoryBean<String, String> factory = new FaultTolerantStepFactoryBean<String, String>();
    factory.setItemWriter(writer);

    @SuppressWarnings("serial")
    DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(dataSource) {
        private boolean failed = false;

        @Override
        protected void doCommit(DefaultTransactionStatus status) throws TransactionException {
            if (writer.getWritten().isEmpty() || failed || !isExistingTransaction(status.getTransaction())) {
                super.doCommit(status);
                return;
            }
            failed = true;
            status.setRollbackOnly();
            super.doRollback(status);
            throw new UnexpectedRollbackException("Planned");
        }
    };

    factory.setBeanName("stepName");
    factory.setTransactionManager(transactionManager);
    factory.setCommitInterval(2);

    ItemReader<String> reader = new ListItemReader<String>(Arrays.asList("1", "2"));
    factory.setItemReader(reader);

    JobRepositoryFactoryBean repositoryFactory = new JobRepositoryFactoryBean();
    repositoryFactory.setDataSource(dataSource);
    repositoryFactory.setTransactionManager(transactionManager);
    repositoryFactory.afterPropertiesSet();
    JobRepository repository = repositoryFactory.getObject();
    factory.setJobRepository(repository);

    JobExecution jobExecution = repository.createJobExecution("job", new JobParameters());
    StepExecution stepExecution = jobExecution.createStepExecution(factory.getName());
    repository.add(stepExecution);

    Step step = factory.getObject();

    step.execute(stepExecution);
    assertEquals(BatchStatus.FAILED, stepExecution.getStatus());

    assertEquals("[]", writer.getCommitted().toString());
}

From source file:org.springframework.batch.core.test.step.FaultTolerantStepFactoryBeanIntegrationTests.java

@Before
public void setUp() throws Exception {

    writer = new SkipWriterStub(dataSource);
    processor = new SkipProcessorStub(dataSource);

    factory = new FaultTolerantStepFactoryBean<String, String>();

    factory.setBeanName("stepName");
    factory.setTransactionManager(transactionManager);
    factory.setJobRepository(repository);
    factory.setCommitInterval(3);/*from w w w . jav  a  2 s. co m*/
    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
    taskExecutor.setCorePoolSize(3);
    taskExecutor.setMaxPoolSize(6);
    taskExecutor.setQueueCapacity(0);
    taskExecutor.afterPropertiesSet();
    factory.setTaskExecutor(taskExecutor);

    JdbcTestUtils.deleteFromTables(new JdbcTemplate(dataSource), "ERROR_LOG");

}

From source file:org.springframework.batch.core.test.step.FaultTolerantStepFactoryBeanRollbackIntegrationTests.java

@Before
public void setUp() throws Exception {

    writer = new SkipWriterStub(dataSource);
    processor = new SkipProcessorStub(dataSource);

    factory = new FaultTolerantStepFactoryBean<String, String>();

    factory.setBeanName("stepName");
    factory.setTransactionManager(transactionManager);
    factory.setJobRepository(repository);
    factory.setCommitInterval(3);//from ww  w .  j  av  a  2s . c  o m
    factory.setSkipLimit(10);

    JdbcTestUtils.deleteFromTables(new JdbcTemplate(dataSource), "ERROR_LOG");

}

From source file:org.springframework.batch.core.test.step.MapRepositoryFaultTolerantStepFactoryBeanRollbackTests.java

@SuppressWarnings("unchecked")
@Before//w  w w .j av  a2 s.c  o  m
public void setUp() throws Exception {

    reader = new SkipReaderStub();
    writer = new SkipWriterStub();
    processor = new SkipProcessorStub();

    factory = new FaultTolerantStepFactoryBean<String, String>();

    factory.setTransactionManager(transactionManager);
    factory.setBeanName("stepName");
    factory.setCommitInterval(3);
    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
    taskExecutor.setCorePoolSize(3);
    taskExecutor.setMaxPoolSize(6);
    taskExecutor.setQueueCapacity(0);
    taskExecutor.afterPropertiesSet();
    factory.setTaskExecutor(taskExecutor);

    factory.setSkipLimit(10);
    factory.setSkippableExceptionClasses(getExceptionMap(Exception.class));

}

From source file:org.springframework.batch.core.test.step.MapRepositoryFaultTolerantStepFactoryBeanTests.java

@Before
public void setUp() throws Exception {

    reader = new SkipReaderStub();
    writer = new SkipWriterStub();
    processor = new SkipProcessorStub();

    factory = new FaultTolerantStepFactoryBean<String, String>();

    factory.setBeanName("stepName");
    factory.setTransactionManager(transactionManager);
    factory.setCommitInterval(3);/*from w  ww. ja  v a  2s .  co  m*/
    ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
    taskExecutor.setCorePoolSize(3);
    taskExecutor.setMaxPoolSize(6);
    taskExecutor.setQueueCapacity(0);
    taskExecutor.afterPropertiesSet();
    factory.setTaskExecutor(taskExecutor);

}