IN PROGRESS - BATCH-857: map daos need to be truly transactional for correct restart

use transactional collection wrappers in map daos
This commit is contained in:
robokaso
2008-10-14 13:09:01 +00:00
parent 9b1371f6fd
commit 5495f9b769
4 changed files with 11 additions and 10 deletions

View File

@@ -1,17 +1,17 @@
package org.springframework.batch.core.repository.dao;
import java.util.HashMap;
import java.util.Map;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
public class MapExecutionContextDao implements ExecutionContextDao {
private static Map<Long, ExecutionContext> contextsByStepExecutionId = new HashMap<Long, ExecutionContext>();
private static Map<Long, ExecutionContext> contextsByStepExecutionId = TransactionAwareProxyFactory.createTransactionalMap();
private static Map<Long, ExecutionContext> contextsByJobExecutionId = new HashMap<Long, ExecutionContext>();
private static Map<Long, ExecutionContext> contextsByJobExecutionId = TransactionAwareProxyFactory.createTransactionalMap();
public static void clear() {
contextsByJobExecutionId.clear();

View File

@@ -3,7 +3,6 @@ package org.springframework.batch.core.repository.dao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -11,6 +10,7 @@ import java.util.Set;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
import org.springframework.util.Assert;
/**
@@ -18,7 +18,7 @@ import org.springframework.util.Assert;
*/
public class MapJobExecutionDao implements JobExecutionDao {
private static Map<Long, JobExecution> executionsById = new HashMap<Long, JobExecution>();
private static Map<Long, JobExecution> executionsById = TransactionAwareProxyFactory.createTransactionalMap();
private static long currentId = 0;

View File

@@ -4,12 +4,12 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobInstance;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
import org.springframework.util.Assert;
/**
@@ -17,7 +17,7 @@ import org.springframework.util.Assert;
*/
public class MapJobInstanceDao implements JobInstanceDao {
private static Collection<JobInstance> jobInstances = new HashSet<JobInstance>();
private static Collection<JobInstance> jobInstances = TransactionAwareProxyFactory.createTransactionalSet();
private static long currentId = 0;

View File

@@ -18,13 +18,13 @@ package org.springframework.batch.core.repository.dao;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.batch.core.Entity;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.support.transaction.TransactionAwareProxyFactory;
import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.util.Assert;
@@ -33,7 +33,8 @@ import org.springframework.util.Assert;
*/
public class MapStepExecutionDao implements StepExecutionDao {
private static Map<Long, Map<String, StepExecution>> executionsByJobExecutionId = new HashMap<Long, Map<String, StepExecution>>();
private static Map<Long, Map<String, StepExecution>> executionsByJobExecutionId = TransactionAwareProxyFactory.createTransactionalMap();
private static long currentId = 0;
public static void clear() {
@@ -47,7 +48,7 @@ public class MapStepExecutionDao implements StepExecutionDao {
Map<String, StepExecution> executions = executionsByJobExecutionId.get(stepExecution.getJobExecutionId());
if (executions == null) {
executions = new HashMap<String, StepExecution>();
executions = TransactionAwareProxyFactory.createTransactionalMap();
executionsByJobExecutionId.put(stepExecution.getJobExecutionId(), executions);
}
stepExecution.setId(new Long(currentId++));