diff options
-rw-r--r-- | release-notes/CREDITS-2.x | 16 | ||||
-rw-r--r-- | release-notes/VERSION-2.x | 3 | ||||
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java | 36 |
3 files changed, 37 insertions, 18 deletions
diff --git a/release-notes/CREDITS-2.x b/release-notes/CREDITS-2.x index 5aa7375a8..3328b4186 100644 --- a/release-notes/CREDITS-2.x +++ b/release-notes/CREDITS-2.x @@ -1099,20 +1099,24 @@ Oleksandr Poslavskyi (alevskyi@github) Simone D'Avico (simonedavico@github) * Reported #2632: Failure to resolve generic type parameters on serialization - (2.11.0) + (2.11.0) Robin Roos (robinroos@github) * Contributed #2636: ObjectReader readValue lacks Class<T> argument - (2.11.0) + (2.11.0) Michael Cramer (BigMichi1@github) * Reported #2725: JsonCreator on static method in Enum and Enum used as key in map - fails randomly - (2.11.1) + fails randomly + (2.11.1) Oleg Chtchoukine (oshatrk@github) * Reported #2759: Rearranging of props when property-based generator is in use leads - to incorrect output - (2.11.1) + to incorrect output + (2.11.1) +Johannes Kuhn (DasBrain@github) + * Reported #2760: Jackson doesn't respect `CAN_OVERRIDE_ACCESS_MODIFIERS=false` for + deserializer properties + (2.11.1) diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index 684c80bee..f45b95591 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -17,6 +17,9 @@ Project: jackson-databind #2759: Rearranging of props when property-based generator is in use leads to incorrect output (reported by Oleg C) +#2760: Jackson doesn't respect `CAN_OVERRIDE_ACCESS_MODIFIERS=false` for + deserializer properties + (reported by Johannes K) 2.11.0 (26-Apr-2020) diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java index df2fd60ab..b43bec3dd 100644 --- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java +++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java @@ -193,7 +193,9 @@ public class BeanDeserializerBuilder // 15-Sep-2016, tatu: For some reason fixing access at point of `build()` does // NOT work (2 failing unit tests). Not 100% clear why, but for now force // access set early; unfortunate, but since it works.... - prop.fixAccess(_config); + if (_config.canOverrideAccessModifiers()) { + prop.fixAccess(_config); + } _backRefProperties.put(referenceName, prop); // 16-Jan-2018, tatu: As per [databind#1878] we may want to leave it as is, to allow // population for cases of "wrong direction", traversing parent first @@ -213,10 +215,8 @@ public class BeanDeserializerBuilder if (_injectables == null) { _injectables = new ArrayList<ValueInjector>(); } - boolean fixAccess = _config.canOverrideAccessModifiers(); - boolean forceAccess = fixAccess && _config.isEnabled(MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS); - if (fixAccess) { - member.fixAccess(forceAccess); + if ( _config.canOverrideAccessModifiers()) { + member.fixAccess(_config.isEnabled(MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS)); } _injectables.add(new ValueInjector(propName, propType, member, valueId)); } @@ -482,15 +482,22 @@ public class BeanDeserializerBuilder ignorable = Collections.emptySet(); } */ - for (SettableBeanProperty prop : mainProps) { - /* - // first: no point forcing access on to-be-ignored properties - if (ignorable.contains(prop.getName())) { - continue; + + // 17-Jun-2020, tatu: [databind#2760] means we should not force access + // if we are not configured to... at least not "regular" properties + + if (_config.canOverrideAccessModifiers()) { + for (SettableBeanProperty prop : mainProps) { + /* + // first: no point forcing access on to-be-ignored properties + if (ignorable.contains(prop.getName())) { + continue; + } + */ + prop.fixAccess(_config); } - */ - prop.fixAccess(_config); } + // 15-Sep-2016, tatu: Access via back-ref properties has been done earlier // as it has to, for some reason, so not repeated here. /* @@ -500,6 +507,11 @@ public class BeanDeserializerBuilder } } */ + + // 17-Jun-2020, tatu: Despite [databind#2760], it seems that methods that + // are explicitly defined (any setter via annotation, builder too) can not + // be left as-is? May reconsider based on feedback + if (_anySetter != null) { _anySetter.fixAccess(_config); } |