You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by jl...@apache.org on 2023/05/22 09:06:53 UTC

[johnzon] 11/11: fix: issue with cherry-pick conflicts resolution

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 <jl...@tomitribe.com>
AuthorDate: Mon May 22 11:06:29 2023 +0200

    fix: issue with cherry-pick conflicts resolution
    
    Signed-off-by: Jean-Louis Monteiro <jl...@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