From 1d050245fad584393117f7d65842e0e7d6f9adcb Mon Sep 17 00:00:00 2001 From: xvrl Date: Thu, 4 Apr 2013 16:29:55 -0700 Subject: [PATCH] add argument checks to dim filters --- .../java/com/metamx/druid/query/filter/AndDimFilter.java | 5 ++++- .../com/metamx/druid/query/filter/ExtractionDimFilter.java | 5 +++++ .../com/metamx/druid/query/filter/JavaScriptDimFilter.java | 3 +++ .../java/com/metamx/druid/query/filter/NotDimFilter.java | 2 ++ .../main/java/com/metamx/druid/query/filter/OrDimFilter.java | 5 ++++- .../java/com/metamx/druid/query/filter/RegexDimFilter.java | 4 +++- .../com/metamx/druid/query/filter/SearchQueryDimFilter.java | 4 ++++ .../com/metamx/druid/query/filter/SelectorDimFilter.java | 3 +++ 8 files changed, 28 insertions(+), 3 deletions(-) diff --git a/client/src/main/java/com/metamx/druid/query/filter/AndDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/AndDimFilter.java index 6b557fdba27..4dbd7be04af 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/AndDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/AndDimFilter.java @@ -22,9 +22,10 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; - +import java.util.Collections; import java.util.List; /** @@ -40,6 +41,8 @@ public class AndDimFilter implements DimFilter @JsonProperty("fields") List fields ) { + fields.removeAll(Collections.singletonList(null)); + Preconditions.checkArgument(fields.size() > 0, "AND operator requires at least one field"); this.fields = fields; } diff --git a/client/src/main/java/com/metamx/druid/query/filter/ExtractionDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/ExtractionDimFilter.java index 21785f06b0c..83af7e1b3a8 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/ExtractionDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/ExtractionDimFilter.java @@ -21,6 +21,7 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Preconditions; import com.metamx.druid.query.extraction.DimExtractionFn; @@ -42,6 +43,10 @@ public class ExtractionDimFilter implements DimFilter @JsonProperty("dimExtractionFn") DimExtractionFn dimExtractionFn ) { + Preconditions.checkArgument(dimension != null, "dimension must not be null"); + Preconditions.checkArgument(value != null, "value must not be null"); + Preconditions.checkArgument(dimExtractionFn != null, "extraction function must not be null"); + this.dimension = dimension; this.value = value; this.dimExtractionFn = dimExtractionFn; diff --git a/client/src/main/java/com/metamx/druid/query/filter/JavaScriptDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/JavaScriptDimFilter.java index 847d13c9bd4..00db76b4f05 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/JavaScriptDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/JavaScriptDimFilter.java @@ -3,6 +3,7 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Charsets; +import com.google.common.base.Preconditions; import java.nio.ByteBuffer; @@ -17,6 +18,8 @@ public class JavaScriptDimFilter implements DimFilter @JsonProperty("function") String function ) { + Preconditions.checkArgument(dimension != null, "dimension must not be null"); + Preconditions.checkArgument(function != null, "function must not be null"); this.dimension = dimension; this.function = function; } diff --git a/client/src/main/java/com/metamx/druid/query/filter/NotDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/NotDimFilter.java index 0753d9f64de..8c3117e6e4d 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/NotDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/NotDimFilter.java @@ -24,6 +24,7 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Preconditions; import java.nio.ByteBuffer; @@ -38,6 +39,7 @@ public class NotDimFilter implements DimFilter @JsonProperty("field") DimFilter field ) { + Preconditions.checkArgument(field != null, "NOT operator requires at least one field"); this.field = field; } diff --git a/client/src/main/java/com/metamx/druid/query/filter/OrDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/OrDimFilter.java index 9105cfe0412..ec7cb3eda3c 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/OrDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/OrDimFilter.java @@ -22,9 +22,10 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Joiner; +import com.google.common.base.Preconditions; - +import java.util.Collections; import java.util.List; /** @@ -40,6 +41,8 @@ public class OrDimFilter implements DimFilter @JsonProperty("fields") List fields ) { + fields.removeAll(Collections.singletonList(null)); + Preconditions.checkArgument(fields.size() > 0, "OR operator requires at least one field"); this.fields = fields; } diff --git a/client/src/main/java/com/metamx/druid/query/filter/RegexDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/RegexDimFilter.java index 6ee15d4b0c9..7ba8098f8a1 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/RegexDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/RegexDimFilter.java @@ -22,7 +22,7 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Charsets; - +import com.google.common.base.Preconditions; import java.nio.ByteBuffer; @@ -40,6 +40,8 @@ public class RegexDimFilter implements DimFilter @JsonProperty("pattern") String pattern ) { + Preconditions.checkArgument(dimension != null, "dimension must not be null"); + Preconditions.checkArgument(pattern != null, "pattern must not be null"); this.dimension = dimension; this.pattern = pattern; } diff --git a/client/src/main/java/com/metamx/druid/query/filter/SearchQueryDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/SearchQueryDimFilter.java index 7b1b6b0fd15..bcf307c11c3 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/SearchQueryDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/SearchQueryDimFilter.java @@ -21,6 +21,7 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Charsets; +import com.google.common.base.Preconditions; import com.metamx.druid.query.search.SearchQuerySpec; @@ -38,6 +39,9 @@ public class SearchQueryDimFilter implements DimFilter @JsonProperty("query") SearchQuerySpec query ) { + Preconditions.checkArgument(dimension != null, "dimension must not be null"); + Preconditions.checkArgument(query != null, "query must not be null"); + this.dimension = dimension; this.query = query; } diff --git a/client/src/main/java/com/metamx/druid/query/filter/SelectorDimFilter.java b/client/src/main/java/com/metamx/druid/query/filter/SelectorDimFilter.java index 11deaeb28e2..70a173f6b8c 100644 --- a/client/src/main/java/com/metamx/druid/query/filter/SelectorDimFilter.java +++ b/client/src/main/java/com/metamx/druid/query/filter/SelectorDimFilter.java @@ -24,6 +24,7 @@ package com.metamx.druid.query.filter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Preconditions; import java.nio.ByteBuffer; @@ -40,6 +41,8 @@ public class SelectorDimFilter implements DimFilter @JsonProperty("value") String value ) { + Preconditions.checkArgument(dimension != null, "dimension must not be null"); + Preconditions.checkArgument(value != null, "value must not be null"); this.dimension = dimension; this.value = value; }