You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2017/09/24 21:35:54 UTC
johnzon git commit: JOHNZON-135 add MapperConfig switch to enable
deduplication
Repository: johnzon
Updated Branches:
refs/heads/master b722755ae -> cc24e8e1c
JOHNZON-135 add MapperConfig switch to enable deduplication
Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/cc24e8e1
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/cc24e8e1
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/cc24e8e1
Branch: refs/heads/master
Commit: cc24e8e1cc63405d9493e0872c7149066a6e1880
Parents: b722755
Author: Mark Struberg <st...@apache.org>
Authored: Sun Sep 24 23:22:23 2017 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Sun Sep 24 23:22:23 2017 +0200
----------------------------------------------------------------------
.../johnzon/jsonb/JohnzonIgnoreNestedTest.java | 4 +--
.../java/org/apache/johnzon/mapper/Mapper.java | 4 +--
.../apache/johnzon/mapper/MapperBuilder.java | 13 +++++++-
.../org/apache/johnzon/mapper/MapperConfig.java | 11 ++++++-
.../johnzon/mapper/MappingGeneratorImpl.java | 19 ++++++-----
.../johnzon/mapper/MappingParserImpl.java | 33 ++++++++++++++------
.../johnzon/mapper/CircularObjectsTest.java | 4 +--
.../johnzon/mapper/JohnzonIgnoreNestedTest.java | 4 +--
.../apache/johnzon/mapper/MapperConfigTest.java | 2 +-
.../java/org/superbiz/ExtendMappingTest.java | 2 +-
10 files changed, 67 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JohnzonIgnoreNestedTest.java
----------------------------------------------------------------------
diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JohnzonIgnoreNestedTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JohnzonIgnoreNestedTest.java
index 5f1718d..2bf3815 100644
--- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JohnzonIgnoreNestedTest.java
+++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JohnzonIgnoreNestedTest.java
@@ -35,7 +35,7 @@ public class JohnzonIgnoreNestedTest {
to.name = "to";
final Person from = new Person();
- from.name = "from";
+ from.name = "myname";
from.street = "blastreet 1";
from.description = "gets ignored";
@@ -44,7 +44,7 @@ public class JohnzonIgnoreNestedTest {
final Jsonb jsonb = JsonbProvider.provider().create().build();
- assertEquals("{\"name\":\"to\",\"person\":{\"name\":\"from\"},\"persons\":[\"/person\"]}", jsonb.toJson(to));
+ assertEquals("{\"name\":\"to\",\"person\":{\"name\":\"myname\"},\"persons\":[{\"name\":\"myname\"}]}", jsonb.toJson(to));
}
public static class To {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
index a369b2b..7d411c3 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
@@ -126,12 +126,12 @@ public class Mapper implements Closeable {
}
final JsonGenerator generator = generatorFactory.createGenerator(stream(stream));
- writeObject(object, generator, null, new JsonPointerTracker(null, "/"));
+ writeObject(object, generator, null, config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
}
public void writeObject(final Object object, final OutputStream stream) {
final JsonGenerator generator = generatorFactory.createGenerator(stream(stream), config.getEncoding());
- writeObject(object, generator, null, new JsonPointerTracker(null, "/"));
+ writeObject(object, generator, null, config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
}
private void writeObject(final Object object, final JsonGenerator generator, final Collection<String> ignored, JsonPointerTracker jsonPointer) {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
index 09457cb..d8998cd 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
@@ -133,6 +133,7 @@ public class MapperBuilder {
private boolean failOnUnknownProperties;
private SerializeValueFilter serializeValueFilter;
private boolean useBigDecimalForFloats;
+ private boolean deduplicateObjects;
public Mapper build() {
if (readerFactory == null || generatorFactory == null) {
@@ -223,7 +224,7 @@ public class MapperBuilder {
skipNull, skipEmptyArray,
treatByteArrayAsBase64, treatByteArrayAsBase64URL, readAttributeBeforeWrite,
accessMode, encoding, attributeOrder, enforceQuoteString, failOnUnknownProperties,
- serializeValueFilter, useBigDecimalForFloats),
+ serializeValueFilter, useBigDecimalForFloats, deduplicateObjects),
closeables);
}
@@ -417,4 +418,14 @@ public class MapperBuilder {
this.autoAdjustStringBuffers = autoAdjustStringBuffers;
return this;
}
+
+ /**
+ * If any non-primitive Java Object gets serialised more than just one time,
+ * then we write a JsonPointer to the first occurrence instead.
+ * This will effectively also avoid endless loops in data with cycles!
+ */
+ public MapperBuilder setDeduplicateObjects(boolean deduplicateObjects) {
+ this.deduplicateObjects = deduplicateObjects;
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
index 5e9ccea..71cb51a 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
@@ -66,6 +66,7 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig implements Cloneable {
private final boolean failOnUnknown;
private final SerializeValueFilter serializeValueFilter;
private final boolean useBigDecimalForFloats;
+ private final boolean deduplicateObjects;
private final Map<Class<?>, ObjectConverter.Writer<?>> objectConverterWriterCache;
private final Map<Class<?>, ObjectConverter.Reader<?>> objectConverterReaderCache;
@@ -82,7 +83,9 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig implements Cloneable {
final AccessMode accessMode, final Charset encoding,
final Comparator<String> attributeOrder,
final boolean enforceQuoteString, final boolean failOnUnknown,
- final SerializeValueFilter serializeValueFilter, boolean useBigDecimalForFloats) {
+ final SerializeValueFilter serializeValueFilter,
+ final boolean useBigDecimalForFloats,
+ final boolean deduplicateObjects) {
//CHECKSTYLE:ON
this.objectConverterWriters = objectConverterWriters;
this.objectConverterReaders = objectConverterReaders;
@@ -104,8 +107,10 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig implements Cloneable {
this.objectConverterWriterCache = new HashMap<Class<?>, ObjectConverter.Writer<?>>(objectConverterWriters.size());
this.objectConverterReaderCache = new HashMap<Class<?>, ObjectConverter.Reader<?>>(objectConverterReaders.size());
this.useBigDecimalForFloats = useBigDecimalForFloats;
+ this.deduplicateObjects = deduplicateObjects;
}
+
public SerializeValueFilter getSerializeValueFilter() {
return serializeValueFilter;
}
@@ -300,4 +305,8 @@ public /* DON'T MAKE IT HIDDEN */ class MapperConfig implements Cloneable {
public boolean isUseBigDecimalForFloats() {
return useBigDecimalForFloats;
}
+
+ public boolean isDeduplicateObjects() {
+ return deduplicateObjects;
+ }
}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
index 6d73dfa..20b50ce 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
@@ -29,6 +29,7 @@ import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -36,13 +37,15 @@ public class MappingGeneratorImpl implements MappingGenerator {
private final MapperConfig config;
private final JsonGenerator generator;
private final Mappings mappings;
- private Map<Object, String> jsonPointers = new HashMap<>();
+ private Map<Object, String> jsonPointers;
MappingGeneratorImpl(MapperConfig config, JsonGenerator jsonGenerator, final Mappings mappings) {
this.config = config;
this.generator = jsonGenerator;
this.mappings = mappings;
+
+ this.jsonPointers = config.isDeduplicateObjects() ? new HashMap<>() : Collections.emptyMap();
}
@Override
@@ -57,7 +60,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
} else if (object instanceof JsonValue) {
generator.write((JsonValue) object);
} else {
- doWriteObject(object, generator, false, null, new JsonPointerTracker(null, "/"));
+ doWriteObject(object, generator, false, null, config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
}
return this;
}
@@ -89,7 +92,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
}
if (object instanceof Iterable) {
- doWriteIterable((Iterable) object, ignoredProperties, new JsonPointerTracker(null, "/"));
+ doWriteIterable((Iterable) object, ignoredProperties, config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
return;
}
@@ -291,7 +294,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
val,
getter.objectConverter,
getter.ignoreNested,
- new JsonPointerTracker(jsonPointer, getterEntry.getKey()));
+ config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, getterEntry.getKey()) : null);
}
}
@@ -341,7 +344,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
if (valJsonPointer != null) {
writePrimitives(valJsonPointer);
} else {
- writeItem(itemConverter != null ? itemConverter.from(o) : o, ignoredProperties, new JsonPointerTracker(jsonPointer, i));
+ writeItem(itemConverter != null ? itemConverter.from(o) : o, ignoredProperties, config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, i) : null);
}
}
generator.writeEnd();
@@ -354,7 +357,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
if (valJsonPointer != null) {
writePrimitives(valJsonPointer);
} else {
- writeItem(itemConverter != null ? itemConverter.from(o) : o, ignoredProperties, new JsonPointerTracker(jsonPointer, i));
+ writeItem(itemConverter != null ? itemConverter.from(o) : o, ignoredProperties, config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, i) : null);
}
i++;
}
@@ -413,7 +416,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
if (t == null) {
generator.writeNull();
} else {
- writeItem(t, ignoredProperties, new JsonPointerTracker(jsonPointer, i));
+ writeItem(t, ignoredProperties, config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, i) : null);
}
}
generator.writeEnd();
@@ -439,7 +442,7 @@ public class MappingGeneratorImpl implements MappingGenerator {
if (t == null) {
generator.writeNull();
} else {
- writeItem(t, ignoredProperties, new JsonPointerTracker(jsonPointer, i));
+ writeItem(t, ignoredProperties, config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, i) : null);
}
}
i++;
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
index 074cc02..101b438 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
@@ -45,6 +45,7 @@ import java.math.BigInteger;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.Deque;
import java.util.EnumMap;
import java.util.EnumSet;
@@ -95,7 +96,7 @@ public class MappingParserImpl implements MappingParser {
* key: JsonPointer
* value: already deserialised Object
*/
- private Map<String, Object> jsonPointers = new HashMap<>();
+ private Map<String, Object> jsonPointers;
public MappingParserImpl(MapperConfig config, Mappings mappings, JsonReader jsonReader) {
@@ -105,6 +106,12 @@ public class MappingParserImpl implements MappingParser {
this.jsonReader = jsonReader;
reverseAdaptersRegistry = new ConcurrentHashMap<>(config.getAdapters().size());
+
+ if (config.isDeduplicateObjects()) {
+ jsonPointers = new HashMap<>();
+ } else {
+ jsonPointers = Collections.emptyMap();
+ }
}
@@ -131,7 +138,7 @@ public class MappingParserImpl implements MappingParser {
return (T) jsonValue;
}
if (JsonObject.class.isInstance(jsonValue)) {
- return (T) buildObject(targetType, JsonObject.class.cast(jsonValue), applyObjectConverter, new JsonPointerTracker(null, "/"));
+ return (T) buildObject(targetType, JsonObject.class.cast(jsonValue), applyObjectConverter, config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
}
if (JsonString.class.isInstance(jsonValue) && (targetType == String.class || targetType == Object.class)) {
return (T) JsonString.class.cast(jsonValue).getString();
@@ -160,7 +167,8 @@ public class MappingParserImpl implements MappingParser {
if (Class.class.isInstance(targetType) && ((Class) targetType).isArray()) {
final Class componentType = ((Class) targetType).getComponentType();
- return (T) buildArrayWithComponentType(jsonArray, componentType, config.findAdapter(componentType), new JsonPointerTracker(null, "/"));
+ return (T) buildArrayWithComponentType(jsonArray, componentType, config.findAdapter(componentType),
+ config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
}
if (ParameterizedType.class.isInstance(targetType)) {
@@ -171,10 +179,12 @@ public class MappingParserImpl implements MappingParser {
}
final Type arg = pt.getActualTypeArguments()[0];
- return (T) mapCollection(mapping, jsonArray, Class.class.isInstance(arg) ? config.findAdapter(Class.class.cast(arg)) : null, new JsonPointerTracker(null, "/"));
+ return (T) mapCollection(mapping, jsonArray, Class.class.isInstance(arg) ? config.findAdapter(Class.class.cast(arg)) : null,
+ config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null);
}
if (Object.class == targetType) {
- return (T) new ArrayList(asList(Object[].class.cast(buildArrayWithComponentType(jsonArray, Object.class, null, new JsonPointerTracker(null, "/")))));
+ return (T) new ArrayList(asList(Object[].class.cast(buildArrayWithComponentType(jsonArray, Object.class, null,
+ config.isDeduplicateObjects() ? new JsonPointerTracker(null, "/") : null))));
}
}
if (JsonValue.NULL.equals(jsonValue)) {
@@ -295,7 +305,9 @@ public class MappingParserImpl implements MappingParser {
t = classMapping.factory.create(createParameters(classMapping, object, jsonPointer));
}
// store the new object under it's jsonPointer in case it gets referenced later
- jsonPointers.put(jsonPointer.toString(), t);
+ if (config.isDeduplicateObjects()) {
+ jsonPointers.put(jsonPointer.toString(), t);
+ }
for (final Map.Entry<String, Mappings.Setter> setter : classMapping.setters.entrySet()) {
final JsonValue jsonValue = object.get(setter.getKey());
@@ -335,7 +347,8 @@ public class MappingParserImpl implements MappingParser {
final String key = entry.getKey();
if (!classMapping.setters.containsKey(key)) {
try {
- classMapping.anySetter.invoke(t, key, toValue(null, entry.getValue(), null, null, Object.class, null, new JsonPointerTracker(jsonPointer, entry.getKey())));
+ classMapping.anySetter.invoke(t, key, toValue(null, entry.getValue(), null, null, Object.class, null,
+ config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, entry.getKey()) : null));
} catch (final IllegalAccessException e) {
throw new IllegalStateException(e);
} catch (final InvocationTargetException e) {
@@ -616,7 +629,8 @@ public class MappingParserImpl implements MappingParser {
int i = 0;
for (final JsonValue value : jsonArray) {
- collection.add(JsonValue.NULL.equals(value) ? null : toObject(null, value, mapping.arg, itemConverter, new JsonPointerTracker(jsonPointer, i)));
+ collection.add(JsonValue.NULL.equals(value) ? null : toObject(null, value, mapping.arg, itemConverter,
+ config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, i) : null));
i++;
}
@@ -647,7 +661,8 @@ public class MappingParserImpl implements MappingParser {
mapping.factory.getParameterConverter()[i],
mapping.factory.getParameterItemConverter()[i],
mapping.factory.getParameterTypes()[i],
- null, new JsonPointerTracker(jsonPointer, paramName)); //X TODO ObjectConverter in @JOhnzonConverter with Constructors!
+ null,
+ config.isDeduplicateObjects() ? new JsonPointerTracker(jsonPointer, paramName) : null); //X TODO ObjectConverter in @JOhnzonConverter with Constructors!
}
return objects;
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/CircularObjectsTest.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/CircularObjectsTest.java b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/CircularObjectsTest.java
index af0414a..4af1d29 100644
--- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/CircularObjectsTest.java
+++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/CircularObjectsTest.java
@@ -41,7 +41,7 @@ public class CircularObjectsTest {
john.setMarriedTo(marry);
marry.setMarriedTo(john);
- Mapper mapper = new MapperBuilder().setAccessModeName("field").build();
+ Mapper mapper = new MapperBuilder().setAccessModeName("field").setDeduplicateObjects(true).build();
String ser = mapper.writeObjectAsString(john);
assertNotNull(ser);
@@ -82,7 +82,7 @@ public class CircularObjectsTest {
sue.setFather(karl);
sue.setMother(andrea);
- Mapper mapper = new MapperBuilder().setAccessModeName("field").build();
+ Mapper mapper = new MapperBuilder().setAccessModeName("field").setDeduplicateObjects(true).build();
{
// test karl
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/JohnzonIgnoreNestedTest.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/JohnzonIgnoreNestedTest.java b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/JohnzonIgnoreNestedTest.java
index 1c914d0..81d5f83 100644
--- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/JohnzonIgnoreNestedTest.java
+++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/JohnzonIgnoreNestedTest.java
@@ -33,7 +33,7 @@ public class JohnzonIgnoreNestedTest {
to.name = "to";
final Person from = new Person();
- from.name = "from";
+ from.name = "myname";
from.street = "blastreet 1";
from.description = "gets ignored";
@@ -41,7 +41,7 @@ public class JohnzonIgnoreNestedTest {
to.persons = singletonList(from);
final Mapper mapper = new MapperBuilder().setAttributeOrder(Comparator.naturalOrder()).build();
- assertEquals("{\"name\":\"to\",\"person\":{\"name\":\"from\"},\"persons\":[\"/person\"]}", mapper.writeObjectAsString(to));
+ assertEquals("{\"name\":\"to\",\"person\":{\"name\":\"myname\"},\"persons\":[{\"name\":\"myname\"}]}", mapper.writeObjectAsString(to));
}
public static class To {
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
index a84a1cd..0a9cc7f 100644
--- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
+++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/MapperConfigTest.java
@@ -166,7 +166,7 @@ public class MapperConfigTest {
new FieldAccessMode(true, true),
Charset.forName("UTF-8"),
null,
- false, false, null, false);
+ false, false, null, false, false);
}
http://git-wip-us.apache.org/repos/asf/johnzon/blob/cc24e8e1/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java b/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
index 6c0c3de..142ca18 100644
--- a/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
+++ b/johnzon-mapper/src/test/java/org/superbiz/ExtendMappingTest.java
@@ -71,7 +71,7 @@ public class ExtendMappingTest {
public int compare(final String o1, final String o2) {
return o1.compareTo(o2);
}
- }, false, false, null, false));
+ }, false, false, null, false, false));
}
@Override