diff options
author | Baptiste Pernet <pernetmu@gmail.com> | 2020-07-23 19:27:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-23 19:27:54 -0700 |
commit | d9c0332e5ad76d7e4f35d9906f0b8e94a5237627 (patch) | |
tree | 7079a25712fd088846e3c81b30ea87f21032f93a /src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java | |
parent | 5758c6bce6773108beeadd8090641f21778ba5e0 (diff) | |
download | jackson-databind-d9c0332e5ad76d7e4f35d9906f0b8e94a5237627.tar.gz |
FasterXML/jackson-databind#1296 @JsonIncludeProperties (#2771)
Implement #1296 (add and support `@JsonIncludeProperties`)
Diffstat (limited to 'src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java')
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java index 07a969208..81c494dee 100644 --- a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java +++ b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java @@ -3,6 +3,7 @@ package com.fasterxml.jackson.databind.ser; import java.util.*; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonIncludeProperties; import com.fasterxml.jackson.annotation.ObjectIdGenerator; import com.fasterxml.jackson.annotation.ObjectIdGenerators; import com.fasterxml.jackson.annotation.JsonTypeInfo.As; @@ -23,6 +24,7 @@ import com.fasterxml.jackson.databind.type.ReferenceType; import com.fasterxml.jackson.databind.util.BeanUtil; import com.fasterxml.jackson.databind.util.ClassUtil; import com.fasterxml.jackson.databind.util.Converter; +import com.fasterxml.jackson.databind.util.IgnorePropertiesUtil; /** * Factory class that can provide serializers for any regular Java beans @@ -635,17 +637,25 @@ public class BeanSerializerFactory // just use it as is. JsonIgnoreProperties.Value ignorals = config.getDefaultPropertyIgnorals(beanDesc.getBeanClass(), beanDesc.getClassInfo()); + Set<String> ignored = null; if (ignorals != null) { - Set<String> ignored = ignorals.findIgnoredForSerialization(); - if (!ignored.isEmpty()) { - Iterator<BeanPropertyWriter> it = props.iterator(); - while (it.hasNext()) { - if (ignored.contains(it.next().getName())) { - it.remove(); - } + ignored = ignorals.findIgnoredForSerialization(); + } + JsonIncludeProperties.Value inclusions = config.getDefaultPropertyInclusions(beanDesc.getBeanClass(), + beanDesc.getClassInfo()); + Set<String> included = null; + if (inclusions != null) { + included = inclusions.getIncluded(); + } + if (included != null || (ignored != null && !ignored.isEmpty())) { + Iterator<BeanPropertyWriter> it = props.iterator(); + while (it.hasNext()) { + if (IgnorePropertiesUtil.shouldIgnore(it.next().getName(), ignored, included)) { + it.remove(); } } } + return props; } |