diff --git a/processing/src/main/java/io/druid/query/extraction/CascadeExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/CascadeExtractionFn.java index b3d09805ca11..fad8e529d994 100644 --- a/processing/src/main/java/io/druid/query/extraction/CascadeExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/CascadeExtractionFn.java @@ -29,9 +29,7 @@ public class CascadeExtractionFn implements ExtractionFn { - private final ExtractionFn extractionFns[]; - private final ChainedExtractionFn chainedExtractionFn; - private final ChainedExtractionFn DEFAULT_CHAINED_EXTRACTION_FN = new ChainedExtractionFn( + private static final ExtractionFn DEFAULT_CHAINED_EXTRACTION_FN = new ChainedExtractionFn( new ExtractionFn() { public byte[] getCacheKey() @@ -39,11 +37,6 @@ public byte[] getCacheKey() return new byte[0]; } - public String apply(Object value) - { - return null; - } - public String apply(String value) { return null; @@ -73,6 +66,9 @@ public String toString() null ); + private final ExtractionFn extractionFns[]; + private final ExtractionFn chainedExtractionFn; + @JsonCreator public CascadeExtractionFn( @JsonProperty("extractionFns") ExtractionFn[] extractionFn @@ -106,12 +102,6 @@ public byte[] getCacheKey() return Bytes.concat(cacheKey, chainedExtractionFn.getCacheKey()); } - @Override - public String apply(Object value) - { - return chainedExtractionFn.apply(value); - } - @Override public String apply(String value) { @@ -171,7 +161,7 @@ public String toString() "extractionFns=[" + chainedExtractionFn.toString() + "]}"; } - private class ChainedExtractionFn + private static class ChainedExtractionFn implements ExtractionFn { private final ExtractionFn fn; private final ChainedExtractionFn child; @@ -189,11 +179,6 @@ public byte[] getCacheKey() return (child != null) ? Bytes.concat(fnCacheKey, child.getCacheKey()) : fnCacheKey; } - public String apply(Object value) - { - return fn.apply((child != null) ? child.apply(value) : value); - } - public String apply(String value) { return fn.apply((child != null) ? child.apply(value) : value); @@ -201,7 +186,7 @@ public String apply(String value) public String apply(long value) { - return fn.apply((child != null) ? child.apply(value) : value); + return child != null ? fn.apply(child.apply(value)) : fn.apply(value); } public boolean preservesOrdering() @@ -219,6 +204,7 @@ public ExtractionType getExtractionType() } } + @Override public boolean equals(Object o) { if (this == o) { @@ -240,6 +226,7 @@ public boolean equals(Object o) return true; } + @Override public int hashCode() { int result = fn.hashCode(); @@ -249,6 +236,7 @@ public int hashCode() return result; } + @Override public String toString() { return (child != null) diff --git a/processing/src/main/java/io/druid/query/extraction/DimExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/DimExtractionFn.java index afb22cd567b7..140fdb8eb2f3 100644 --- a/processing/src/main/java/io/druid/query/extraction/DimExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/DimExtractionFn.java @@ -21,12 +21,6 @@ public abstract class DimExtractionFn implements ExtractionFn { - @Override - public String apply(Object value) - { - return apply(value == null ? null : value.toString()); - } - @Override public String apply(long value) { diff --git a/processing/src/main/java/io/druid/query/extraction/ExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/ExtractionFn.java index f62adf78ebd5..ef0899d4699e 100644 --- a/processing/src/main/java/io/druid/query/extraction/ExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/ExtractionFn.java @@ -69,8 +69,6 @@ public interface ExtractionFn * * @return a value that should be used instead of the original */ - public String apply(Object value); - public String apply(String value); public String apply(long value); diff --git a/processing/src/main/java/io/druid/query/extraction/IdentityExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/IdentityExtractionFn.java index 9d9153efabd1..86f335da7d66 100644 --- a/processing/src/main/java/io/druid/query/extraction/IdentityExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/IdentityExtractionFn.java @@ -36,12 +36,6 @@ public byte[] getCacheKey() return new byte[]{ExtractionCacheHelper.CACHE_TYPE_ID_IDENTITY}; } - @Override - public String apply(Object value) - { - return value == null ? null : Strings.emptyToNull(value.toString()); - } - @Override public String apply(String value) { diff --git a/processing/src/main/java/io/druid/query/extraction/JavaScriptExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/JavaScriptExtractionFn.java index 0263ddc10aa9..16252b42ece7 100644 --- a/processing/src/main/java/io/druid/query/extraction/JavaScriptExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/JavaScriptExtractionFn.java @@ -100,22 +100,16 @@ public byte[] getCacheKey() .array(); } - @Override - public String apply(Object value) - { - return Strings.emptyToNull(fn.apply(value)); - } - @Override public String apply(String value) { - return this.apply((Object) value); + return Strings.emptyToNull(fn.apply(value)); } @Override public String apply(long value) { - return this.apply((Long) value); + return Strings.emptyToNull(fn.apply(value)); } @Override diff --git a/processing/src/main/java/io/druid/query/extraction/LowerExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/LowerExtractionFn.java index 4f3b87b8dbf7..df5d6dda6b99 100644 --- a/processing/src/main/java/io/druid/query/extraction/LowerExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/LowerExtractionFn.java @@ -88,10 +88,4 @@ public byte[] getCacheKey() .put(localeBytes) .array(); } - - @Override - public String apply(Object value) - { - return apply(String.valueOf(value)); - } } diff --git a/processing/src/main/java/io/druid/query/extraction/TimeFormatExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/TimeFormatExtractionFn.java index 2ee2011e7010..d8595f21c6ad 100644 --- a/processing/src/main/java/io/druid/query/extraction/TimeFormatExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/TimeFormatExtractionFn.java @@ -91,16 +91,10 @@ public String apply(long value) return formatter.print(value); } - @Override - public String apply(Object value) - { - return formatter.print(new DateTime(value)); - } - @Override public String apply(String value) { - return apply((Object) value); + return formatter.print(new DateTime(value)); } @Override diff --git a/processing/src/main/java/io/druid/query/extraction/UpperExtractionFn.java b/processing/src/main/java/io/druid/query/extraction/UpperExtractionFn.java index 7d6ded1e8a4a..08f9157bc10d 100644 --- a/processing/src/main/java/io/druid/query/extraction/UpperExtractionFn.java +++ b/processing/src/main/java/io/druid/query/extraction/UpperExtractionFn.java @@ -87,10 +87,4 @@ public byte[] getCacheKey() .put(localeBytes) .array(); } - - @Override - public String apply(Object value) - { - return apply(String.valueOf(value)); - } } diff --git a/processing/src/main/java/io/druid/query/groupby/GroupByQueryQueryToolChest.java b/processing/src/main/java/io/druid/query/groupby/GroupByQueryQueryToolChest.java index 2f0a6bf92d16..980529c42784 100644 --- a/processing/src/main/java/io/druid/query/groupby/GroupByQueryQueryToolChest.java +++ b/processing/src/main/java/io/druid/query/groupby/GroupByQueryQueryToolChest.java @@ -370,7 +370,7 @@ public Row apply(Row input) Map event = Maps.newHashMap(preMapRow.getEvent()); for (String dim : optimizedDims) { final Object eventVal = event.get(dim); - event.put(dim, extractionFnMap.get(dim).apply(eventVal)); + event.put(dim, extractionFnMap.get(dim).apply((String)eventVal)); } return new MapBasedRow(preMapRow.getTimestamp(), event); } else { diff --git a/processing/src/test/java/io/druid/query/extraction/JavaScriptExtractionFnTest.java b/processing/src/test/java/io/druid/query/extraction/JavaScriptExtractionFnTest.java index f861f97ce19c..f5ce482c2f16 100644 --- a/processing/src/test/java/io/druid/query/extraction/JavaScriptExtractionFnTest.java +++ b/processing/src/test/java/io/druid/query/extraction/JavaScriptExtractionFnTest.java @@ -25,6 +25,7 @@ import io.druid.jackson.DefaultObjectMapper; import org.joda.time.DateTime; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import java.util.Iterator; @@ -69,11 +70,12 @@ public void testLongs() throws Exception Assert.assertEquals("number", new JavaScriptExtractionFn(typeOf, false).apply(1234L)); } - @Test + // we don't have float type dimension. no need to test what is not possible + @Ignore public void testFloats() throws Exception { - String typeOf = "function(x) {\nreturn typeof x\n}"; - Assert.assertEquals("number", new JavaScriptExtractionFn(typeOf, false).apply(1234.0)); +// String typeOf = "function(x) {\nreturn typeof x\n}"; +// Assert.assertEquals("number", new JavaScriptExtractionFn(typeOf, false).apply(1234.0F)); } @Test