@Override public void update(JobExecution jobExecution) { Assert.notNull(jobExecution, "JobExecution cannot be null."); Assert.notNull(jobExecution.getJobId(), "JobExecution must have a Job ID set."); Assert.notNull(jobExecution.getId(), "JobExecution must be already saved (have an id assigned)."); jobExecution.setLastUpdated(new Date(System.currentTimeMillis())); jobExecutionDao.synchronizeStatus(jobExecution); jobExecutionDao.updateJobExecution(jobExecution); }
@Transactional @Test public void testUpdateNullIdJobExecution() { JobExecution execution = new JobExecution(jobInstance, jobParameters); try { jobExecutionDao.updateJobExecution(execution); fail(); } catch (IllegalArgumentException ex) { // expected } }
@Transactional @Test public void testUpdateIncrementsVersion() { int version = jobExecution.getVersion(); jobExecutionDao.updateJobExecution(jobExecution); assertEquals(version + 1, jobExecution.getVersion().intValue()); } }
@Transactional @Test public void testUpdateJobExecution() { jobExecution.setStatus(BatchStatus.COMPLETED); jobExecution.setExitStatus(ExitStatus.COMPLETED); jobExecution.setEndTime(new Date(System.currentTimeMillis())); jobExecutionDao.updateJobExecution(jobExecution); List<JobExecution> executions = jobExecutionDao.findJobExecutions(jobInstance); assertEquals(executions.size(), 1); validateJobExecution(jobExecution, executions.get(0)); }
@Transactional @Test public void testUpdateInvalidJobExecution() { // id is invalid JobExecution execution = new JobExecution(jobInstance, (long) 29432, jobParameters, null); execution.incrementVersion(); try { jobExecutionDao.updateJobExecution(execution); fail("Expected NoSuchBatchDomainObjectException"); } catch (NoSuchObjectException ex) { // expected } }
@Transactional @Test public void testUpdateJobExecutionWithLongExitCode() { assertTrue(LONG_STRING.length() > 250); ((JdbcJobExecutionDao) jobExecutionDao).setExitMessageLength(250); jobExecution.setExitStatus(ExitStatus.COMPLETED .addExitDescription(LONG_STRING)); jobExecutionDao.updateJobExecution(jobExecution); List<Map<String, Object>> executions = jdbcTemplate.queryForList( "SELECT * FROM BATCH_JOB_EXECUTION where JOB_INSTANCE_ID=?", jobInstance.getId()); assertEquals(1, executions.size()); assertEquals(LONG_STRING.substring(0, 250), executions.get(0) .get("EXIT_MESSAGE")); }
/** * Update and retrieve job execution - check attributes have changed as * expected. */ @Transactional @Test public void testUpdateExecution() { execution.setStatus(BatchStatus.STARTED); dao.saveJobExecution(execution); execution.setLastUpdated(new Date(0)); execution.setStatus(BatchStatus.COMPLETED); dao.updateJobExecution(execution); JobExecution updated = dao.findJobExecutions(jobInstance).get(0); assertEquals(execution, updated); assertEquals(BatchStatus.COMPLETED, updated.getStatus()); assertExecutionsAreEqual(execution, updated); }
@Test public void testUpdateValidJobExecution() throws Exception { JobExecution jobExecution = new JobExecution(new JobInstance(1L, job.getName()), 1L, jobParameters, null); // new execution - call update on job DAO jobExecutionDao.updateJobExecution(jobExecution); jobRepository.update(jobExecution); assertNotNull(jobExecution.getLastUpdated()); }
/** * Exception should be raised when the version of update argument doesn't * match the version of persisted entity. */ @Transactional @Test public void testConcurrentModificationException() { JobExecution exec1 = new JobExecution(jobInstance, jobParameters); dao.saveJobExecution(exec1); JobExecution exec2 = new JobExecution(jobInstance, jobParameters); exec2.setId(exec1.getId()); exec2.incrementVersion(); assertEquals((Integer) 0, exec1.getVersion()); assertEquals(exec1.getVersion(), exec2.getVersion()); dao.updateJobExecution(exec1); assertEquals((Integer) 1, exec1.getVersion()); try { dao.updateJobExecution(exec2); fail(); } catch (OptimisticLockingFailureException e) { // expected } }
/** * Modifications to saved entity do not affect the persisted object. */ @Test public void testPersistentCopy() { JobExecutionDao tested = new MapJobExecutionDao(); JobExecution jobExecution = new JobExecution(new JobInstance((long) 1, "mapJob"), new JobParameters()); assertNull(jobExecution.getStartTime()); tested.saveJobExecution(jobExecution); jobExecution.setStartTime(new Date()); JobExecution retrieved = tested.getJobExecution(jobExecution.getId()); assertNull(retrieved.getStartTime()); tested.updateJobExecution(jobExecution); jobExecution.setEndTime(new Date()); assertNull(retrieved.getEndTime()); }
@Override public void updateExecutionContext(JobExecution jobExecution) { jobExecutionDao.updateJobExecution(jobExecution); }
@Override public void saveExecutionContext(JobExecution jobExecution) { jobExecution.incrementVersion(); jobExecutionDao.updateJobExecution(jobExecution); }
public void update(JobExecution jobExecution) { Assert.notNull(jobExecution, "JobExecution cannot be null."); Assert.notNull(jobExecution.getJobId(), "JobExecution must have a Job ID set."); Assert.notNull(jobExecution.getId(), "JobExecution must be already saved (have an id assigned)."); jobExecution.setLastUpdated(new Date(System.currentTimeMillis())); jobExecutionDao.updateJobExecution(jobExecution); }
@Override public void update(JobExecution jobExecution) { Assert.notNull(jobExecution, "JobExecution cannot be null."); Assert.notNull(jobExecution.getJobId(), "JobExecution must have a Job ID set."); Assert.notNull(jobExecution.getId(), "JobExecution must be already saved (have an id assigned)."); jobExecution.setLastUpdated(new Date(System.currentTimeMillis())); jobExecutionDao.updateJobExecution(jobExecution); }
@Override public void update(JobExecution jobExecution) { Assert.notNull(jobExecution, "JobExecution cannot be null."); Assert.notNull(jobExecution.getJobId(), "JobExecution must have a Job ID set."); Assert.notNull(jobExecution.getId(), "JobExecution must be already saved (have an id assigned)."); jobExecution.setLastUpdated(new Date(System.currentTimeMillis())); jobExecutionDao.synchronizeStatus(jobExecution); jobExecutionDao.updateJobExecution(jobExecution); }
@Override public void update(JobExecution jobExecution) { Assert.notNull(jobExecution, "JobExecution cannot be null."); Assert.notNull(jobExecution.getJobId(), "JobExecution must have a Job ID set."); Assert.notNull(jobExecution.getId(), "JobExecution must be already saved (have an id assigned)."); jobExecution.setLastUpdated(new Date(System.currentTimeMillis())); jobExecutionDao.synchronizeStatus(jobExecution); jobExecutionDao.updateJobExecution(jobExecution); }
@Override public void saveStepExecutions(Collection<StepExecution> stepExecutions) { Assert.notNull(stepExecutions, "Attempt to save a null collection of step executions"); if (!stepExecutions.isEmpty()) { Long jobExecutionId = stepExecutions.iterator().next().getJobExecutionId(); Assert.notNull(jobExecutionId, "JobExecution must be saved already."); JobExecution jobExecution = jobExecutionDao.getJobExecution(jobExecutionId); Assert.notNull(jobExecution, "JobExecution must be saved already."); List<StepExecution> stepExecutionList = new ArrayList<>(); for (StepExecution stepExecution : stepExecutions) { Assert.isTrue(stepExecution.getId() == null); Assert.isTrue(stepExecution.getVersion() == null); validateStepExecution(stepExecution); stepExecution.setId(incrementer.nextLongValue()); stepExecution.incrementVersion(); stepExecutionList.add(stepExecution); } jobExecution.addStepExecutions(stepExecutionList); jobExecutionDao.updateJobExecution(jobExecution); } }
@Override public void saveStepExecution(StepExecution stepExecution) { Assert.isTrue(stepExecution.getId() == null); Assert.isTrue(stepExecution.getVersion() == null); Assert.notNull(stepExecution.getJobExecutionId(), "JobExecution must be saved already."); JobExecution jobExecution = jobExecutionDao.getJobExecution(stepExecution.getJobExecution().getId()); Assert.notNull(jobExecution, "JobExecution must be saved already."); validateStepExecution(stepExecution); stepExecution.setId(incrementer.nextLongValue()); stepExecution.incrementVersion(); List<StepExecution> stepExecutions = new ArrayList<>(stepExecution.getJobExecution().getStepExecutions()); stepExecutions.add(stepExecution); jobExecution.addStepExecutions(stepExecutions); jobExecutionDao.updateJobExecution(jobExecution); logger.info("insert step execution: " + stepExecution.getId() + ",jobExecution:" + jobExecution.getId()); }
@Override public void updateStepExecution(StepExecution stepExecution) { validateStepExecution(stepExecution); Assert.notNull(stepExecution.getId(), "StepExecution Id cannot be null. StepExecution must saved" + " before it can be updated."); Assert.notNull(stepExecution.getJobExecutionId(), "JobExecution must be saved already."); JobExecution jobExecution = jobExecutionDao.getJobExecution(stepExecution.getJobExecutionId()); Assert.notNull(jobExecution, "JobExecution must be saved already."); validateStepExecution(stepExecution); Collection<StepExecution> stepExecutions = jobExecution.getStepExecutions(); synchronized (stepExecution) { for (StepExecution se : stepExecutions) { if (se.getId().equals(stepExecution.getId())) { stepExecution.incrementVersion(); copy(stepExecution, se); } } List<StepExecution> steps = new ArrayList<>(stepExecutions); stepExecution.getJobExecution().addStepExecutions(steps); jobExecutionDao.updateJobExecution(jobExecution); logger.info("update step execution: " + stepExecution.getId() + ",jobExecution:" + jobExecution.getId()); } }