Change the default execution context serializer to DefaultExecutionContextSerializer
This commit changes the default execution context serializer to DefaultExecutionContextSerializer, which makes Jackson an optional dependency. Resolves #4140
This commit is contained in:
@@ -33,7 +33,7 @@ import org.springframework.batch.core.launch.support.TaskExecutorJobLauncher;
|
||||
import org.springframework.batch.core.repository.ExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao;
|
||||
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
|
||||
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao;
|
||||
import org.springframework.batch.core.repository.dao.JdbcJobExecutionDao;
|
||||
import org.springframework.batch.core.repository.dao.JdbcStepExecutionDao;
|
||||
@@ -299,11 +299,11 @@ public class DefaultBatchConfiguration implements ApplicationContextAware {
|
||||
|
||||
/**
|
||||
* A custom implementation of the {@link ExecutionContextSerializer}. The default, if
|
||||
* not injected, is the {@link Jackson2ExecutionContextStringSerializer}.
|
||||
* not injected, is the {@link DefaultExecutionContextSerializer}.
|
||||
* @return the serializer to use to serialize/deserialize the execution context
|
||||
*/
|
||||
protected ExecutionContextSerializer getExecutionContextSerializer() {
|
||||
return new Jackson2ExecutionContextStringSerializer();
|
||||
return new DefaultExecutionContextSerializer();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,8 +24,8 @@ import javax.sql.DataSource;
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.repository.ExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao;
|
||||
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.dao.ExecutionContextDao;
|
||||
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
|
||||
import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao;
|
||||
import org.springframework.batch.core.repository.dao.JdbcJobExecutionDao;
|
||||
import org.springframework.batch.core.repository.dao.JdbcJobInstanceDao;
|
||||
@@ -80,7 +80,7 @@ public class JobExplorerFactoryBean extends AbstractJobExplorerFactoryBean imple
|
||||
|
||||
/**
|
||||
* A custom implementation of {@link ExecutionContextSerializer}. The default, if not
|
||||
* injected, is the {@link Jackson2ExecutionContextStringSerializer}.
|
||||
* injected, is the {@link DefaultExecutionContextSerializer}.
|
||||
* @param serializer The serializer used to serialize or deserialize an
|
||||
* {@link org.springframework.batch.item.ExecutionContext}.
|
||||
* @see ExecutionContextSerializer
|
||||
@@ -160,7 +160,7 @@ public class JobExplorerFactoryBean extends AbstractJobExplorerFactoryBean imple
|
||||
}
|
||||
|
||||
if (serializer == null) {
|
||||
serializer = new Jackson2ExecutionContextStringSerializer();
|
||||
serializer = new DefaultExecutionContextSerializer();
|
||||
}
|
||||
|
||||
if (this.conversionService == null) {
|
||||
|
||||
@@ -91,7 +91,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
|
||||
|
||||
private LobHandler lobHandler = new DefaultLobHandler();
|
||||
|
||||
private ExecutionContextSerializer serializer;
|
||||
private ExecutionContextSerializer serializer = new DefaultExecutionContextSerializer();
|
||||
|
||||
/**
|
||||
* Setter for {@link Serializer} implementation
|
||||
|
||||
@@ -27,8 +27,8 @@ import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.batch.core.repository.ExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao;
|
||||
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.dao.ExecutionContextDao;
|
||||
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
|
||||
import org.springframework.batch.core.repository.dao.JdbcExecutionContextDao;
|
||||
import org.springframework.batch.core.repository.dao.JdbcJobExecutionDao;
|
||||
import org.springframework.batch.core.repository.dao.JdbcJobInstanceDao;
|
||||
@@ -100,7 +100,7 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean i
|
||||
|
||||
/**
|
||||
* A custom implementation of the {@link ExecutionContextSerializer}. The default, if
|
||||
* not injected, is the {@link Jackson2ExecutionContextStringSerializer}.
|
||||
* not injected, is the {@link DefaultExecutionContextSerializer}.
|
||||
* @param serializer used to serialize/deserialize
|
||||
* {@link org.springframework.batch.item.ExecutionContext}
|
||||
* @see ExecutionContextSerializer
|
||||
@@ -221,7 +221,7 @@ public class JobRepositoryFactoryBean extends AbstractJobRepositoryFactoryBean i
|
||||
}
|
||||
|
||||
if (serializer == null) {
|
||||
Jackson2ExecutionContextStringSerializer defaultSerializer = new Jackson2ExecutionContextStringSerializer();
|
||||
DefaultExecutionContextSerializer defaultSerializer = new DefaultExecutionContextSerializer();
|
||||
|
||||
serializer = defaultSerializer;
|
||||
}
|
||||
|
||||
@@ -27,14 +27,6 @@ import static org.mockito.Mockito.mock;
|
||||
@SpringJUnitConfig(locations = { "sql-dao-test.xml" })
|
||||
class JdbcExecutionContextDaoTests extends AbstractExecutionContextDaoTests {
|
||||
|
||||
@Test
|
||||
void testNoSerializer() {
|
||||
JdbcExecutionContextDao jdbcExecutionContextDao = new JdbcExecutionContextDao();
|
||||
jdbcExecutionContextDao.setJdbcTemplate(mock(JdbcOperations.class));
|
||||
Exception exception = assertThrows(IllegalStateException.class, jdbcExecutionContextDao::afterPropertiesSet);
|
||||
assertEquals("ExecutionContextSerializer is required", exception.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNullSerializer() {
|
||||
JdbcExecutionContextDao jdbcExecutionContextDao = new JdbcExecutionContextDao();
|
||||
|
||||
@@ -34,7 +34,6 @@ import org.springframework.batch.core.JobParameters;
|
||||
import org.springframework.batch.core.repository.ExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer;
|
||||
import org.springframework.batch.item.database.support.DataFieldMaxValueIncrementerFactory;
|
||||
import org.springframework.core.serializer.Serializer;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
@@ -172,7 +171,7 @@ class JobRepositoryFactoryBeanTests {
|
||||
factory.afterPropertiesSet();
|
||||
Serializer<Map<String, Object>> serializer = (Serializer<Map<String, Object>>) ReflectionTestUtils
|
||||
.getField(factory, "serializer");
|
||||
assertTrue(serializer instanceof Jackson2ExecutionContextStringSerializer);
|
||||
assertTrue(serializer instanceof DefaultExecutionContextSerializer);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -35,5 +35,5 @@
|
||||
<constructor-arg ref="dataSource" />
|
||||
</bean>
|
||||
|
||||
<bean id="serializer" class="org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer"/>
|
||||
<bean id="serializer" class="org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer"/>
|
||||
</beans>
|
||||
|
||||
Reference in New Issue
Block a user