From 308dd6ecd4c9afe14acb362dd7ac4fb595a00837 Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Mon, 18 Aug 2014 10:51:07 +0200 Subject: [PATCH 1/3] remove unused import, make Utils a real utility class (final and private c'tor) --- .../src/main/java/com/jayway/jsonpath/internal/Utils.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java index 8b313eed..a85fea23 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java @@ -1,6 +1,5 @@ package com.jayway.jsonpath.internal; -import com.jayway.jsonpath.InvalidConversionException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -16,7 +15,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -public class Utils { +public final class Utils { public static final String CR = System.getProperty("line.separator"); @@ -470,4 +469,6 @@ public class Utils { } } + + private Utils () {} } From f1eb8a85d1e825dc0828c104d3d5474f0e87406d Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Mon, 18 Aug 2014 10:54:40 +0200 Subject: [PATCH 2/3] update json-smart to 2.0 --- .../spi/json/JsonSmartJsonProvider.java | 23 ++++++++++--------- pom.xml | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/JsonSmartJsonProvider.java b/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/JsonSmartJsonProvider.java index 1a354ec3..93610897 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/JsonSmartJsonProvider.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/spi/json/JsonSmartJsonProvider.java @@ -16,9 +16,11 @@ package com.jayway.jsonpath.internal.spi.json; import com.jayway.jsonpath.InvalidJsonException; import com.jayway.jsonpath.spi.json.Mode; + import net.minidev.json.JSONArray; import net.minidev.json.JSONObject; -import net.minidev.json.parser.ContainerFactory; +import net.minidev.json.mapper.AMapper; +import net.minidev.json.mapper.DefaultMapperOrdered; import net.minidev.json.parser.JSONParser; import net.minidev.json.parser.ParseException; @@ -30,10 +32,9 @@ import java.util.Map; public class JsonSmartJsonProvider extends AbstractJsonProvider { - private Mode mode; + private final Mode mode; - private ContainerFactory containerFactory = ContainerFactory.FACTORY_ORDERED; - //private ContainerFactory containerFactory = ContainerFactory.FACTORY_SIMPLE; + private final static AMapper orderedMapper = DefaultMapperOrdered.DEFAULT; public JsonSmartJsonProvider() { this(Mode.SLACK); @@ -43,17 +44,17 @@ public class JsonSmartJsonProvider extends AbstractJsonProvider { this.mode = mode; } - public Map createMap() { - return containerFactory.createObjectContainer(); + public Object createMap() { + return orderedMapper.createObject(); } - public List createArray() { - return containerFactory.createArrayContainer(); + public Object createArray() { + return orderedMapper.createArray(); } public Object parse(String json) { try { - return createParser().parse(json, containerFactory); + return createParser().parse(json, orderedMapper); } catch (ParseException e) { throw new InvalidJsonException(e); } @@ -62,7 +63,7 @@ public class JsonSmartJsonProvider extends AbstractJsonProvider { @Override public Object parse(Reader jsonReader) throws InvalidJsonException { try { - return createParser().parse(jsonReader, containerFactory); + return createParser().parse(jsonReader, orderedMapper); } catch (ParseException e) { throw new InvalidJsonException(e); } @@ -71,7 +72,7 @@ public class JsonSmartJsonProvider extends AbstractJsonProvider { @Override public Object parse(InputStream jsonStream) throws InvalidJsonException { try { - return createParser().parse(new InputStreamReader(jsonStream), containerFactory); + return createParser().parse(new InputStreamReader(jsonStream), orderedMapper); } catch (ParseException e) { throw new InvalidJsonException(e); } diff --git a/pom.xml b/pom.xml index ede80c1b..613e14f9 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ 2.4 1.3 2.4.0 - 1.2 + 2.0 http://github.com/jayway/JsonPath/tree/${scm.branch} @@ -287,4 +287,4 @@ - \ No newline at end of file + From 2d597f0d7aabad88654cad462899c2b1e421d67d Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Mon, 18 Aug 2014 11:00:13 +0200 Subject: [PATCH 3/3] small performance improvements for Utils.createRange --- .../main/java/com/jayway/jsonpath/internal/Utils.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java index a85fea23..b5803cfe 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java @@ -12,6 +12,7 @@ import java.io.ObjectStreamClass; import java.io.OutputStream; import java.io.Serializable; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -27,7 +28,13 @@ public final class Utils { * @return */ public static List createRange(int start, int end) { - List range = new ArrayList(); + if (end <= start) { + throw new IllegalArgumentException("Cannot create range from " + start + " to " + end + ", end must be greater than start."); + } + if (start == end-1) { + return Collections.emptyList(); + } + List range = new ArrayList(end-start-1); for (int i = start; i < end; i++) { range.add(i); } @@ -40,7 +47,6 @@ public final class Utils { if (!iter.hasNext()) { return ""; } - StringBuilder buffer = new StringBuilder(); buffer.append(wrap).append(iter.next()).append(wrap); while (iter.hasNext()) {