synchronize begin and commit in transactional proxy (only needed in Java 5 apparently, which is a shame)
This commit is contained in:
@@ -27,8 +27,9 @@ import org.springframework.batch.support.transaction.TransactionAwareProxyFactor
|
||||
/**
|
||||
* In-memory implementation of {@link ExecutionContextDao} backed by static
|
||||
* maps.
|
||||
*
|
||||
*
|
||||
* @author Robert Kasanicky
|
||||
* @author Dave Syer
|
||||
*/
|
||||
public class MapExecutionContextDao implements ExecutionContextDao {
|
||||
|
||||
@@ -52,7 +53,10 @@ public class MapExecutionContextDao implements ExecutionContextDao {
|
||||
}
|
||||
|
||||
public void updateExecutionContext(StepExecution stepExecution) {
|
||||
contextsByStepExecutionId.put(stepExecution.getId(), copy(stepExecution.getExecutionContext()));
|
||||
ExecutionContext executionContext = stepExecution.getExecutionContext();
|
||||
if (executionContext != null) {
|
||||
contextsByStepExecutionId.put(stepExecution.getId(), copy(executionContext));
|
||||
}
|
||||
}
|
||||
|
||||
public ExecutionContext getExecutionContext(JobExecution jobExecution) {
|
||||
@@ -60,7 +64,10 @@ public class MapExecutionContextDao implements ExecutionContextDao {
|
||||
}
|
||||
|
||||
public void updateExecutionContext(JobExecution jobExecution) {
|
||||
contextsByJobExecutionId.put(jobExecution.getId(), copy(jobExecution.getExecutionContext()));
|
||||
ExecutionContext executionContext = jobExecution.getExecutionContext();
|
||||
if (executionContext != null) {
|
||||
contextsByJobExecutionId.put(jobExecution.getId(), copy(executionContext));
|
||||
}
|
||||
}
|
||||
|
||||
public void saveExecutionContext(JobExecution jobExecution) {
|
||||
|
||||
@@ -67,7 +67,7 @@ public class TransactionAwareProxyFactory<T> {
|
||||
* @return an independent copy
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
protected final T begin(T target) {
|
||||
protected synchronized final T begin(T target) {
|
||||
if (target instanceof List) {
|
||||
return (T) new ArrayList((List) target);
|
||||
}
|
||||
@@ -91,7 +91,7 @@ public class TransactionAwareProxyFactory<T> {
|
||||
* @param target the original target of the factory.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
protected void commit(T copy, T target) {
|
||||
protected synchronized void commit(T copy, T target) {
|
||||
if (target instanceof Collection) {
|
||||
((Collection) target).clear();
|
||||
((Collection) target).addAll((Collection) copy);
|
||||
|
||||
Reference in New Issue
Block a user