Revert renaming RejectDuplicateKeysMode and it's values
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
index 977aa31..af0e9cf 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JohnzonJsonParserImpl.java
@@ -72,7 +72,7 @@
throw new IllegalStateException(current + " doesn't support getObject()");
}
- JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), DuplicateKeysMode.LAST, provider);
+ JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), RejectDuplicateKeysMode.DEFAULT, provider);
return jsonReader.readObject();
}
@@ -84,7 +84,7 @@
throw new IllegalStateException(current + " doesn't support getArray()");
}
- JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), DuplicateKeysMode.LAST, provider);
+ JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), RejectDuplicateKeysMode.DEFAULT, provider);
return jsonReader.readArray();
}
@@ -94,7 +94,7 @@
switch (current) {
case START_ARRAY:
case START_OBJECT:
- JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), DuplicateKeysMode.LAST, provider);
+ JsonReaderImpl jsonReader = new JsonReaderImpl(this, true, getCharArrayProvider(), RejectDuplicateKeysMode.DEFAULT, provider);
return jsonReader.readValue();
case VALUE_TRUE:
return JsonValue.TRUE;
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
index f98c14a..b1ad933 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonArrayBuilderImpl.java
@@ -35,7 +35,7 @@
import org.apache.johnzon.core.util.ArrayUtil;
class JsonArrayBuilderImpl implements JsonArrayBuilder, Serializable {
- private DuplicateKeysMode duplicateKeysMode;
+ private RejectDuplicateKeysMode rejectDuplicateKeysMode;
private JsonProviderImpl jsonProvider;
private List<JsonValue> tmpList;
private BufferStrategy.BufferProvider<char[]> bufferProvider;
@@ -46,18 +46,18 @@
public JsonArrayBuilderImpl(final JsonArray initialData,
final BufferStrategy.BufferProvider<char[]> provider,
- final DuplicateKeysMode duplicateKeysMode,
+ final RejectDuplicateKeysMode rejectDuplicateKeysMode,
final JsonProviderImpl jsonProvider) {
this.tmpList = new ArrayList<>(initialData);
this.bufferProvider = provider;
- this.duplicateKeysMode = duplicateKeysMode;
+ this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
this.jsonProvider = jsonProvider;
}
public JsonArrayBuilderImpl(final Collection<?> initialData, final BufferStrategy.BufferProvider<char[]> provider,
- final DuplicateKeysMode duplicateKeysMode, final JsonProviderImpl jsonProvider) {
+ final RejectDuplicateKeysMode rejectDuplicateKeysMode, final JsonProviderImpl jsonProvider) {
this.bufferProvider = provider;
- this.duplicateKeysMode = duplicateKeysMode;
+ this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
this.tmpList = new ArrayList<>();
if (!initialData.isEmpty()) {
for (Object initialValue : initialData) {
@@ -229,12 +229,12 @@
} else if (value instanceof String) {
add((String) value);
} else if (value instanceof Map) {
- add(new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, duplicateKeysMode, jsonProvider).build());
+ add(new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, rejectDuplicateKeysMode, jsonProvider).build());
} else if (value instanceof Collection) {
- add(new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, duplicateKeysMode, jsonProvider).build());
+ add(new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, rejectDuplicateKeysMode, jsonProvider).build());
} else if (value.getClass().isArray()) {
final Collection<Object> collection = ArrayUtil.newCollection(value);
- add(new JsonArrayBuilderImpl(collection, bufferProvider, duplicateKeysMode, jsonProvider).build());
+ add(new JsonArrayBuilderImpl(collection, bufferProvider, rejectDuplicateKeysMode, jsonProvider).build());
} else {
throw new JsonException("Illegal JSON type! type=" + value.getClass());
}
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
index 93d8fe8..8323a1a 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonBuilderFactoryImpl.java
@@ -36,19 +36,19 @@
class JsonBuilderFactoryImpl implements JsonBuilderFactory, Serializable {
private final Map<String, Object> internalConfig = new HashMap<String, Object>();
- private DuplicateKeysMode duplicateKeysMode;
+ private RejectDuplicateKeysMode rejectDuplicateKeysMode;
private JsonProviderImpl provider;
private BufferStrategy.BufferProvider<char[]> bufferProvider;
- private static final List<String> SUPPORTED_CONFIG_KEYS = DuplicateKeysMode.CONFIG_KEYS;
+ private static final List<String> SUPPORTED_CONFIG_KEYS = RejectDuplicateKeysMode.CONFIG_KEYS;
protected JsonBuilderFactoryImpl() {
// no-op: serialization
}
JsonBuilderFactoryImpl(final Map<String, ?> config, final BufferStrategy.BufferProvider<char[]> bufferProvider,
- final DuplicateKeysMode duplicateKeysMode, final JsonProviderImpl provider) {
+ final RejectDuplicateKeysMode rejectDuplicateKeysMode, final JsonProviderImpl provider) {
this.bufferProvider = bufferProvider;
- this.duplicateKeysMode = duplicateKeysMode;
+ this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
this.provider = provider;
if (config != null && !config.isEmpty()) {
for (String configKey : config.keySet()) {
@@ -64,28 +64,28 @@
@Override
public JsonObjectBuilder createObjectBuilder() {
- return new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+ return new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
}
@Override
public JsonObjectBuilder createObjectBuilder(JsonObject initialData) {
- return new JsonObjectBuilderImpl(initialData, bufferProvider, duplicateKeysMode, provider);
+ return new JsonObjectBuilderImpl(initialData, bufferProvider, rejectDuplicateKeysMode, provider);
}
@Override
public JsonArrayBuilder createArrayBuilder() {
- return new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider);
+ return new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider);
}
@Override
public JsonArrayBuilder createArrayBuilder(JsonArray initialData) {
- return new JsonArrayBuilderImpl(initialData, bufferProvider, duplicateKeysMode, provider);
+ return new JsonArrayBuilderImpl(initialData, bufferProvider, rejectDuplicateKeysMode, provider);
}
@Override
public JsonArrayBuilder createArrayBuilder(Collection<?> initialData) {
- return new JsonArrayBuilderImpl(initialData, bufferProvider, duplicateKeysMode, provider);
+ return new JsonArrayBuilderImpl(initialData, bufferProvider, rejectDuplicateKeysMode, provider);
}
@Override
@@ -95,7 +95,7 @@
@Override
public JsonObjectBuilder createObjectBuilder(Map<String, Object> initialValues) {
- return new JsonObjectBuilderImpl(initialValues, bufferProvider, duplicateKeysMode, provider);
+ return new JsonObjectBuilderImpl(initialValues, bufferProvider, rejectDuplicateKeysMode, provider);
}
}
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java
index ddf6a91..221f55d 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchDiff.java
@@ -48,7 +48,7 @@
}
private JsonValue diff(JsonValue source, JsonValue target) {
- JsonObjectBuilder builder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, DuplicateKeysMode.LAST, provider);
+ JsonObjectBuilder builder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, RejectDuplicateKeysMode.DEFAULT, provider);
if (isJsonObject(source) && isJsonObject(target)) {
JsonObject srcObj = source.asJsonObject();
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java
index 8ad4919..a974cca 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonMergePatchImpl.java
@@ -61,7 +61,7 @@
}
private JsonValue applyJsonObjectPatch(JsonObject jsonObject, JsonObject patch) {
- JsonObjectBuilder builder = new JsonObjectBuilderImpl(jsonObject, bufferProvider, DuplicateKeysMode.LAST, provider);
+ JsonObjectBuilder builder = new JsonObjectBuilderImpl(jsonObject, bufferProvider, RejectDuplicateKeysMode.DEFAULT, provider);
for (Map.Entry<String, JsonValue> patchAttrib : patch.entrySet()) {
String attribName = patchAttrib.getKey();
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
index 6ec1e21..59b9cdd 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectBuilderImpl.java
@@ -36,7 +36,7 @@
import org.apache.johnzon.core.util.ArrayUtil;
class JsonObjectBuilderImpl implements JsonObjectBuilder, Serializable {
- private DuplicateKeysMode duplicateKeysMode;
+ private RejectDuplicateKeysMode rejectDuplicateKeysMode;
private JsonProviderImpl provider;
private BufferStrategy.BufferProvider<char[]> bufferProvider;
private Map<String, JsonValue> attributeMap = new LinkedHashMap<>();
@@ -47,20 +47,20 @@
public JsonObjectBuilderImpl(final JsonObject initialData,
final BufferStrategy.BufferProvider<char[]> bufferProvider,
- final DuplicateKeysMode duplicateKeysMode,
+ final RejectDuplicateKeysMode rejectDuplicateKeysMode,
final JsonProviderImpl provider) {
this.bufferProvider = bufferProvider;
- this.duplicateKeysMode = duplicateKeysMode;
+ this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
this.provider = provider;
this.attributeMap = new LinkedHashMap<>(initialData);
}
public JsonObjectBuilderImpl(final Map<String, Object> initialValues,
final BufferStrategy.BufferProvider<char[]> bufferProvider,
- final DuplicateKeysMode duplicateKeysMode,
+ final RejectDuplicateKeysMode rejectDuplicateKeysMode,
final JsonProviderImpl provider) {
this.bufferProvider = bufferProvider;
- this.duplicateKeysMode = duplicateKeysMode;
+ this.rejectDuplicateKeysMode = rejectDuplicateKeysMode;
this.provider = provider;
if (!initialValues.isEmpty()) {
for (Map.Entry<String, Object> entry : initialValues.entrySet()) {
@@ -93,12 +93,12 @@
} else if (value == null) {
addNull(name);
} else if (value instanceof Map) {
- add(name, new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, duplicateKeysMode, provider).build());
+ add(name, new JsonObjectBuilderImpl(Map.class.cast(value), bufferProvider, rejectDuplicateKeysMode, provider).build());
} else if (value instanceof Collection) {
- add(name, new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, duplicateKeysMode, provider).build());
+ add(name, new JsonArrayBuilderImpl(Collection.class.cast(value), bufferProvider, rejectDuplicateKeysMode, provider).build());
} else if (value.getClass().isArray()) {
final Collection<Object> collection = ArrayUtil.newCollection(value);
- add(name, new JsonArrayBuilderImpl(collection, bufferProvider, duplicateKeysMode, provider).build());
+ add(name, new JsonArrayBuilderImpl(collection, bufferProvider, rejectDuplicateKeysMode, provider).build());
} else {
throw new JsonException("Illegal JSON type! name=" + name + " type=" + value.getClass());
}
@@ -189,7 +189,7 @@
if(value == null) {
throw new NullPointerException("value/builder must not be null for name: " + name);
}
- duplicateKeysMode.put().put(attributeMap, name, value);
+ rejectDuplicateKeysMode.put().put(attributeMap, name, value);
}
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
index 158562a..fce0fac 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonProviderImpl.java
@@ -62,7 +62,7 @@
private final JsonGeneratorFactory generatorFactory = new JsonGeneratorFactoryImpl(null);
private final JsonWriterFactory writerFactory = new JsonWriterFactoryImpl(null);
private final Supplier<JsonBuilderFactory> builderFactory = new Cached<>(() ->
- new JsonBuilderFactoryImpl(null, bufferProvider.get(), DuplicateKeysMode.LAST, this));
+ new JsonBuilderFactoryImpl(null, bufferProvider.get(), RejectDuplicateKeysMode.DEFAULT, this));
private int maxBigDecimalScale = Integer.getInteger("johnzon.max-big-decimal-scale", 1_000);
@Override
public JsonParser createParser(final InputStream in) {
@@ -193,7 +193,7 @@
public JsonBuilderFactory createBuilderFactory(final Map<String, ?> config) {
final JsonBuilderFactory builderFactory = this.builderFactory.get();
return (config == null || config.isEmpty()) ?
- builderFactory : new JsonBuilderFactoryImpl(config, bufferProvider.get(), DuplicateKeysMode.from(config), this);
+ builderFactory : new JsonBuilderFactoryImpl(config, bufferProvider.get(), RejectDuplicateKeysMode.from(config), this);
}
@Override
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
index 050a4b8..cd1081e 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderFactoryImpl.java
@@ -30,20 +30,20 @@
import jakarta.json.stream.JsonParser;
class JsonReaderFactoryImpl extends AbstractJsonFactory implements JsonReaderFactory {
- static final Collection<String> SUPPORTED_CONFIG_KEYS = DuplicateKeysMode.CONFIG_KEYS;
+ static final Collection<String> SUPPORTED_CONFIG_KEYS = RejectDuplicateKeysMode.CONFIG_KEYS;
private final JsonParserFactoryImpl parserFactory;
- private final DuplicateKeysMode rejectDuplicateKeys;
+ private final RejectDuplicateKeysMode rejectDuplicateKeys;
private JsonProviderImpl provider;
JsonReaderFactoryImpl(final Map<String, ?> config, final JsonProviderImpl provider) {
super(config, SUPPORTED_CONFIG_KEYS, JsonParserFactoryImpl.SUPPORTED_CONFIG_KEYS);
this.provider = provider;
if (!internalConfig.isEmpty()) {
- DuplicateKeysMode.CONFIG_KEYS.forEach(internalConfig::remove);
+ RejectDuplicateKeysMode.CONFIG_KEYS.forEach(internalConfig::remove);
}
this.parserFactory = new JsonParserFactoryImpl(internalConfig, provider);
- this.rejectDuplicateKeys = DuplicateKeysMode.from(config);
+ this.rejectDuplicateKeys = RejectDuplicateKeysMode.from(config);
}
@Override
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
index a8c70ee..b615892 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonReaderImpl.java
@@ -37,14 +37,14 @@
private final JohnzonJsonParser parser;
private final BufferStrategy.BufferProvider<char[]> bufferProvider;
private JsonProviderImpl provider;
- private final DuplicateKeysMode duplicateKeysMode;
+ private final RejectDuplicateKeysMode rejectDuplicateKeysMode;
private boolean closed = false;
private boolean subStreamReader;
public JsonReaderImpl(final JsonParser parser, final BufferStrategy.BufferProvider<char[]> bufferProvider,
- final DuplicateKeysMode duplicateKeysMode, final JsonProviderImpl provider) {
- this(parser, false, bufferProvider, duplicateKeysMode, provider);
+ final RejectDuplicateKeysMode rejectDuplicateKeysMode, final JsonProviderImpl provider) {
+ this(parser, false, bufferProvider, rejectDuplicateKeysMode, provider);
}
/**
@@ -55,7 +55,7 @@
*/
public JsonReaderImpl(final JsonParser parser, boolean subStreamReader,
final BufferStrategy.BufferProvider<char[]> bufferProvider,
- final DuplicateKeysMode rejectDuplicateKeys, final JsonProviderImpl provider) {
+ final RejectDuplicateKeysMode rejectDuplicateKeys, final JsonProviderImpl provider) {
this.bufferProvider = bufferProvider;
this.provider = provider;
if (parser instanceof JohnzonJsonParser) {
@@ -65,7 +65,7 @@
}
this.subStreamReader = subStreamReader;
- this.duplicateKeysMode = rejectDuplicateKeys;
+ this.rejectDuplicateKeysMode = rejectDuplicateKeys;
}
@Override
@@ -91,14 +91,14 @@
switch (next) {
case START_OBJECT:
- final JsonObjectBuilder objectBuilder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+ final JsonObjectBuilder objectBuilder = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
parseObject(objectBuilder);
if (!subStreamReader && parser.hasNext()) {
throw new JsonParsingException("Expected end of file", parser.getLocation());
}
return objectBuilder.build();
case START_ARRAY:
- final JsonArrayBuilder arrayBuilder = new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider);
+ final JsonArrayBuilder arrayBuilder = new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider);
parseArray(arrayBuilder);
if (!subStreamReader && parser.hasNext()) {
throw new JsonParsingException("Expected end of file", parser.getLocation());
@@ -184,13 +184,13 @@
break;
case START_OBJECT:
- JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+ JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
parseObject(subObject);
builder.add(key, subObject);
break;
case START_ARRAY:
- JsonArrayBuilder subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider);
+ JsonArrayBuilder subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider);
parseArray(subArray);
builder.add(key, subArray);
break;
@@ -244,14 +244,14 @@
break;
case START_OBJECT:
- JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, duplicateKeysMode, provider);
+ JsonObjectBuilder subObject = new JsonObjectBuilderImpl(emptyMap(), bufferProvider, rejectDuplicateKeysMode, provider);
parseObject(subObject);
builder.add(subObject);
break;
case START_ARRAY:
JsonArrayBuilder subArray = null;
- parseArray(subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, duplicateKeysMode, provider));
+ parseArray(subArray = new JsonArrayBuilderImpl(emptyList(), bufferProvider, rejectDuplicateKeysMode, provider));
builder.add(subArray);
break;
diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/DuplicateKeysMode.java b/johnzon-core/src/main/java/org/apache/johnzon/core/RejectDuplicateKeysMode.java
similarity index 62%
rename from johnzon-core/src/main/java/org/apache/johnzon/core/DuplicateKeysMode.java
rename to johnzon-core/src/main/java/org/apache/johnzon/core/RejectDuplicateKeysMode.java
index ab34110..0d9f754 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/DuplicateKeysMode.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/RejectDuplicateKeysMode.java
@@ -21,19 +21,22 @@
import jakarta.json.JsonConfig;
import jakarta.json.JsonException;
import jakarta.json.JsonValue;
+
import java.util.List;
+import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import static java.util.Arrays.asList;
-public enum DuplicateKeysMode {
- NONE((map, k, v) -> {
+public enum RejectDuplicateKeysMode {
+ DEFAULT(Map::put),
+ TRUE((map, k, v) -> {
if (map.put(k, v) != null) {
throw new JsonException("Rejected key: '" + k + "', already present");
}
}),
- FIRST(Map::putIfAbsent),
- LAST(Map::put);
+ FIRST(Map::putIfAbsent);
static final List<String> CONFIG_KEYS = asList(
JsonConfig.KEY_STRATEGY, // jsonp 2.1 spec
@@ -41,45 +44,25 @@
"org.glassfish.json.rejectDuplicateKeys" // the spec includes it (yes :facepalm:)
);
- public static DuplicateKeysMode from(final Map<String, ?> config) {
+ public static RejectDuplicateKeysMode from(final Map<String, ?> config) {
if (config == null) {
- return LAST;
+ return DEFAULT;
}
- for (String configKey : CONFIG_KEYS) {
- Object value = config.get(configKey);
- if (value == null) {
- continue;
- }
-
- if (configKey.equals(JsonConfig.KEY_STRATEGY)) {
- JsonConfig.KeyStrategy specKeyStrategy = (JsonConfig.KeyStrategy) value;
-
- switch (specKeyStrategy) {
- case NONE:
- return NONE;
-
- case FIRST:
- return FIRST;
-
- default:
- case LAST:
- return LAST;
- }
- }
-
- String valueAsString = String.valueOf(value);
- if ("true".equals(valueAsString)) {
- return NONE;
- }
- }
-
- return LAST;
+ return CONFIG_KEYS.stream()
+ .map(config::get)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(String::valueOf)
+ .map(it -> "false".equalsIgnoreCase(it) || "LAST".equalsIgnoreCase(it) ? "DEFAULT" : it) // aliases to avoid to add an enum value for nothing
+ .map(it -> "NONE".equalsIgnoreCase(it) ? "true" : it)
+ .map(it -> valueOf(it.toUpperCase(Locale.ROOT).trim()))
+ .orElse(TRUE);
}
private final Put put;
- DuplicateKeysMode(final Put put) {
+ RejectDuplicateKeysMode(final Put put) {
this.put = put;
}
diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java
index 596f362..bf767ab 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonStreamParserImplTest.java
@@ -68,7 +68,7 @@
final String json = new JsonObjectBuilderImpl(
emptyMap(),
BufferStrategyFactory.valueOf("QUEUE").newCharProvider(100),
- DuplicateKeysMode.NONE, (JsonProviderImpl) JsonProviderImpl.provider())
+ RejectDuplicateKeysMode.TRUE, (JsonProviderImpl) JsonProviderImpl.provider())
.add("content", "{\"foo\":\"barbar\\barbarbar\"}")
.build()
.toString();