RESOLVED - BATCH-948: MapJobInstanceDao.getLastJobInstances ignores jobName parameter
This commit is contained in:
@@ -47,8 +47,12 @@ public class MapJobInstanceDao implements JobInstanceDao {
|
||||
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.springframework.batch.core.repository.dao.JobInstanceDao#getJobInstance(java.lang.Long)
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.springframework.batch.core.repository.dao.JobInstanceDao#getJobInstance
|
||||
* (java.lang.Long)
|
||||
*/
|
||||
public JobInstance getJobInstance(Long instanceId) {
|
||||
for (JobInstance instance : jobInstances) {
|
||||
@@ -59,8 +63,12 @@ public class MapJobInstanceDao implements JobInstanceDao {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.springframework.batch.core.repository.dao.JobInstanceDao#getJobNames()
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see
|
||||
* org.springframework.batch.core.repository.dao.JobInstanceDao#getJobNames
|
||||
* ()
|
||||
*/
|
||||
public List<String> getJobNames() {
|
||||
List<String> result = new ArrayList<String>();
|
||||
@@ -71,19 +79,27 @@ public class MapJobInstanceDao implements JobInstanceDao {
|
||||
return result;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.springframework.batch.core.repository.dao.JobInstanceDao#getLastJobInstances(java.lang.String, int)
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @seeorg.springframework.batch.core.repository.dao.JobInstanceDao#
|
||||
* getLastJobInstances(java.lang.String, int)
|
||||
*/
|
||||
public List<JobInstance> getLastJobInstances(String jobName, int count) {
|
||||
ArrayList<JobInstance> list = new ArrayList<JobInstance>(jobInstances);
|
||||
Collections.sort(list, new Comparator<JobInstance>() {
|
||||
List<JobInstance> result = new ArrayList<JobInstance>();
|
||||
for (JobInstance instance : jobInstances) {
|
||||
if (instance.getJobName().equals(jobName)) {
|
||||
result.add(instance);
|
||||
}
|
||||
}
|
||||
Collections.sort(result, new Comparator<JobInstance>() {
|
||||
// sort by ID descending
|
||||
public int compare(JobInstance o1, JobInstance o2) {
|
||||
return Long.signum(o1.getId()-o2.getId());
|
||||
return Long.signum(o1.getId() - o2.getId());
|
||||
}
|
||||
});
|
||||
int length = count>list.size() ? list.size() : count;
|
||||
return list.subList(0, length);
|
||||
int length = count > result.size() ? result.size() : count;
|
||||
return result.subList(0, length);
|
||||
}
|
||||
|
||||
public JobInstance getJobInstance(JobExecution jobExecution) {
|
||||
|
||||
@@ -27,8 +27,8 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
private String fooJob = "foo";
|
||||
|
||||
private JobParameters fooParams = new JobParametersBuilder().addString("stringKey", "stringValue").addLong(
|
||||
"longKey", Long.MAX_VALUE).addDouble("doubleKey", Double.MAX_VALUE).addDate(
|
||||
"dateKey", new Date(DATE)).toJobParameters();
|
||||
"longKey", Long.MAX_VALUE).addDouble("doubleKey", Double.MAX_VALUE).addDate("dateKey", new Date(DATE))
|
||||
.toJobParameters();
|
||||
|
||||
protected abstract JobInstanceDao getJobInstanceDao();
|
||||
|
||||
@@ -40,7 +40,8 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
/*
|
||||
* Create and retrieve a job instance.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testCreateAndRetrieve() throws Exception {
|
||||
|
||||
JobInstance fooInstance = dao.createJobInstance(fooJob, fooParams);
|
||||
@@ -53,7 +54,7 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
assertEquals(fooInstance, retrievedInstance);
|
||||
assertEquals(fooJob, retrievedInstance.getJobName());
|
||||
assertEquals(fooParams, retrievedParams);
|
||||
|
||||
|
||||
assertEquals(Long.MAX_VALUE, retrievedParams.getLong("longKey"));
|
||||
assertEquals(Double.MAX_VALUE, retrievedParams.getDouble("doubleKey"), 0.001);
|
||||
assertEquals("stringValue", retrievedParams.getString("stringKey"));
|
||||
@@ -63,7 +64,8 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
/*
|
||||
* Create and retrieve a job instance.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testCreateAndGetById() throws Exception {
|
||||
|
||||
JobInstance fooInstance = dao.createJobInstance(fooJob, fooParams);
|
||||
@@ -76,7 +78,7 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
assertEquals(fooInstance, retrievedInstance);
|
||||
assertEquals(fooJob, retrievedInstance.getJobName());
|
||||
assertEquals(fooParams, retrievedParams);
|
||||
|
||||
|
||||
assertEquals(Long.MAX_VALUE, retrievedParams.getLong("longKey"));
|
||||
assertEquals(Double.MAX_VALUE, retrievedParams.getDouble("doubleKey"), 0.001);
|
||||
assertEquals("stringValue", retrievedParams.getString("stringKey"));
|
||||
@@ -86,7 +88,8 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
/*
|
||||
* Create and retrieve a job instance.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testGetMissingById() throws Exception {
|
||||
|
||||
JobInstance retrievedInstance = dao.getJobInstance(1111111L);
|
||||
@@ -97,34 +100,41 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
/*
|
||||
* Create and retrieve a job instance.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testGetJobNames() throws Exception {
|
||||
|
||||
|
||||
testCreateAndRetrieve();
|
||||
List<String> jobNames = dao.getJobNames();
|
||||
assertFalse(jobNames.isEmpty());
|
||||
assertTrue(jobNames.contains(fooJob));
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Create and retrieve a job instance.
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testGetLastInstances() throws Exception {
|
||||
|
||||
|
||||
testCreateAndRetrieve();
|
||||
List<JobInstance> jobInstances = dao.getLastJobInstances(fooJob, 1);
|
||||
|
||||
// unrelated job instance that should be ignored by the query
|
||||
dao.createJobInstance("anotherJob", new JobParameters());
|
||||
|
||||
List<JobInstance> jobInstances = dao.getLastJobInstances(fooJob, 2);
|
||||
assertEquals(1, jobInstances.size());
|
||||
assertEquals(fooJob, jobInstances.get(0).getJobName());
|
||||
assertEquals(Integer.valueOf(0), jobInstances.get(0).getVersion());
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Trying to create instance twice for the same job+parameters causes error
|
||||
*/
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testCreateDuplicateInstance() {
|
||||
|
||||
dao.createJobInstance(fooJob, fooParams);
|
||||
@@ -138,7 +148,8 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional @Test
|
||||
@Transactional
|
||||
@Test
|
||||
public void testCreationAddsVersion() {
|
||||
|
||||
JobInstance jobInstance = new JobInstance((long) 1, new JobParameters(), "testVersionAndId");
|
||||
@@ -149,10 +160,9 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalJ
|
||||
|
||||
assertNotNull(jobInstance.getVersion());
|
||||
}
|
||||
|
||||
|
||||
public void testGetJobInstanceByExecutionId(){
|
||||
|
||||
|
||||
public void testGetJobInstanceByExecutionId() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user