From 40219368c354a518c945035dcb7fa396cbafb275 Mon Sep 17 00:00:00 2001 From: robokaso Date: Mon, 22 Sep 2008 10:42:37 +0000 Subject: [PATCH] RESOLVED - BATCH-844: Lacking of DAO's property setting in JobRepositoryFactoryBean Pulled up the default value for exitMessageLength to AbstractJdbcBatchMetadataDao. Factory bean declares just one setter and applies the value to both job and step execution daos. --- .../dao/AbstractJdbcBatchMetadataDao.java | 2 ++ .../repository/dao/JdbcJobExecutionDao.java | 2 -- .../repository/dao/JdbcStepExecutionDao.java | 2 -- .../support/JobRepositoryFactoryBean.java | 18 +++++++++++++++++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/AbstractJdbcBatchMetadataDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/AbstractJdbcBatchMetadataDao.java index 881c54492..75190b998 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/AbstractJdbcBatchMetadataDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/AbstractJdbcBatchMetadataDao.java @@ -17,6 +17,8 @@ public abstract class AbstractJdbcBatchMetadataDao implements InitializingBean { * Default value for the table prefix property. */ public static final String DEFAULT_TABLE_PREFIX = "BATCH_"; + + public static final int DEFAULT_EXIT_MESSAGE_LENGTH = 2500; private String tablePrefix = DEFAULT_TABLE_PREFIX; diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java index afbf70378..4a3eae1dd 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcJobExecutionDao.java @@ -36,8 +36,6 @@ public class JdbcJobExecutionDao extends AbstractJdbcBatchMetadataDao implements private static final Log logger = LogFactory.getLog(JdbcJobExecutionDao.class); - private static final int DEFAULT_EXIT_MESSAGE_LENGTH = 2500; - private static final String GET_JOB_EXECUTION_COUNT = "SELECT count(JOB_EXECUTION_ID) from %PREFIX%JOB_EXECUTION " + "where JOB_INSTANCE_ID = ?"; diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java index c870a22a0..9dd8c44c0 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/JdbcStepExecutionDao.java @@ -58,8 +58,6 @@ public class JdbcStepExecutionDao extends AbstractJdbcBatchMetadataDao implement private static final String CURRENT_VERSION_STEP_EXECUTION = "SELECT VERSION FROM %PREFIX%STEP_EXECUTION WHERE STEP_EXECUTION_ID=?"; - private static final int DEFAULT_EXIT_MESSAGE_LENGTH = 2500; - private int exitMessageLength = DEFAULT_EXIT_MESSAGE_LENGTH; private LobHandler lobHandler = new DefaultLobHandler(); diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java index def52e804..bf573db5d 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/support/JobRepositoryFactoryBean.java @@ -54,6 +54,19 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean { private DataFieldMaxValueIncrementerFactory incrementerFactory; + private int exitMessageLength = AbstractJdbcBatchMetadataDao.DEFAULT_EXIT_MESSAGE_LENGTH; + + /** + * Public setter for the exit message length in database. Do not set this if + * you haven't modified the schema. Note this value will be used for both + * {@link JdbcJobExecutionDao} and {@link JdbcStepExecutionDao}. + * + * @param exitMessageLength the exitMessageLength to set + */ + public void setExitMessageLength(int exitMessageLength) { + this.exitMessageLength = exitMessageLength; + } + /** * Public setter for the {@link DataSource}. * @param dataSource a {@link DataSource} @@ -64,7 +77,8 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean { /** * Sets the database type. - * @param dbType as specified by {@link DefaultDataFieldMaxValueIncrementerFactory} + * @param dbType as specified by + * {@link DefaultDataFieldMaxValueIncrementerFactory} */ public void setDatabaseType(String dbType) { this.databaseType = dbType; @@ -113,6 +127,7 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean { dao.setJobExecutionIncrementer(incrementerFactory.getIncrementer(databaseType, tablePrefix + "JOB_EXECUTION_SEQ")); dao.setTablePrefix(tablePrefix); + dao.setExitMessageLength(exitMessageLength); dao.afterPropertiesSet(); return dao; } @@ -123,6 +138,7 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean { dao.setStepExecutionIncrementer(incrementerFactory.getIncrementer(databaseType, tablePrefix + "STEP_EXECUTION_SEQ")); dao.setTablePrefix(tablePrefix); + dao.setExitMessageLength(exitMessageLength); dao.afterPropertiesSet(); return dao; }