From 75111fbe01c354bf13d2a3332091ef2a0ca6469a Mon Sep 17 00:00:00 2001 From: robokaso Date: Tue, 22 Apr 2008 11:24:49 +0000 Subject: [PATCH] RESOLVED - BATCH-595: Incorrect JDBC type for job parameters of long type used Types.BIGINT instead of Types.INTEGER for Long values --- .../repository/dao/JdbcJobInstanceDao.java | 4 ++-- .../dao/AbstractJobInstanceDaoTests.java | 23 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java index 2cd9a57a0..d9614360d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobInstanceDao.java @@ -136,8 +136,8 @@ public class JdbcJobInstanceDao extends AbstractJdbcBatchMetadataDao implements private void insertParameter(Long jobId, ParameterType type, String key, Object value) { Object[] args = new Object[0]; - int[] argTypes = new int[] { Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP, - Types.INTEGER, Types.DOUBLE }; + int[] argTypes = new int[] { Types.BIGINT, Types.VARCHAR, Types.VARCHAR, Types.VARCHAR, Types.TIMESTAMP, + Types.BIGINT, Types.DOUBLE }; if (type == ParameterType.STRING) { args = new Object[] { jobId, key, type, value, new Timestamp(0L), new Long(0), new Double(0) }; diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobInstanceDaoTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobInstanceDaoTests.java index 8e6af1a0b..abacfc4ba 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobInstanceDaoTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/AbstractJobInstanceDaoTests.java @@ -1,5 +1,7 @@ package org.springframework.batch.core.repository.dao; +import java.util.Date; + import org.springframework.batch.core.Job; import org.springframework.batch.core.JobInstance; import org.springframework.batch.core.JobParameters; @@ -9,14 +11,18 @@ import org.springframework.test.AbstractTransactionalDataSourceSpringContextTest public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalDataSourceSpringContextTests { + private static final long DATE = 777; + private JobInstanceDao dao = new MapJobInstanceDao(); private Job fooJob = new JobSupport("foo"); - private JobParameters fooParams = new JobParametersBuilder().addString("fooKey", "fooValue").toJobParameters(); + private JobParameters fooParams = new JobParametersBuilder().addString("stringKey", "stringValue").addLong( + "longKey", new Long(Long.MAX_VALUE)).addDouble("doubleKey", new Double(Double.MAX_VALUE)).addDate( + "dateKey", new Date(DATE)).toJobParameters(); protected abstract JobInstanceDao getJobInstanceDao(); - + protected void onSetUp() throws Exception { dao = getJobInstanceDao(); } @@ -32,7 +38,15 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalD assertEquals(fooParams, fooInstance.getJobParameters()); JobInstance retrievedInstance = dao.getJobInstance(fooJob, fooParams); + JobParameters retrievedParams = retrievedInstance.getJobParameters(); assertEquals(fooInstance, retrievedInstance); + assertEquals(fooJob, retrievedInstance.getJob()); + assertEquals(fooParams, retrievedParams); + + assertEquals(Long.MAX_VALUE, retrievedParams.getLong("longKey").longValue()); + assertEquals(Double.MAX_VALUE, retrievedParams.getDouble("doubleKey").doubleValue(), 0.001); + assertEquals("stringValue", retrievedParams.getString("stringKey")); + assertEquals(new Date(DATE), retrievedParams.getDate("dateKey")); } /** @@ -52,13 +66,14 @@ public abstract class AbstractJobInstanceDaoTests extends AbstractTransactionalD } public void testCreationAddsVersion() { - + JobInstance jobInstance = new JobInstance(new Long(1), new JobParameters(), new JobSupport("testVersionAndId")); - + assertNull(jobInstance.getVersion()); jobInstance = dao.createJobInstance(new JobSupport("testVersion"), new JobParameters()); assertNotNull(jobInstance.getVersion()); } + }