RESOLVED - BATCH-832: DefaultTransactionAttribute is inappropriate for TaskletStep
overriden rollbackOn(..) to return true for the default configuration
This commit is contained in:
@@ -253,7 +253,14 @@ public class SimpleStepFactoryBean<T,S> implements FactoryBean, BeanNameAware {
|
||||
* @return the transactionAttribute
|
||||
*/
|
||||
protected TransactionAttribute getTransactionAttribute() {
|
||||
return transactionAttribute!=null?transactionAttribute:new DefaultTransactionAttribute();
|
||||
return transactionAttribute!=null?transactionAttribute:new DefaultTransactionAttribute(){
|
||||
|
||||
@Override
|
||||
public boolean rollbackOn(Throwable ex) {
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -78,7 +78,14 @@ public class TaskletStep extends AbstractStep {
|
||||
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
private TransactionAttribute transactionAttribute = new DefaultTransactionAttribute();
|
||||
private TransactionAttribute transactionAttribute = new DefaultTransactionAttribute(){
|
||||
|
||||
@Override
|
||||
public boolean rollbackOn(Throwable ex) {
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
private Tasklet tasklet;
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.springframework.batch.item.ItemWriter;
|
||||
import org.springframework.batch.item.support.ListItemReader;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
|
||||
import org.springframework.transaction.interceptor.DefaultTransactionAttribute;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
public class SkipLimitStepFactoryBeanNonBufferingTests {
|
||||
@@ -209,12 +210,13 @@ public class SkipLimitStepFactoryBeanNonBufferingTests {
|
||||
*/
|
||||
@Test
|
||||
public void testProcessorRollback() throws Exception {
|
||||
|
||||
factory.setTransactionAttribute(new DefaultTransactionAttribute());
|
||||
SkipProcessorStub processor = new SkipProcessorStub(Arrays.asList(StringUtils
|
||||
.commaDelimitedListToStringArray("1,3")));
|
||||
factory.setItemProcessor(processor);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final Collection<String> NO_FAILURES = Collections.EMPTY_LIST;
|
||||
final Collection<String> NO_FAILURES = Collections.emptyList();
|
||||
factory.setItemWriter(new SkipWriterStub(NO_FAILURES));
|
||||
|
||||
Step step = (Step) factory.getObject();
|
||||
@@ -236,8 +238,7 @@ public class SkipLimitStepFactoryBeanNonBufferingTests {
|
||||
.commaDelimitedListToStringArray("1,3")));
|
||||
factory.setItemProcessor(processor);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final Collection<String> NO_FAILURES = Collections.EMPTY_LIST;
|
||||
final Collection<String> NO_FAILURES = Collections.emptyList();
|
||||
factory.setItemWriter(new SkipWriterStub(NO_FAILURES));
|
||||
|
||||
Step step = (Step) factory.getObject();
|
||||
|
||||
@@ -457,12 +457,12 @@ public class SkipLimitStepFactoryBeanTests {
|
||||
*/
|
||||
@Test
|
||||
public void testProcessorRollback() throws Exception {
|
||||
factory.setTransactionAttribute(new DefaultTransactionAttribute());
|
||||
SkipProcessorStub processor = new SkipProcessorStub(Arrays.asList(StringUtils
|
||||
.commaDelimitedListToStringArray("1,3")));
|
||||
factory.setItemProcessor(processor);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final Collection<String> NO_FAILURES = Collections.EMPTY_LIST;
|
||||
final Collection<String> NO_FAILURES = Collections.emptyList();
|
||||
factory.setItemReader(new SkipReaderStub(new String[] { "1", "2", "3", "4" }, NO_FAILURES));
|
||||
factory.setItemWriter(new SkipWriterStub(NO_FAILURES));
|
||||
|
||||
@@ -485,8 +485,7 @@ public class SkipLimitStepFactoryBeanTests {
|
||||
.commaDelimitedListToStringArray("1,3")));
|
||||
factory.setItemProcessor(processor);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
final Collection<String> NO_FAILURES = Collections.EMPTY_LIST;
|
||||
final Collection<String> NO_FAILURES = Collections.emptyList();
|
||||
factory.setItemReader(new SkipReaderStub(new String[] { "1", "2", "3", "4" }, NO_FAILURES));
|
||||
factory.setItemWriter(new SkipWriterStub(NO_FAILURES));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user