From c0aec497a607d7fbc198193972033c58cf7a7813 Mon Sep 17 00:00:00 2001 From: Kalle Stenflo Date: Thu, 8 Mar 2012 19:58:02 +0100 Subject: [PATCH] Release preparations. --- README | 12 +++++++ json-path-assert/pom.xml | 5 +++ .../com/jayway/jsonassert/JsonAssert.java | 2 +- .../java/com/jayway/jsonpath/Criteria.java | 2 -- .../java/com/jayway/jsonpath/JsonModel.java | 16 ++++----- .../java/com/jayway/jsonpath/JsonPath.java | 10 +++--- .../jsonpath/spi/JsonProviderFactory.java | 14 ++++++-- .../jsonpath/spi/MappingProviderFactory.java | 36 ++++++++++++------- pom.xml | 2 ++ 9 files changed, 69 insertions(+), 30 deletions(-) diff --git a/README b/README index 2185a688..72320ecf 100644 --- a/README +++ b/README @@ -1,5 +1,17 @@ Java DSL for reading and testing JSON documents. +------------------------------------------ +0.8.0 2012-03-08 +------------------------------------------ +- Fixed issue http://code.google.com/p/json-path/issues/detail?id=8 +- Fixed issue http://code.google.com/p/json-path/issues/detail?id=9 +- Improved compliance +- Fixed bug with '=' sign when evaluating expressions +- OSGi support added +- Support for custom array filters in JsonPath +- Lots of new features in JsonModel + + ------------------------------------------ 0.5.6 2012-02-09 ------------------------------------------ diff --git a/json-path-assert/pom.xml b/json-path-assert/pom.xml index adee1527..5ec69129 100644 --- a/json-path-assert/pom.xml +++ b/json-path-assert/pom.xml @@ -42,6 +42,11 @@ hamcrest-library + + org.hamcrest + hamcrest-core + + junit junit 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 999b2c68..40c02db4 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 @@ -19,7 +19,7 @@ import java.util.Map; */ public class JsonAssert { - private static JsonProvider jsonProvider = JsonProviderFactory.getInstance(); + private static JsonProvider jsonProvider = JsonProviderFactory.createProvider(); public static void setJsonProvider(JsonProvider jsonProvider) { JsonAssert.jsonProvider = jsonProvider; diff --git a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java index 5ddb0572..81d4fc18 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Criteria.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Criteria.java @@ -87,8 +87,6 @@ public class Criteria { return criteriaChain.get(0).singleObjectApply(map); } else { for (Criteria c : this.criteriaChain) { - - System.out.println(""); if (!c.singleObjectApply(map)) { return false; } diff --git a/json-path/src/main/java/com/jayway/jsonpath/JsonModel.java b/json-path/src/main/java/com/jayway/jsonpath/JsonModel.java index bb858d41..0ae4a2b2 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/JsonModel.java +++ b/json-path/src/main/java/com/jayway/jsonpath/JsonModel.java @@ -222,25 +222,25 @@ public class JsonModel { public static JsonModel create(String json) { notEmpty(json, "json can not be null or empty"); - return new JsonModel(json, JsonProviderFactory.getInstance()); + return new JsonModel(json, JsonProviderFactory.createProvider()); } public static JsonModel create(Object jsonObject) { notNull(jsonObject, "jsonObject can not be null"); - return new JsonModel(jsonObject, JsonProviderFactory.getInstance()); + return new JsonModel(jsonObject, JsonProviderFactory.createProvider()); } public static JsonModel create(URL url) throws IOException { notNull(url, "url can not be null"); - return new JsonModel(url, JsonProviderFactory.getInstance()); + return new JsonModel(url, JsonProviderFactory.createProvider()); } public static JsonModel create(InputStream jsonInputStream) throws IOException { notNull(jsonInputStream, "jsonInputStream can not be null"); - return new JsonModel(jsonInputStream, JsonProviderFactory.getInstance()); + return new JsonModel(jsonInputStream, JsonProviderFactory.createProvider()); } // -------------------------------------------------------- @@ -256,7 +256,7 @@ public class JsonModel { throw new IndefinitePathException(jsonPath.getPath()); } - JsonProvider jsonProvider = JsonProviderFactory.getInstance(); + JsonProvider jsonProvider = JsonProviderFactory.createProvider(); Object modelRef = jsonObject; @@ -442,7 +442,7 @@ public class JsonModel { if (!(model instanceof List)) { model = asList(model); } - return MappingProviderFactory.getInstance().convertValue(model, List.class, targetClass); + return MappingProviderFactory.createProvider().convertValue(model, List.class, targetClass); } @Override @@ -452,12 +452,12 @@ public class JsonModel { setModel.add(model); model = setModel; } - return MappingProviderFactory.getInstance().convertValue(model, Set.class, targetClass); + return MappingProviderFactory.createProvider().convertValue(model, Set.class, targetClass); } @Override public T to(Class targetClass) { - return MappingProviderFactory.getInstance().convertValue(model, targetClass); + return MappingProviderFactory.createProvider().convertValue(model, targetClass); } } } 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 d5f6ff63..a2672c24 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java +++ b/json-path/src/main/java/com/jayway/jsonpath/JsonPath.java @@ -171,7 +171,7 @@ public class JsonPath { throw new IllegalArgumentException("Invalid container object"); } LinkedList contextFilters = new LinkedList(filters); - JsonProvider jsonProvider = JsonProviderFactory.getInstance(); + JsonProvider jsonProvider = JsonProviderFactory.createProvider(); Object result = jsonObject; @@ -199,7 +199,7 @@ public class JsonPath { public T read(String json) { notEmpty(json, "json can not be null or empty"); - return (T) read(JsonProviderFactory.getInstance().parse(json)); + return (T) read(JsonProviderFactory.createProvider().parse(json)); } /** @@ -217,7 +217,7 @@ public class JsonPath { BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader(jsonURL.openStream())); - return (T) read(JsonProviderFactory.getInstance().parse(in)); + return (T) read(JsonProviderFactory.createProvider().parse(in)); } finally { IOUtils.closeQuietly(in); } @@ -239,7 +239,7 @@ public class JsonPath { FileInputStream fis = null; try { fis = new FileInputStream(jsonFile); - return (T) read(JsonProviderFactory.getInstance().parse(fis)); + return (T) read(JsonProviderFactory.createProvider().parse(fis)); } finally { IOUtils.closeQuietly(fis); } @@ -258,7 +258,7 @@ public class JsonPath { notNull(jsonInputStream, "json input stream can not be null"); try { - return (T) read(JsonProviderFactory.getInstance().parse(jsonInputStream)); + return (T) read(JsonProviderFactory.createProvider().parse(jsonInputStream)); } finally { IOUtils.closeQuietly(jsonInputStream); } diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/JsonProviderFactory.java b/json-path/src/main/java/com/jayway/jsonpath/spi/JsonProviderFactory.java index ad8ef861..9ad37d29 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/JsonProviderFactory.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/JsonProviderFactory.java @@ -21,8 +21,18 @@ import com.jayway.jsonpath.spi.impl.JsonSmartJsonProvider; */ public abstract class JsonProviderFactory { - public static JsonProvider getInstance() { - return new JsonSmartJsonProvider(); + public static JsonProviderFactory factory = new JsonProviderFactory() { + @Override + protected JsonProvider create() { + return new JsonSmartJsonProvider(); + } + }; + + public static JsonProvider createProvider() { + return factory.create(); } + + protected abstract JsonProvider create(); + } diff --git a/json-path/src/main/java/com/jayway/jsonpath/spi/MappingProviderFactory.java b/json-path/src/main/java/com/jayway/jsonpath/spi/MappingProviderFactory.java index 05ebed2a..05c4f1cb 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/spi/MappingProviderFactory.java +++ b/json-path/src/main/java/com/jayway/jsonpath/spi/MappingProviderFactory.java @@ -19,24 +19,36 @@ import com.jayway.jsonpath.spi.impl.JacksonProvider; /** * @author Kalle Stenflo */ -public class MappingProviderFactory { +public abstract class MappingProviderFactory { - private static MappingProvider mappingProvider; - static { - try { - Class.forName("org.codehaus.jackson.map.ObjectMapper"); + public static MappingProviderFactory factory = new MappingProviderFactory() { - mappingProvider = new JacksonProvider(); - } catch (ClassNotFoundException e) { - throw new RuntimeException("org.codehaus.jackson.map.ObjectMapper not found on classpath. This is an optional dependency needed for POJO conversions.", e); - } - } + private MappingProvider provider = null; + @Override + protected MappingProvider create() { + if (this.provider == null) { + synchronized (MappingProviderFactory.class) { + try { + Class.forName("org.codehaus.jackson.map.ObjectMapper"); + + provider = new JacksonProvider(); + return provider; + } catch (ClassNotFoundException e) { + throw new RuntimeException("org.codehaus.jackson.map.ObjectMapper not found on classpath. This is an optional dependency needed for POJO conversions.", e); + } + } + } else { + return provider; + } + } + }; + protected abstract MappingProvider create(); - public static MappingProvider getInstance() { - return mappingProvider; + public static MappingProvider createProvider() { + return factory.create(); } } diff --git a/pom.xml b/pom.xml index b4bece2b..02ac3108 100644 --- a/pom.xml +++ b/pom.xml @@ -78,6 +78,7 @@ +