From 37cff7b01c9129f4d9ef927b84942e2bb9f872b8 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Fri, 18 Sep 2015 22:56:50 +0200 Subject: [PATCH] Add tests and fixes for primitive numeric ctors on TermsQueryBuilder --- .../index/query/TermsQueryBuilder.java | 14 +++++++--- .../index/query/TermsQueryBuilderTests.java | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java index cea700b9463..f984a5e781f 100644 --- a/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java @@ -41,6 +41,7 @@ import org.elasticsearch.search.internal.SearchContext; import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; /** * A filter for a field based on several terms matching on any of them. @@ -89,7 +90,7 @@ public class TermsQueryBuilder extends AbstractQueryBuilder { * @param values The terms */ public TermsQueryBuilder(String fieldName, int... values) { - this(fieldName, values != null ? Arrays.asList(values) : (Iterable) null); + this(fieldName, values != null ? Arrays.stream(values).mapToObj(s -> s).collect(Collectors.toList()) : (Iterable) null); } /** @@ -116,7 +117,14 @@ public class TermsQueryBuilder extends AbstractQueryBuilder { * @param values The terms */ public TermsQueryBuilder(String fieldName, float... values) { - this(fieldName, values != null ? Arrays.asList(values) : (Iterable) null); + if (values == null) { + throw new IllegalArgumentException("No value specified for terms query"); + } + this.fieldName = fieldName; + this.values = new ArrayList<>(values.length); + for (float floatValue : values) { + this.values.add(floatValue); + } } /** @@ -126,7 +134,7 @@ public class TermsQueryBuilder extends AbstractQueryBuilder { * @param values The terms */ public TermsQueryBuilder(String fieldName, double... values) { - this(fieldName, values != null ? Arrays.asList(values) : (Iterable) null); + this(fieldName, values != null ? Arrays.stream(values).mapToObj(s -> s).collect(Collectors.toList()) : (Iterable) null); } /** diff --git a/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java index 73822ddccf1..1ad39096076 100644 --- a/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java @@ -275,5 +275,32 @@ public class TermsQueryBuilderTests extends AbstractQueryTestCase values = copy.values(); + assertEquals(Arrays.asList(1, 3, 4), values); + } + { + TermsQueryBuilder builder = new TermsQueryBuilder("foo", new double[]{1, 3, 4}); + TermsQueryBuilder copy = assertSerialization(builder); + List values = copy.values(); + assertEquals(Arrays.asList(1d, 3d, 4d), values); + } + { + TermsQueryBuilder builder = new TermsQueryBuilder("foo", new float[]{1, 3, 4}); + TermsQueryBuilder copy = assertSerialization(builder); + List values = copy.values(); + assertEquals(Arrays.asList(1f, 3f, 4f), values); + } + { + TermsQueryBuilder builder = new TermsQueryBuilder("foo", new long[]{1, 3, 4}); + TermsQueryBuilder copy = assertSerialization(builder); + List values = copy.values(); + assertEquals(Arrays.asList(1l, 3l, 4l), values); + } + } }