Class Jackson2ExecutionContextStringSerializer
java.lang.Object
org.springframework.batch.core.repository.dao.Jackson2ExecutionContextStringSerializer
- All Implemented Interfaces:
ExecutionContextSerializer
,org.springframework.core.serializer.Deserializer<Map<String,
,Object>> org.springframework.core.serializer.Serializer<Map<String,
Object>>
public class Jackson2ExecutionContextStringSerializer
extends Object
implements ExecutionContextSerializer
Implementation that uses Jackson2 to provide (de)serialization.
By default, this implementation trusts a limited set of classes to be deserialized from
the execution context. If a class is not trusted by default and is safe to deserialize,
you can add it to the base set of trusted classes at
construction time
or provide an
explicit mapping using Jackson annotations, as shown in the following example:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) public class MyTrustedType implements Serializable { }It is also possible to provide a custom
ObjectMapper
with a mixin for the
trusted type:
ObjectMapper objectMapper = new ObjectMapper(); objectMapper.addMixIn(MyTrustedType.class, Object.class); Jackson2ExecutionContextStringSerializer serializer = new Jackson2ExecutionContextStringSerializer(); serializer.setObjectMapper(objectMapper); // register serializer in JobRepositoryFactoryBeanIf the (de)serialization is only done by a trusted source, you can also enable default typing:
PolymorphicTypeValidator polymorphicTypeValidator = .. // configure your trusted PolymorphicTypeValidator ObjectMapper objectMapper = new ObjectMapper(); objectMapper.activateDefaultTyping(polymorphicTypeValidator); Jackson2ExecutionContextStringSerializer serializer = new Jackson2ExecutionContextStringSerializer(); serializer.setObjectMapper(objectMapper); // register serializer in JobRepositoryFactoryBean
- Since:
- 3.0.7
- Author:
- Marten Deinum, Mahmoud Ben Hassine
- See Also:
-
Constructor Summary
ConstructorDescriptionJackson2ExecutionContextStringSerializer
(String... trustedClassNames) Create a newJackson2ExecutionContextStringSerializer
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
serialize
(Map<String, Object> context, OutputStream out) void
setObjectMapper
(com.fasterxml.jackson.databind.ObjectMapper objectMapper) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.core.serializer.Deserializer
deserializeFromByteArray
Methods inherited from interface org.springframework.core.serializer.Serializer
serializeToByteArray
-
Constructor Details
-
Jackson2ExecutionContextStringSerializer
Create a newJackson2ExecutionContextStringSerializer
.- Parameters:
trustedClassNames
- fully qualified names of classes that are safe to deserialize from the execution context and which should be added to the default set of trusted classes.
-
-
Method Details
-
setObjectMapper
public void setObjectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) -
deserialize
- Specified by:
deserialize
in interfaceorg.springframework.core.serializer.Deserializer<Map<String,
Object>> - Throws:
IOException
-
serialize
- Specified by:
serialize
in interfaceorg.springframework.core.serializer.Serializer<Map<String,
Object>> - Throws:
IOException
-