From 7c848382399dbf6260c155c66937da44f2ce554e Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Thu, 23 May 2013 09:46:16 +0200 Subject: [PATCH 1/2] use the json provider to create a new list for the results --- json-path/src/main/java/com/jayway/jsonpath/Filter.java | 7 +++++-- .../jayway/jsonpath/internal/filter/ArrayQueryFilter.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/Filter.java b/json-path/src/main/java/com/jayway/jsonpath/Filter.java index 9de183bf..2b81e8b6 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/Filter.java +++ b/json-path/src/main/java/com/jayway/jsonpath/Filter.java @@ -16,6 +16,8 @@ package com.jayway.jsonpath; import java.util.*; +import com.jayway.jsonpath.spi.JsonProvider; + /** * A filter is used to filter the content of a JSON array in a JSONPath. * @@ -45,10 +47,11 @@ public abstract class Filter { /** * Filters the provided list based on this filter configuration * @param filterItems items to filter + * @param jsonProvider the json provider that is used to create the result list * @return the filtered list */ - public List doFilter(List filterItems) { - List result = new ArrayList(); + public List doFilter(List filterItems, JsonProvider jsonProvider) { + List result = jsonProvider.createList();; for (T filterItem : filterItems) { if (accept(filterItem)) { result.add(filterItem); diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java index 80892f78..8ded0836 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java @@ -34,7 +34,7 @@ public class ArrayQueryFilter extends PathTokenFilter { Filter filter = filters.poll(); - return filter.doFilter((List)obj); + return filter.doFilter((List)obj, jsonProvider); } From 3cd4c3c2aab4c87388ee0e609282eace6fd5c7d8 Mon Sep 17 00:00:00 2001 From: Jochen Berger Date: Fri, 24 May 2013 13:54:43 +0200 Subject: [PATCH 2/2] convert rather than cast to List --- .../com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java index 8ded0836..35044a45 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayQueryFilter.java @@ -34,7 +34,7 @@ public class ArrayQueryFilter extends PathTokenFilter { Filter filter = filters.poll(); - return filter.doFilter((List)obj, jsonProvider); + return filter.doFilter(jsonProvider.toList(obj), jsonProvider); }