aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/fasterxml/jackson/databind
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2020-06-23 20:14:50 -0700
committerTatu Saloranta <tatu.saloranta@iki.fi>2020-06-23 20:14:50 -0700
commit1473b0341791205c809982161ebb804d8ed5a359 (patch)
tree56ae97c93d6da450b66eb805a56ae11c60779df8 /src/main/java/com/fasterxml/jackson/databind
parent7e3aa6f977e81718a20ddd584e4bdca71d018074 (diff)
downloadjackson-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.java5
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/util/ClassUtil.java10
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";
}
}