From c8cf8356c1fd5ab8a603636c26596b8060b00462 Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Mon, 15 Sep 2014 13:32:06 +0200 Subject: [PATCH 1/2] remove `JsonProviderFactory`, the `JsonProvider` should be set via `Configuration` --- .../com/jayway/jsonpath/Configuration.java | 4 +- .../java/com/jayway/jsonpath/JsonPath.java | 9 +--- .../spi/json/JsonProviderFactory.java | 46 ------------------- .../com/jayway/jsonpath/old/FilterTest.java | 9 ++-- .../com/jayway/jsonpath/old/IssuesTest.java | 5 +- .../com/jayway/jsonpath/old/JsonPathTest.java | 5 +- .../old/internal/PredicatePathTokenTest.java | 7 +-- .../old/internal/ScanPathTokenTest.java | 7 +-- .../jsonpath/old/internal/TestBase.java | 6 +-- 9 files changed, 25 insertions(+), 73 deletions(-) delete mode 100644 json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProviderFactory.java diff --git a/json-path/src/main/java/com/jayway/jsonpath/Configuration.java b/json-path/src/main/java/com/jayway/jsonpath/Configuration.java index d5aca573..5419423d 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Configuration.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Configuration.java @@ -14,8 +14,8 @@ */ package com.jayway.jsonpath; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; import com.jayway.jsonpath.spi.json.JsonProvider; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; import java.util.Collections; import java.util.EnumSet; @@ -29,7 +29,7 @@ public class Configuration { private static Defaults DEFAULTS = new Defaults() { @Override public JsonProvider provider() { - return JsonProviderFactory.createProvider(); + return new JsonSmartJsonProvider(); } @Override diff --git a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java index 17e1105d..8d2ae237 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java +++ b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java @@ -21,7 +21,6 @@ import com.jayway.jsonpath.internal.PathCompiler; import com.jayway.jsonpath.internal.Utils; import com.jayway.jsonpath.spi.http.HttpProviderFactory; import com.jayway.jsonpath.spi.json.JsonProvider; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; import java.io.File; import java.io.FileInputStream; @@ -314,13 +313,7 @@ public class JsonPath { */ @SuppressWarnings({"unchecked"}) public T read(InputStream jsonInputStream) throws IOException { - notNull(jsonInputStream, "json input stream can not be null"); - - try { - return read(JsonProviderFactory.createProvider().parse(jsonInputStream)); - } finally { - Utils.closeQuietly(jsonInputStream); - } + return read(jsonInputStream, Configuration.defaultConfiguration()); } /** diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProviderFactory.java b/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProviderFactory.java deleted file mode 100644 index 688e3de1..00000000 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/json/JsonProviderFactory.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2011 the original author or authors. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.jayway.jsonpath.spi.json; - -public abstract class JsonProviderFactory { - - private static JsonProvider provider = null; - - private static final String DEFAULT_JSON_PROVIDER = "com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider"; - //private static final String DEFAULT_JSON_PROVIDER = "com.jayway.jsonpath.internal.spi.json.JacksonProvider"; - - - public static JsonProvider createProvider() { - - if(provider == null){ - synchronized (JsonProviderFactory.class){ - if(provider == null){ - try { - provider = (JsonProvider) Class.forName(DEFAULT_JSON_PROVIDER).newInstance(); - } catch (Exception e) { - throw new RuntimeException("Failed to create JsonProvider", e); - } - } - } - } - return provider; - } - - public static synchronized void setProvider(JsonProvider jsonProvider) { - provider = jsonProvider; - } - - -} diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/FilterTest.java b/json-path/src/test/java/com/jayway/jsonpath/old/FilterTest.java index b83be1c4..d5881aa7 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/FilterTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/FilterTest.java @@ -6,8 +6,9 @@ import com.jayway.jsonpath.Filter; import com.jayway.jsonpath.InvalidCriteriaException; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Predicate; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; import com.jayway.jsonpath.spi.json.JsonProvider; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; + import org.junit.Test; import java.util.Collections; @@ -60,7 +61,7 @@ public class FilterTest extends BaseTest { " }\n" + "}"; - private static final JsonProvider jp = JsonProviderFactory.createProvider(); + private static final JsonProvider jp = new JsonSmartJsonProvider(); private static final Configuration conf = Configuration.defaultConfiguration(); //------------------------------------------------- @@ -380,7 +381,7 @@ public class FilterTest extends BaseTest { @Test public void filters_can_contain_json_path_expressions() throws Exception { - Object doc = JsonProviderFactory.createProvider().parse(DOCUMENT); + Object doc = new JsonSmartJsonProvider().parse(DOCUMENT); assertFalse(filter(where("$.store.bicycle.color").ne("red")).apply(createPredicateContext(doc))); } @@ -410,7 +411,7 @@ public class FilterTest extends BaseTest { "}\n"; - Object doc = JsonProviderFactory.createProvider().parse(json); + Object doc = new JsonSmartJsonProvider().parse(json); List> result = JsonPath.read(doc, "$.fields[?]", filter(where("errors").notEmpty())); assertEquals(1, result.size()); diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java b/json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java index 5478c696..2ca29059 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/IssuesTest.java @@ -7,8 +7,9 @@ import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Option; import com.jayway.jsonpath.PathNotFoundException; import com.jayway.jsonpath.internal.Utils; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; import com.jayway.jsonpath.spi.json.JsonProvider; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; + import org.assertj.core.api.Assertions; import org.hamcrest.Matchers; import org.junit.Test; @@ -27,7 +28,7 @@ import static org.junit.Assert.assertThat; public class IssuesTest { - private static final JsonProvider jp = JsonProviderFactory.createProvider(); + private static final JsonProvider jp = new JsonSmartJsonProvider(); @Test public void full_ones_can_be_filtered() { diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java b/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java index a9e1a469..87e105d3 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/JsonPathTest.java @@ -4,7 +4,8 @@ import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.PathNotFoundException; import com.jayway.jsonpath.internal.PathCompiler; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; + import org.assertj.core.api.Assertions; import org.junit.Test; @@ -60,7 +61,7 @@ public class JsonPathTest { " }\n" + "}"; - public final static Object OBJ_DOCUMENT = JsonProviderFactory.createProvider().parse(DOCUMENT); + public final static Object OBJ_DOCUMENT = new JsonSmartJsonProvider().parse(DOCUMENT); private final static String PRODUCT_JSON = "{\n" + diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/internal/PredicatePathTokenTest.java b/json-path/src/test/java/com/jayway/jsonpath/old/internal/PredicatePathTokenTest.java index a921d447..5854ce98 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/internal/PredicatePathTokenTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/internal/PredicatePathTokenTest.java @@ -1,7 +1,8 @@ package com.jayway.jsonpath.old.internal; import com.jayway.jsonpath.JsonPath; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; + import org.junit.Test; import java.util.List; @@ -13,7 +14,7 @@ import static org.assertj.core.api.Assertions.entry; public class PredicatePathTokenTest { - private static final Object ARRAY = JsonProviderFactory.createProvider().parse( + private static final Object ARRAY = new JsonSmartJsonProvider().parse( "[" + "{\n" + " \"foo\" : \"foo-val-0\"\n" + @@ -38,7 +39,7 @@ public class PredicatePathTokenTest { "}" + "]"); - private static Object ARRAY2 = JsonProviderFactory.createProvider().parse( + private static Object ARRAY2 = new JsonSmartJsonProvider().parse( "[" + "{\n" + " \"foo\" : \"foo-val-0\",\n" + diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/internal/ScanPathTokenTest.java b/json-path/src/test/java/com/jayway/jsonpath/old/internal/ScanPathTokenTest.java index 6245bbae..3d64c2c3 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/internal/ScanPathTokenTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/internal/ScanPathTokenTest.java @@ -3,7 +3,8 @@ package com.jayway.jsonpath.old.internal; import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.internal.PathCompiler; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; + import org.junit.Test; import java.util.List; @@ -14,7 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class ScanPathTokenTest { - public final static Object DOCUMENT = JsonProviderFactory.createProvider().parse( + public final static Object DOCUMENT = new JsonSmartJsonProvider().parse( "{\n" + " \"store\":{\n" + " \"book\":[\n" + @@ -63,7 +64,7 @@ public class ScanPathTokenTest { "}" ); - public final static Object DOCUMENT2 = JsonProviderFactory.createProvider().parse( + public final static Object DOCUMENT2 = new JsonSmartJsonProvider().parse( "{\n" + " \"firstName\": \"John\",\n" + " \"lastName\" : \"doe\",\n" + diff --git a/json-path/src/test/java/com/jayway/jsonpath/old/internal/TestBase.java b/json-path/src/test/java/com/jayway/jsonpath/old/internal/TestBase.java index 2051a308..c28e3864 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/old/internal/TestBase.java +++ b/json-path/src/test/java/com/jayway/jsonpath/old/internal/TestBase.java @@ -1,7 +1,7 @@ package com.jayway.jsonpath.old.internal; import com.jayway.jsonpath.Configuration; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; /** * @@ -9,7 +9,7 @@ import com.jayway.jsonpath.spi.json.JsonProviderFactory; public class TestBase { - public final static Object ARRAY = JsonProviderFactory.createProvider().parse("[" + + public final static Object ARRAY = new JsonSmartJsonProvider().parse("[" + "{\n" + " \"foo\" : \"foo-val-0\"\n" + "}," + @@ -33,7 +33,7 @@ public class TestBase { "}" + "]"); - public final static Object DOC = JsonProviderFactory.createProvider().parse( + public final static Object DOC = new JsonSmartJsonProvider().parse( "{ \"store\": {\n" + " \"book\": [ \n" + " { \"category\": \"reference\",\n" + From 0289ac00c44efe330ef088e779eb6199b0800ba7 Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Mon, 15 Sep 2014 14:12:42 +0200 Subject: [PATCH 2/2] replace usage of JsonProviderFactory in other modules --- .../src/main/java/com/jayway/jsonassert/JsonAssert.java | 8 +++++--- .../main/java/com/jayway/jsonpath/web/bench/Bench.java | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/json-path-assert/src/main/java/com/jayway/jsonassert/JsonAssert.java b/json-path-assert/src/main/java/com/jayway/jsonassert/JsonAssert.java index f4a44608..2dd09855 100644 --- a/json-path-assert/src/main/java/com/jayway/jsonassert/JsonAssert.java +++ b/json-path-assert/src/main/java/com/jayway/jsonassert/JsonAssert.java @@ -7,7 +7,9 @@ import com.jayway.jsonassert.impl.matcher.IsCollectionWithSize; import com.jayway.jsonassert.impl.matcher.IsEmptyCollection; import com.jayway.jsonassert.impl.matcher.IsMapContainingKey; import com.jayway.jsonassert.impl.matcher.IsMapContainingValue; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.internal.spi.json.JsonSmartJsonProvider; + import org.hamcrest.Matcher; import java.io.IOException; @@ -30,7 +32,7 @@ public class JsonAssert { * @throws ParseException when the given JSON could not be parsed */ public static JsonAsserter with(String json) { - return new JsonAsserterImpl(JsonProviderFactory.createProvider().parse(json)); + return new JsonAsserterImpl(JsonPath.parse(json).json()); } /** @@ -41,7 +43,7 @@ public class JsonAssert { * @throws ParseException when the given JSON could not be parsed */ public static JsonAsserter with(Reader reader) throws IOException { - return new JsonAsserterImpl(JsonProviderFactory.createProvider().parse(convertReaderToString(reader))); + return new JsonAsserterImpl(JsonPath.parse(convertReaderToString(reader)).json()); } diff --git a/json-path-web-test/src/main/java/com/jayway/jsonpath/web/bench/Bench.java b/json-path-web-test/src/main/java/com/jayway/jsonpath/web/bench/Bench.java index 42a76f63..991b7924 100644 --- a/json-path-web-test/src/main/java/com/jayway/jsonpath/web/bench/Bench.java +++ b/json-path-web-test/src/main/java/com/jayway/jsonpath/web/bench/Bench.java @@ -4,7 +4,6 @@ import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Option; import com.jayway.jsonpath.internal.spi.json.JacksonProvider; -import com.jayway.jsonpath.spi.json.JsonProviderFactory; import io.gatling.jsonpath.JsonPath$; import org.boon.json.JsonParser; import org.boon.json.ObjectMapper; @@ -71,7 +70,7 @@ public class Bench { } else if (res instanceof Boolean) { result = res.toString(); } else { - result = res != null ? JsonProviderFactory.createProvider().toJson(res) : "null"; + result = res != null ? Configuration.defaultConfiguration().getProvider().toJson(res) : "null"; } return new Result("jayway", time, result, error); }