BATCH-2408 Use ArrayList instead of Stack
Stack is a pre Java 1.2 class that is slower than ArrayList as it incurs additional synchronization overhead. - replace Stack with ArrayList where it's not public API Issue: BATCH-2408
This commit is contained in:
committed by
Michael Minella
parent
3968b77421
commit
9f990f47c4
@@ -16,7 +16,8 @@
|
||||
|
||||
package org.springframework.batch.support.transaction;
|
||||
|
||||
import java.util.Stack;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.TransactionException;
|
||||
@@ -42,17 +43,17 @@ public class ResourcelessTransactionManager extends AbstractPlatformTransactionM
|
||||
@Override
|
||||
protected Object doGetTransaction() throws TransactionException {
|
||||
Object transaction = new ResourcelessTransaction();
|
||||
Stack<Object> resources;
|
||||
List<Object> resources;
|
||||
if (!TransactionSynchronizationManager.hasResource(this)) {
|
||||
resources = new Stack<Object>();
|
||||
resources = new ArrayList<Object>();
|
||||
TransactionSynchronizationManager.bindResource(this, resources);
|
||||
}
|
||||
else {
|
||||
@SuppressWarnings("unchecked")
|
||||
Stack<Object> stack = (Stack<Object>) TransactionSynchronizationManager.getResource(this);
|
||||
List<Object> stack = (List<Object>) TransactionSynchronizationManager.getResource(this);
|
||||
resources = stack;
|
||||
}
|
||||
resources.push(transaction);
|
||||
resources.add(transaction);
|
||||
return transaction;
|
||||
}
|
||||
|
||||
@@ -66,8 +67,7 @@ public class ResourcelessTransactionManager extends AbstractPlatformTransactionM
|
||||
@Override
|
||||
protected boolean isExistingTransaction(Object transaction) throws TransactionException {
|
||||
if (TransactionSynchronizationManager.hasResource(this)) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Stack<Object> stack = (Stack<Object>) TransactionSynchronizationManager.getResource(this);
|
||||
List<?> stack = (List<?>) TransactionSynchronizationManager.getResource(this);
|
||||
return stack.size() > 1;
|
||||
}
|
||||
return ((ResourcelessTransaction) transaction).isActive();
|
||||
@@ -79,9 +79,7 @@ public class ResourcelessTransactionManager extends AbstractPlatformTransactionM
|
||||
|
||||
@Override
|
||||
protected void doCleanupAfterCompletion(Object transaction) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Stack<Object> list = (Stack<Object>) TransactionSynchronizationManager.getResource(this);
|
||||
Stack<Object> resources = list;
|
||||
List<?> resources = (List<?>) TransactionSynchronizationManager.getResource(this);
|
||||
resources.clear();
|
||||
TransactionSynchronizationManager.unbindResource(this);
|
||||
((ResourcelessTransaction) transaction).clear();
|
||||
|
||||
Reference in New Issue
Block a user