Skip to content

Commit f832d08

Browse files
committed
Upgrade Jackson JSON library to 2.10.0
1 parent aecebea commit f832d08

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

core/src/main/java/org/springframework/security/jackson2/SecurityJackson2Modules.java

+17-5
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
import com.fasterxml.jackson.databind.Module;
2525
import com.fasterxml.jackson.databind.ObjectMapper;
2626
import com.fasterxml.jackson.databind.cfg.MapperConfig;
27+
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
2728
import com.fasterxml.jackson.databind.jsontype.NamedType;
29+
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
2830
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
2931
import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
3032
import org.apache.commons.logging.Log;
@@ -146,19 +148,29 @@ private static TypeResolverBuilder<? extends TypeResolverBuilder> createWhitelis
146148
}
147149

148150
/**
149-
* An implementation of {@link ObjectMapper.DefaultTypeResolverBuilder} that overrides the {@link TypeIdResolver}
150-
* with {@link WhitelistTypeIdResolver}.
151+
* An implementation of {@link ObjectMapper.DefaultTypeResolverBuilder}
152+
* that inserts an {@code allow all} {@link PolymorphicTypeValidator}
153+
* and overrides the {@code TypeIdResolver}
151154
* @author Rob Winch
152155
*/
153156
static class WhitelistTypeResolverBuilder extends ObjectMapper.DefaultTypeResolverBuilder {
154157

155158
WhitelistTypeResolverBuilder(ObjectMapper.DefaultTyping defaultTyping) {
156-
super(defaultTyping);
159+
super(
160+
defaultTyping,
161+
//we do explicit validation in the TypeIdResolver
162+
BasicPolymorphicTypeValidator.builder()
163+
.allowIfSubType(Object.class)
164+
.build()
165+
);
157166
}
158167

168+
@Override
159169
protected TypeIdResolver idResolver(MapperConfig<?> config,
160-
JavaType baseType, Collection<NamedType> subtypes, boolean forSer, boolean forDeser) {
161-
TypeIdResolver result = super.idResolver(config, baseType, subtypes, forSer, forDeser);
170+
JavaType baseType,
171+
PolymorphicTypeValidator subtypeValidator,
172+
Collection<NamedType> subtypes, boolean forSer, boolean forDeser) {
173+
TypeIdResolver result = super.idResolver(config, baseType, subtypeValidator, subtypes, forSer, forDeser);
162174
return new WhitelistTypeIdResolver(result);
163175
}
164176
}

core/src/main/java/org/springframework/security/jackson2/UserDeserializer.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ class UserDeserializer extends JsonDeserializer<User> {
5656
public User deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
5757
ObjectMapper mapper = (ObjectMapper) jp.getCodec();
5858
JsonNode jsonNode = mapper.readTree(jp);
59-
Set<GrantedAuthority> authorities = mapper.convertValue(jsonNode.get("authorities"), new TypeReference<Set<SimpleGrantedAuthority>>() {
60-
});
59+
Set<? extends GrantedAuthority> authorities =
60+
mapper.convertValue(
61+
jsonNode.get("authorities"),
62+
new TypeReference<Set<SimpleGrantedAuthority>>() {}
63+
);
6164
JsonNode password = readJsonNode(jsonNode, "password");
6265
User result = new User(
6366
readJsonNode(jsonNode, "username").asText(), password.asText(""),

gradle/dependency-management.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ dependencyManagement {
4242
dependency 'asm:asm:3.1'
4343
dependency 'ch.qos.logback:logback-classic:1.2.3'
4444
dependency 'ch.qos.logback:logback-core:1.2.3'
45-
dependency 'com.fasterxml.jackson.core:jackson-annotations:2.9.10'
46-
dependency 'com.fasterxml.jackson.core:jackson-core:2.9.10'
47-
dependency 'com.fasterxml.jackson.core:jackson-databind:2.9.10'
45+
dependency 'com.fasterxml.jackson.core:jackson-annotations:2.10.0'
46+
dependency 'com.fasterxml.jackson.core:jackson-core:2.10.0'
47+
dependency 'com.fasterxml.jackson.core:jackson-databind:2.10.0'
4848
dependency 'com.fasterxml:classmate:1.3.4'
4949
dependency 'com.github.stephenc.jcip:jcip-annotations:1.0-1'
5050
dependency 'com.google.appengine:appengine-api-1.0-sdk:1.9.76'

0 commit comments

Comments
 (0)