This is an automated email from the ASF dual-hosted git repository. jlmonteiro pushed a commit to branch johnzon-1.2.x in repository https://gitbox.apache.org/repos/asf/johnzon.git
commit d8d00d28a57a4ab1f6bd4b00b2d3d482f3cd9ac9 Author: Jean-Louis Monteiro <jlmonte...@tomitribe.com> AuthorDate: Mon May 22 11:06:29 2023 +0200 fix: issue with cherry-pick conflicts resolution Signed-off-by: Jean-Louis Monteiro <jlmonte...@tomitribe.com> --- .../java/org/apache/johnzon/core/JsonProviderImpl.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 55101a32..d6b86921 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 @@ -18,6 +18,8 @@ */ package org.apache.johnzon.core; +import org.apache.johnzon.core.spi.JsonPointerFactory; + import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; @@ -27,7 +29,9 @@ import java.math.BigDecimal; import java.math.BigInteger; import java.util.Collection; import java.util.Map; +import java.util.ServiceLoader; import java.util.function.Supplier; +import java.util.stream.StreamSupport; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; @@ -52,6 +56,8 @@ import javax.json.stream.JsonGeneratorFactory; import javax.json.stream.JsonParser; import javax.json.stream.JsonParserFactory; +import static java.util.Comparator.comparing; + public class JsonProviderImpl extends JsonProvider implements Serializable { private final Supplier<BufferStrategy.BufferProvider<char[]>> bufferProvider = new Cached<>(() -> BufferStrategyFactory.valueOf(System.getProperty(AbstractJsonFactory.BUFFER_STRATEGY, "QUEUE")) @@ -64,7 +70,13 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { private final Supplier<JsonBuilderFactory> builderFactory = new Cached<>(() -> new JsonBuilderFactoryImpl(null, bufferProvider.get(), RejectDuplicateKeysMode.DEFAULT, this)); private int maxBigDecimalScale = Integer.getInteger("johnzon.max-big-decimal-scale", 1_000); + private final JsonPointerFactory jsonPointerFactory; + public JsonProviderImpl() { + jsonPointerFactory = StreamSupport.stream(ServiceLoader.load(JsonPointerFactory.class).spliterator(), false) + .min(comparing(JsonPointerFactory::ordinal)) + .orElseGet(DefaultJsonPointerFactory::new); + } @Override public JsonParser createParser(final InputStream in) { return parserFactory.createParser(in); @@ -204,7 +216,7 @@ public class JsonProviderImpl extends JsonProvider implements Serializable { @Override public JsonPointer createPointer(String path) { - return new JsonPointerImpl(this, path); + return jsonPointerFactory.createPointer(this, path); } @Override