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:
@@ -50,11 +50,6 @@
|
||||
<artifactId>spring-jdbc</artifactId>
|
||||
<version>${spring-framework.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.micrometer</groupId>
|
||||
<artifactId>micrometer-core</artifactId>
|
||||
@@ -67,6 +62,12 @@
|
||||
</dependency>
|
||||
|
||||
<!-- optional production dependencies -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>jakarta.annotation</groupId>
|
||||
<artifactId>jakarta.annotation-api</artifactId>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -95,6 +95,12 @@
|
||||
<version>${gson.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate.orm</groupId>
|
||||
<artifactId>hibernate-core</artifactId>
|
||||
|
||||
@@ -80,6 +80,12 @@
|
||||
<version>${spring-integration.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-dbcp2</artifactId>
|
||||
|
||||
@@ -151,6 +151,11 @@
|
||||
<artifactId>simpleclient_pushgateway</artifactId>
|
||||
<version>${prometheus_pushgateway.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- test dependencies -->
|
||||
<dependency>
|
||||
|
||||
Reference in New Issue
Block a user