diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-23 20:14:50 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-23 20:14:50 -0700 |
commit | 1473b0341791205c809982161ebb804d8ed5a359 (patch) | |
tree | 56ae97c93d6da450b66eb805a56ae11c60779df8 /src/main/java/com/fasterxml/jackson/databind | |
parent | 7e3aa6f977e81718a20ddd584e4bdca71d018074 (diff) | |
download | jackson-databind-1473b0341791205c809982161ebb804d8ed5a359.tar.gz |
Fixed #2758
Diffstat (limited to 'src/main/java/com/fasterxml/jackson/databind')
-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 0df42e025..9c84bedd8 100644 --- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java +++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java @@ -875,9 +875,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 2a984dc90..78f5562e9 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"; } } |