aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java
diff options
context:
space:
mode:
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.java24
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;
}