aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/fasterxml/jackson/databind/ser
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/fasterxml/jackson/databind/ser')
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java7
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializer.java9
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java24
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/impl/BeanAsArraySerializer.java11
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/impl/UnwrappingBeanSerializer.java11
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java41
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java118
7 files changed, 188 insertions, 33 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java
index 889a72470..d37ef546c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java
@@ -11,6 +11,7 @@ import java.util.concurrent.atomic.AtomicReference;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonIncludeProperties;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
@@ -823,7 +824,11 @@ public abstract class BasicSerializerFactory
beanDesc.getClassInfo());
Set<String> ignored = (ignorals == null) ? null
: ignorals.findIgnoredForSerialization();
- MapSerializer mapSer = MapSerializer.construct(ignored,
+ JsonIncludeProperties.Value inclusions = config.getDefaultPropertyInclusions(Map.class,
+ beanDesc.getClassInfo());
+ Set<String> included = (inclusions == null) ? null
+ : inclusions.getIncluded();
+ MapSerializer mapSer = MapSerializer.construct(ignored, included,
type, staticTyping, elementTypeSerializer,
keySerializer, elementValueSerializer, filterId);
ser = _checkMapContentInclusion(prov, beanDesc, mapSer);
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializer.java
index 501f16d7f..b202b47f6 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializer.java
@@ -68,6 +68,10 @@ public class BeanSerializer
super(src, toIgnore);
}
+ protected BeanSerializer(BeanSerializerBase src, Set<String> toIgnore, Set<String> toInclude) {
+ super(src, toIgnore, toInclude);
+ }
+
// @since 2.11.1
protected BeanSerializer(BeanSerializerBase src,
BeanPropertyWriter[] properties, BeanPropertyWriter[] filteredProperties) {
@@ -120,6 +124,11 @@ public class BeanSerializer
return new BeanSerializer(this, toIgnore);
}
+ @Override
+ protected BeanSerializerBase withIgnorals(Set<String> toIgnore, Set<String> toInclude) {
+ return new BeanSerializer(this, toIgnore, toInclude);
+ }
+
@Override // @since 2.11.1
protected BeanSerializerBase withProperties(BeanPropertyWriter[] properties,
BeanPropertyWriter[] filteredProperties) {
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;
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/impl/BeanAsArraySerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/impl/BeanAsArraySerializer.java
index 2abf7649d..86b16366d 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/impl/BeanAsArraySerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/impl/BeanAsArraySerializer.java
@@ -67,7 +67,11 @@ public class BeanAsArraySerializer
}
protected BeanAsArraySerializer(BeanSerializerBase src, Set<String> toIgnore) {
- super(src, toIgnore);
+ this(src, toIgnore, null);
+ }
+
+ protected BeanAsArraySerializer(BeanSerializerBase src, Set<String> toIgnore, Set<String> toInclude) {
+ super(src, toIgnore, toInclude);
_defaultSerializer = src;
}
@@ -112,6 +116,11 @@ public class BeanAsArraySerializer
return new BeanAsArraySerializer(this, toIgnore);
}
+ @Override
+ protected BeanAsArraySerializer withIgnorals(Set<String> toIgnore, Set<String> toInclude) {
+ return new BeanAsArraySerializer(this, toIgnore, toInclude);
+ }
+
@Override // @since 2.11.1
protected BeanSerializerBase withProperties(BeanPropertyWriter[] properties,
BeanPropertyWriter[] filteredProperties) {
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnwrappingBeanSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnwrappingBeanSerializer.java
index 32418233f..dd50a6b19 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnwrappingBeanSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnwrappingBeanSerializer.java
@@ -51,7 +51,11 @@ public class UnwrappingBeanSerializer
}
protected UnwrappingBeanSerializer(UnwrappingBeanSerializer src, Set<String> toIgnore) {
- super(src, toIgnore);
+ this(src, toIgnore, null);
+ }
+
+ protected UnwrappingBeanSerializer(UnwrappingBeanSerializer src, Set<String> toIgnore, Set<String> toInclude) {
+ super(src, toIgnore, toInclude);
_nameTransformer = src._nameTransformer;
}
@@ -94,6 +98,11 @@ public class UnwrappingBeanSerializer
return new UnwrappingBeanSerializer(this, toIgnore);
}
+ @Override
+ protected BeanSerializerBase withIgnorals(Set<String> toIgnore, Set<String> toInclude) {
+ return new UnwrappingBeanSerializer(this, toIgnore, toInclude);
+ }
+
@Override // @since 2.11.1
protected BeanSerializerBase withProperties(BeanPropertyWriter[] properties,
BeanPropertyWriter[] filteredProperties) {
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java
index 95621c9a5..afadc8a22 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java
@@ -26,6 +26,7 @@ import com.fasterxml.jackson.databind.ser.impl.PropertyBasedObjectIdGenerator;
import com.fasterxml.jackson.databind.ser.impl.WritableObjectId;
import com.fasterxml.jackson.databind.util.ArrayBuilders;
import com.fasterxml.jackson.databind.util.Converter;
+import com.fasterxml.jackson.databind.util.IgnorePropertiesUtil;
import com.fasterxml.jackson.databind.util.NameTransformer;
/**
@@ -175,10 +176,14 @@ public abstract class BeanSerializerBase
@Deprecated // since 2.8, remove soon
protected BeanSerializerBase(BeanSerializerBase src, String[] toIgnore)
{
- this(src, ArrayBuilders.arrayToSet(toIgnore));
+ this(src, ArrayBuilders.arrayToSet(toIgnore), null);
}
-
- protected BeanSerializerBase(BeanSerializerBase src, Set<String> toIgnore)
+
+ protected BeanSerializerBase(BeanSerializerBase src, Set<String> toIgnore) {
+ this(src, toIgnore, null);
+ }
+
+ protected BeanSerializerBase(BeanSerializerBase src, Set<String> toIgnore, Set<String> toInclude)
{
super(src._handledType);
@@ -193,7 +198,7 @@ public abstract class BeanSerializerBase
for (int i = 0; i < len; ++i) {
BeanPropertyWriter bpw = propsIn[i];
// should be ignored?
- if ((toIgnore != null) && toIgnore.contains(bpw.getName())) {
+ if (IgnorePropertiesUtil.shouldIgnore(bpw.getName(), toIgnore, toInclude)) {
continue;
}
propsOut.add(bpw);
@@ -226,7 +231,25 @@ public abstract class BeanSerializerBase
* @since 2.8
*/
protected abstract BeanSerializerBase withIgnorals(Set<String> toIgnore);
-
+
+ /**
+ * Mutant factory used for creating a new instance with additional
+ * set of properties to ignore or include (from properties this instance otherwise has)
+ *
+ * @since 2.12
+ */
+ protected abstract BeanSerializerBase withIgnorals(Set<String> toIgnore, Set<String> toInclude);
+
+ /**
+ * Mutant factory used for creating a new instance with additional
+ * set of properties to ignore or include (from properties this instance otherwise has)
+ *
+ * @since 2.12
+ */
+ protected BeanSerializerBase withInclusions(Set<String> toInclude) {
+ return withIgnorals(Collections.<String>emptySet(), toInclude);
+ }
+
/**
* Mutant factory used for creating a new instance with additional
* set of properties to ignore (from properties this instance otherwise has)
@@ -476,6 +499,7 @@ public abstract class BeanSerializerBase
// at a later point
int idPropOrigIndex = 0;
Set<String> ignoredProps = null;
+ Set<String> includedProps = null;
Object newFilterId = null;
// Then we may have an override for Object Id
@@ -484,6 +508,10 @@ public abstract class BeanSerializerBase
if (ignorals != null) {
ignoredProps = ignorals.findIgnoredForSerialization();
}
+ JsonIncludeProperties.Value inclusions = intr.findPropertyInclusions(accessor);
+ if (inclusions != null) {
+ includedProps = inclusions.getIncluded();
+ }
ObjectIdInfo objectIdInfo = intr.findObjectIdInfo(accessor);
if (objectIdInfo == null) {
// no ObjectId override, but maybe ObjectIdRef?
@@ -569,8 +597,9 @@ public abstract class BeanSerializerBase
}
}
// And possibly add more properties to ignore
+ contextual = contextual.withInclusions(includedProps);
if ((ignoredProps != null) && !ignoredProps.isEmpty()) {
- contextual = contextual.withIgnorals(ignoredProps);
+ contextual = contextual.withIgnorals(ignoredProps, includedProps);
}
if (newFilterId != null) {
contextual = contextual.withFilterId(newFilterId);
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java
index 66056ff7a..34992f4f2 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java
@@ -7,6 +7,7 @@ import java.util.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonIncludeProperties;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.type.WritableTypeId;
import com.fasterxml.jackson.databind.*;
@@ -15,6 +16,7 @@ import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonMapFormatVisitor;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
+import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.PropertyFilter;
@@ -23,6 +25,7 @@ import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.ArrayBuilders;
import com.fasterxml.jackson.databind.util.BeanUtil;
import com.fasterxml.jackson.databind.util.ClassUtil;
+import com.fasterxml.jackson.databind.util.IgnorePropertiesUtil;
/**
* Standard serializer implementation for serializing {link java.util.Map} types.
@@ -110,6 +113,11 @@ public class MapSerializer
protected final Set<String> _ignoredEntries;
/**
+ * Set of entries to include during serialization, if null, it is ignored, empty will include nothing.
+ */
+ protected final Set<String> _includedEntries;
+
+ /**
* Id of the property filter to use, if any; null if none.
*
* @since 2.3
@@ -157,10 +165,10 @@ public class MapSerializer
*/
/**
- * @since 2.5
+ * @since 2.12
*/
@SuppressWarnings("unchecked")
- protected MapSerializer(Set<String> ignoredEntries,
+ protected MapSerializer(Set<String> ignoredEntries, Set<String> includedEntries,
JavaType keyType, JavaType valueType, boolean valueTypeIsStatic,
TypeSerializer vts,
JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer)
@@ -168,6 +176,7 @@ public class MapSerializer
super(Map.class, false);
_ignoredEntries = ((ignoredEntries == null) || ignoredEntries.isEmpty())
? null : ignoredEntries;
+ _includedEntries = includedEntries;
_keyType = keyType;
_valueType = valueType;
_valueTypeIsStatic = valueTypeIsStatic;
@@ -182,14 +191,34 @@ public class MapSerializer
_suppressNulls = false;
}
+ /**
+ * @since 2.5
+ * @deprecated in 2.12, remove from 3.0
+ */
+ @Deprecated
+ protected MapSerializer(Set<String> ignoredEntries,
+ JavaType keyType, JavaType valueType, boolean valueTypeIsStatic,
+ TypeSerializer vts,
+ JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer)
+ {
+ this(ignoredEntries, null,
+ keyType, valueType, valueTypeIsStatic,
+ vts,
+ keySerializer, valueSerializer);
+ }
+
+ /**
+ * @since 2.12
+ */
@SuppressWarnings("unchecked")
protected MapSerializer(MapSerializer src, BeanProperty property,
JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer,
- Set<String> ignoredEntries)
+ Set<String> ignoredEntries, Set<String> includedEntries)
{
super(Map.class, false);
_ignoredEntries = ((ignoredEntries == null) || ignoredEntries.isEmpty())
? null : ignoredEntries;
+ _includedEntries = includedEntries;
_keyType = src._keyType;
_valueType = src._valueType;
_valueTypeIsStatic = src._valueTypeIsStatic;
@@ -206,6 +235,18 @@ public class MapSerializer
}
/**
+ * @deprecated in 2.12, remove from 3.0
+ */
+ @SuppressWarnings("unchecked")
+ @Deprecated
+ protected MapSerializer(MapSerializer src, BeanProperty property,
+ JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer,
+ Set<String> ignoredEntries)
+ {
+ this(src, property, keySerializer, valueSerializer, ignoredEntries, null);
+ }
+
+ /**
* @since 2.9
*/
protected MapSerializer(MapSerializer src, TypeSerializer vts,
@@ -213,6 +254,7 @@ public class MapSerializer
{
super(Map.class, false);
_ignoredEntries = src._ignoredEntries;
+ _includedEntries = src._includedEntries;
_keyType = src._keyType;
_valueType = src._valueType;
_valueTypeIsStatic = src._valueTypeIsStatic;
@@ -233,6 +275,7 @@ public class MapSerializer
{
super(Map.class, false);
_ignoredEntries = src._ignoredEntries;
+ _includedEntries = src._includedEntries;
_keyType = src._keyType;
_valueType = src._valueType;
_valueTypeIsStatic = src._valueTypeIsStatic;
@@ -258,20 +301,30 @@ public class MapSerializer
}
/**
- * @since 2.4
+ * @since 2.12
*/
public MapSerializer withResolved(BeanProperty property,
- JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer,
- Set<String> ignored, boolean sortKeys)
+ JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer,
+ Set<String> ignored, Set<String> included, boolean sortKeys)
{
_ensureOverride("withResolved");
- MapSerializer ser = new MapSerializer(this, property, keySerializer, valueSerializer, ignored);
+ MapSerializer ser = new MapSerializer(this, property, keySerializer, valueSerializer, ignored, included);
if (sortKeys != ser._sortKeys) {
ser = new MapSerializer(ser, _filterId, sortKeys);
}
return ser;
}
+ /**
+ * @since 2.4
+ */
+ public MapSerializer withResolved(BeanProperty property,
+ JsonSerializer<?> keySerializer, JsonSerializer<?> valueSerializer,
+ Set<String> ignored, boolean sortKeys)
+ {
+ return withResolved(property, keySerializer, valueSerializer, ignored, null, sortKeys);
+ }
+
@Override
public MapSerializer withFilterId(Object filterId) {
if (_filterId == filterId) {
@@ -296,9 +349,9 @@ public class MapSerializer
}
/**
- * @since 2.8
+ * @since 2.12
*/
- public static MapSerializer construct(Set<String> ignoredEntries, JavaType mapType,
+ public static MapSerializer construct(Set<String> ignoredEntries, Set<String> includedEntries, JavaType mapType,
boolean staticValueType, TypeSerializer vts,
JsonSerializer<Object> keySerializer, JsonSerializer<Object> valueSerializer,
Object filterId)
@@ -326,7 +379,7 @@ public class MapSerializer
staticValueType = false;
}
}
- MapSerializer ser = new MapSerializer(ignoredEntries, keyType, valueType, staticValueType, vts,
+ MapSerializer ser = new MapSerializer(ignoredEntries, includedEntries, keyType, valueType, staticValueType, vts,
keySerializer, valueSerializer);
if (filterId != null) {
ser = ser.withFilterId(filterId);
@@ -335,6 +388,17 @@ public class MapSerializer
}
/**
+ * @since 2.8
+ */
+ public static MapSerializer construct(Set<String> ignoredEntries, JavaType mapType,
+ boolean staticValueType, TypeSerializer vts,
+ JsonSerializer<Object> keySerializer, JsonSerializer<Object> valueSerializer,
+ Object filterId)
+ {
+ return construct(ignoredEntries, null, mapType, staticValueType, vts, keySerializer, valueSerializer, filterId);
+ }
+
+ /**
* @since 2.9
*/
protected void _ensureOverride(String method) {
@@ -439,8 +503,10 @@ public class MapSerializer
keySer = provider.handleSecondaryContextualization(keySer, property);
}
Set<String> ignored = _ignoredEntries;
+ Set<String> included = _includedEntries;
boolean sortKeys = false;
if (_neitherNull(propertyAcc, intr)) {
+ // ignorals
JsonIgnoreProperties.Value ignorals = intr.findPropertyIgnorals(propertyAcc);
if (ignorals != null){
Set<String> newIgnored = ignorals.findIgnoredForSerialization();
@@ -451,6 +517,18 @@ public class MapSerializer
}
}
}
+ // inclusions
+ JsonIncludeProperties.Value inclusions = intr.findPropertyInclusions(propertyAcc);
+ if (inclusions != null) {
+ Set<String> newIncluded = inclusions.getIncluded();
+ if (newIncluded != null) {
+ included = (included == null) ? new HashSet<String>() : new HashSet<String>(included);
+ for (String str : newIncluded) {
+ included.add(str);
+ }
+ }
+ }
+ // sort key
Boolean b = intr.findSerializationSortAlphabetically(propertyAcc);
sortKeys = Boolean.TRUE.equals(b);
}
@@ -461,7 +539,7 @@ public class MapSerializer
sortKeys = B.booleanValue();
}
}
- MapSerializer mser = withResolved(property, keySer, ser, ignored, sortKeys);
+ MapSerializer mser = withResolved(property, keySer, ser, ignored, included, sortKeys);
// [databind#307]: allow filtering
if (property != null) {
@@ -698,6 +776,7 @@ public class MapSerializer
}
final JsonSerializer<Object> keySerializer = _keySerializer;
final Set<String> ignored = _ignoredEntries;
+ final Set<String> included = _includedEntries;
Object keyElem = null;
try {
@@ -709,7 +788,7 @@ public class MapSerializer
provider.findNullKeySerializer(_keyType, _property).serialize(null, gen, provider);
} else {
// One twist: is entry ignorable? If so, skip
- if ((ignored != null) && ignored.contains(keyElem)) {
+ if (IgnorePropertiesUtil.shouldIgnore(keyElem, ignored, included)) {
continue;
}
keySerializer.serialize(keyElem, gen, provider);
@@ -743,6 +822,7 @@ public class MapSerializer
return;
}
final Set<String> ignored = _ignoredEntries;
+ final Set<String> included = _includedEntries;
final boolean checkEmpty = (MARKER_FOR_EMPTY == suppressableValue);
for (Map.Entry<?,?> entry : value.entrySet()) {
@@ -752,7 +832,7 @@ public class MapSerializer
if (keyElem == null) {
keySerializer = provider.findNullKeySerializer(_keyType, _property);
} else {
- if (ignored != null && ignored.contains(keyElem)) continue;
+ if (IgnorePropertiesUtil.shouldIgnore(keyElem, ignored, included)) continue;
keySerializer = _keySerializer;
}
@@ -801,11 +881,12 @@ public class MapSerializer
{
final JsonSerializer<Object> keySerializer = _keySerializer;
final Set<String> ignored = _ignoredEntries;
+ final Set<String> included = _includedEntries;
final TypeSerializer typeSer = _valueTypeSerializer;
for (Map.Entry<?,?> entry : value.entrySet()) {
Object keyElem = entry.getKey();
- if (ignored != null && ignored.contains(keyElem)) continue;
+ if (IgnorePropertiesUtil.shouldIgnore(keyElem, ignored, included)) continue;
if (keyElem == null) {
provider.findNullKeySerializer(_keyType, _property).serialize(null, gen, provider);
@@ -841,13 +922,14 @@ public class MapSerializer
throws IOException
{
final Set<String> ignored = _ignoredEntries;
+ final Set<String> included = _includedEntries;
final MapProperty prop = new MapProperty(_valueTypeSerializer, _property);
final boolean checkEmpty = (MARKER_FOR_EMPTY == suppressableValue);
for (Map.Entry<?,?> entry : value.entrySet()) {
// First, serialize key; unless ignorable by key
final Object keyElem = entry.getKey();
- if (ignored != null && ignored.contains(keyElem)) continue;
+ if (IgnorePropertiesUtil.shouldIgnore(keyElem, ignored, included)) continue;
JsonSerializer<Object> keySerializer;
if (keyElem == null) {
@@ -899,6 +981,7 @@ public class MapSerializer
throws IOException
{
final Set<String> ignored = _ignoredEntries;
+ final Set<String> included = _includedEntries;
final boolean checkEmpty = (MARKER_FOR_EMPTY == suppressableValue);
for (Map.Entry<?,?> entry : value.entrySet()) {
@@ -908,7 +991,7 @@ public class MapSerializer
keySerializer = provider.findNullKeySerializer(_keyType, _property);
} else {
// One twist: is entry ignorable? If so, skip
- if (ignored != null && ignored.contains(keyElem)) continue;
+ if (IgnorePropertiesUtil.shouldIgnore(keyElem, ignored, included)) continue;
keySerializer = _keySerializer;
}
final Object valueElem = entry.getValue();
@@ -959,13 +1042,14 @@ public class MapSerializer
throws IOException
{
final Set<String> ignored = _ignoredEntries;
+ final Set<String> included = _includedEntries;
final MapProperty prop = new MapProperty(_valueTypeSerializer, _property);
final boolean checkEmpty = (MARKER_FOR_EMPTY == suppressableValue);
for (Map.Entry<?,?> entry : value.entrySet()) {
// First, serialize key; unless ignorable by key
final Object keyElem = entry.getKey();
- if (ignored != null && ignored.contains(keyElem)) continue;
+ if (IgnorePropertiesUtil.shouldIgnore(keyElem, ignored, included)) continue;
JsonSerializer<Object> keySerializer;
if (keyElem == null) {