diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-07-18 12:43:36 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-07-18 12:43:36 -0700 |
commit | 8ea1c077f1ad903183192b09a2ded32dda04a8de (patch) | |
tree | 3f2570eb46e978af2ea550f74ba0fc750ceb9971 /src/main/java/com/fasterxml | |
parent | 781457b9af8438bc87deddb237812d30fedbd609 (diff) | |
download | jackson-databind-8ea1c077f1ad903183192b09a2ded32dda04a8de.tar.gz |
Fixed #2789
Diffstat (limited to 'src/main/java/com/fasterxml')
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerBuilder.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerBuilder.java b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerBuilder.java index e1911405f..339befd4a 100644 --- a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerBuilder.java +++ b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerBuilder.java @@ -181,11 +181,23 @@ public class BeanSerializerBuilder */ public JsonSerializer<?> build() { + // [databind#2789]: There can be a case wherein `_typeId` is used, but + // nothing else. Rare but has happened; so force access. + if (_typeId != null) { + if (_config.isEnabled(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS)) { + _typeId.fixAccess(_config.isEnabled(MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS)); + } + } + if (_anyGetter != null) { + _anyGetter.fixAccess(_config); + } + BeanPropertyWriter[] properties; // No properties, any getter or object id writer? // No real serializer; caller gets to handle if (_properties == null || _properties.isEmpty()) { if (_anyGetter == null && _objectIdWriter == null) { + // NOTE! Caller may still call `createDummy()` later on return null; } properties = NO_PROPERTIES; @@ -205,14 +217,6 @@ public class BeanSerializerBuilder _properties.size(), _filteredProperties.length)); } } - if (_anyGetter != null) { - _anyGetter.fixAccess(_config); - } - if (_typeId != null) { - if (_config.isEnabled(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS)) { - _typeId.fixAccess(_config.isEnabled(MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS)); - } - } return new BeanSerializer(_beanDesc.getType(), this, properties, _filteredProperties); } |