aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2020-06-17 20:08:29 -0700
committerTatu Saloranta <tatu.saloranta@iki.fi>2020-06-17 20:08:29 -0700
commit6985fe446e2684d2a5d708ccefbc5f3804e60045 (patch)
tree4116eeaa73d2b172595d9b34b15ba73c408b5abc /src/main/java
parent87089aef0d62820c9ef496eb1f0a8f95263eba2b (diff)
downloadjackson-databind-6985fe446e2684d2a5d708ccefbc5f3804e60045.tar.gz
Fixed #2760
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java36
1 files changed, 24 insertions, 12 deletions
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);
}