diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-23 20:16:31 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-23 20:16:31 -0700 |
commit | 44a8547480892162446192dd98683de62ded3706 (patch) | |
tree | d072f47c2863c464b6264dd5b4effe9db2a200af /src/main/java | |
parent | 37413a78bf18e3d6062b428c57414051fc8776ab (diff) | |
parent | 1473b0341791205c809982161ebb804d8ed5a359 (diff) | |
download | jackson-databind-44a8547480892162446192dd98683de62ded3706.tar.gz |
Merge branch '2.11' into 2.12
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java | 5 | ||||
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/util/ClassUtil.java | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java index f0a2648fa..91e6ebc26 100644 --- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java +++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java @@ -908,9 +908,8 @@ name, ((AnnotatedParameter) m).getIndex()); if (ClassUtil.isProxyType(type)) { throw new IllegalArgumentException("Cannot deserialize Proxy class "+type.getName()+" as a Bean"); } - /* also: can't deserialize some local classes: static are ok; in-method not; - * other non-static inner classes are ok - */ + // also: can't deserialize some local classes: static are ok; in-method not; + // other non-static inner classes are ok typeStr = ClassUtil.isLocalType(type, true); if (typeStr != null) { throw new IllegalArgumentException("Cannot deserialize Class "+type.getName()+" (of type "+typeStr+") as a Bean"); diff --git a/src/main/java/com/fasterxml/jackson/databind/util/ClassUtil.java b/src/main/java/com/fasterxml/jackson/databind/util/ClassUtil.java index e3fb8caad..a80b72a2a 100644 --- a/src/main/java/com/fasterxml/jackson/databind/util/ClassUtil.java +++ b/src/main/java/com/fasterxml/jackson/databind/util/ClassUtil.java @@ -184,11 +184,15 @@ public final class ClassUtil { /* As per [JACKSON-187], GAE seems to throw SecurityExceptions * here and there... and GAE itself has a bug, too - * (see []). Bah. So we need to catch some wayward exceptions on GAE + * Bah. So we need to catch some wayward exceptions on GAE */ try { + final boolean isStatic = Modifier.isStatic(type.getModifiers()); + // one more: method locals, anonymous, are not good: - if (hasEnclosingMethod(type)) { + // 23-Jun-2020, tatu: [databind#2758] With JDK14+ should allow + // local Record types, however + if (!isStatic && hasEnclosingMethod(type)) { return "local/anonymous"; } /* But how about non-static inner classes? Can't construct @@ -196,7 +200,7 @@ public final class ClassUtil * happens to be enclosing... but that gets convoluted) */ if (!allowNonStatic) { - if (isNonStaticInnerClass(type)) { + if (!isStatic && getEnclosingClass(type) != null) { return "non-static member class"; } } |