@Override protected ExecutionContextDao createExecutionContextDao() throws Exception { executionContextDao = new MapExecutionContextDao(); return executionContextDao; }
@Override public void saveExecutionContexts(Collection<StepExecution> stepExecutions) { Assert.notNull(stepExecutions,"Attempt to save a null collection of step executions"); for (StepExecution stepExecution: stepExecutions) { saveExecutionContext(stepExecution); saveExecutionContext(stepExecution.getJobExecution()); } }
@Test public void testPersistentCopy() throws Exception { MapExecutionContextDao tested = new MapExecutionContextDao(); JobExecution jobExecution = new JobExecution((long)1); StepExecution stepExecution = new StepExecution("stepName", jobExecution, 123L); assertTrue(stepExecution.getExecutionContext().isEmpty()); tested.updateExecutionContext(stepExecution); stepExecution.getExecutionContext().put("key","value"); ExecutionContext retrieved = tested.getExecutionContext(stepExecution); assertTrue(retrieved.isEmpty()); tested.updateExecutionContext(jobExecution); jobExecution.getExecutionContext().put("key", "value"); retrieved = tested.getExecutionContext(jobExecution); assertTrue(retrieved.isEmpty()); }
@Override public ExecutionContext getExecutionContext(StepExecution stepExecution) { return copy(contexts.get(ContextKey.step(stepExecution.getId()))); }
@Test public void testSaveBothJobAndStepContextWithSameId() throws Exception { MapExecutionContextDao tested = new MapExecutionContextDao(); JobExecution jobExecution = new JobExecution(1L); StepExecution stepExecution = new StepExecution("stepName", jobExecution, 1L); assertTrue(stepExecution.getId() == jobExecution.getId()); jobExecution.getExecutionContext().put("type", "job"); stepExecution.getExecutionContext().put("type", "step"); assertTrue(!jobExecution.getExecutionContext().get("type").equals(stepExecution.getExecutionContext().get("type"))); assertEquals("job", jobExecution.getExecutionContext().get("type")); assertEquals("step", stepExecution.getExecutionContext().get("type")); tested.saveExecutionContext(jobExecution); tested.saveExecutionContext(stepExecution); ExecutionContext jobCtx = tested.getExecutionContext(jobExecution); ExecutionContext stepCtx = tested.getExecutionContext(stepExecution); assertEquals("job", jobCtx.get("type")); assertEquals("step", stepCtx.get("type")); }
@Override public void saveExecutionContext(JobExecution jobExecution) { updateExecutionContext(jobExecution); }
/** * Convenience method to clear all the map DAOs globally, removing all * entities. */ public void clear() { jobInstanceDao.clear(); jobExecutionDao.clear(); stepExecutionDao.clear(); executionContextDao.clear(); }
@Test public void testSaveUpdate() throws Exception { StepExecution stepExecution = new StepExecution("step", new JobExecution(11L)); stepExecution.setId(123L); stepExecution.getExecutionContext().put("foo", "bar"); dao.saveExecutionContext(stepExecution); ExecutionContext executionContext = dao.getExecutionContext(stepExecution); assertEquals("bar", executionContext.get("foo")); }
private void saveAndAssert(final StepExecution stepExecution, final String value) { new TransactionTemplate(transactionManager).execute(new TransactionCallback<Void>() { @Override public Void doInTransaction(TransactionStatus status) { stepExecution.getExecutionContext().put("foo", value); dao.saveExecutionContext(stepExecution); return null; } }); ExecutionContext executionContext = dao.getExecutionContext(stepExecution); Assert.state(executionContext != null, "Lost insert: null executionContext at value=" + value); String foo = executionContext.getString("foo"); Assert.state(value.equals(foo), "Lost update: wrong value=" + value + " (found " + foo + ") for id=" + stepExecution.getId()); }
@Override public ExecutionContext getExecutionContext(JobExecution jobExecution) { return copy(contexts.get(ContextKey.job(jobExecution.getId()))); }
@Override public void saveExecutionContext(StepExecution stepExecution) { updateExecutionContext(stepExecution); }
/** * Convenience method to clear all the map DAOs globally, removing all * entities. */ public void clear() { jobInstanceDao.clear(); jobExecutionDao.clear(); stepExecutionDao.clear(); executionContextDao.clear(); }
@Test public void testTransactionalSaveUpdate() throws Exception { final StepExecution stepExecution = new StepExecution("step", new JobExecution(11L)); stepExecution.setId(123L); new TransactionTemplate(transactionManager).execute(new TransactionCallback<Void>() { @Override public Void doInTransaction(TransactionStatus status) { stepExecution.getExecutionContext().put("foo", "bar"); dao.saveExecutionContext(stepExecution); return null; } }); ExecutionContext executionContext = dao.getExecutionContext(stepExecution); assertEquals("bar", executionContext.get("foo")); }
@Override protected ExecutionContextDao getExecutionContextDao() { return new MapExecutionContextDao(); }
@Override public void updateExecutionContext(StepExecution stepExecution) { ExecutionContext executionContext = stepExecution.getExecutionContext(); if (executionContext != null) { contexts.put(ContextKey.step(stepExecution.getId()), copy(executionContext)); } }
@Override public void saveExecutionContext(StepExecution stepExecution) { updateExecutionContext(stepExecution); }
@Override public Void doInTransaction(TransactionStatus status) { stepExecution.getExecutionContext().put("foo", "bar"); dao.saveExecutionContext(stepExecution); return null; } });
/** * Convenience method to clear all the map daos globally, removing all * entities. */ public void clear() { jobInstanceDao.clear(); jobExecutionDao.clear(); stepExecutionDao.clear(); executionContextDao.clear(); }
@Override protected JobRepository getJobRepository() { return new SimpleJobRepository(new MapJobInstanceDao(), new MapJobExecutionDao(), new MapStepExecutionDao(), new MapExecutionContextDao()); }
@Override public void updateExecutionContext(JobExecution jobExecution) { ExecutionContext executionContext = jobExecution.getExecutionContext(); if (executionContext != null) { contexts.put(ContextKey.job(jobExecution.getId()), copy(executionContext)); } }