From db01fbeb880fda9cefdff8888691d4dc810f0ee1 Mon Sep 17 00:00:00 2001 From: zentol Date: Sun, 23 Aug 2015 22:06:34 +0200 Subject: [PATCH 1/3] [FLINK-2557] TypeExtractor properly returns MissingTypeInfo --- .../org/apache/flink/api/java/typeutils/TypeExtractor.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java b/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java index 8f5d599961843..3b261f18d1750 100644 --- a/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java +++ b/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeExtractor.java @@ -683,8 +683,8 @@ private static Type getParameterType(Class baseClass, ArrayList typeHie return parameter; } - throw new IllegalArgumentException("The types of the interface " + baseClass.getName() + " could not be inferred. " + - "Support for synthetic interfaces, lambdas, and generic types is limited at this point."); + throw new InvalidTypesException("The types of the interface " + baseClass.getName() + " could not be inferred. " + + "Support for synthetic interfaces, lambdas, and generic or raw types is limited at this point"); } private static Type getParameterTypeFromGenericType(Class baseClass, ArrayList typeHierarchy, Type t, int pos) { @@ -734,7 +734,7 @@ private static void validateInputType(Class baseClass, Class clazz, int in try { inType = getParameterType(baseClass, typeHierarchy, clazz, inputParamPos); } - catch (IllegalArgumentException e) { + catch (InvalidTypesException e) { return; // skip input validation e.g. for raw types } From d6b6218899e882d00f4746a172563be87bdcb45d Mon Sep 17 00:00:00 2001 From: zentol Date: Thu, 17 Sep 2015 15:46:14 +0200 Subject: [PATCH 2/3] test cases added --- .../type/extractor/TypeExtractorTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java b/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java index d27a82b52571c..6035424d0e940 100644 --- a/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java +++ b/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java @@ -38,6 +38,7 @@ import org.apache.flink.api.common.typeinfo.PrimitiveArrayTypeInfo; import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.common.typeutils.CompositeType.FlatFieldDescriptor; +import org.apache.flink.api.java.ExecutionEnvironment; import org.apache.flink.api.java.functions.KeySelector; import org.apache.flink.api.java.tuple.Tuple; import org.apache.flink.api.java.tuple.Tuple0; @@ -846,6 +847,25 @@ public String map(Object value) throws Exception { } } + @SuppressWarnings({"unchecked", "rawtypes"}) + @Test + public void testFunctionWithMissingGenericsAndReturns() { + RichMapFunction function = new RichMapFunction() { + private static final long serialVersionUID = 1L; + + @Override + public String map(Object value) throws Exception { + return null; + } + }; + + TypeInformation info = ExecutionEnvironment.getExecutionEnvironment() + .fromElements("arbitrary", "data") + .map(function).returns("String").getResultType(); + + Assert.assertEquals(TypeInfoParser.parse("String"), info); + } + @SuppressWarnings({ "rawtypes", "unchecked" }) @Test public void testFunctionDependingOnInputAsSuperclass() { From 891d9c5fe936285cf83682a957041f8d17d690ac Mon Sep 17 00:00:00 2001 From: zentol Date: Fri, 18 Sep 2015 09:15:59 +0200 Subject: [PATCH 3/3] test case adjusted --- .../apache/flink/api/java/type/extractor/TypeExtractorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java b/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java index 6035424d0e940..d1d754ab69f2a 100644 --- a/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java +++ b/flink-java/src/test/java/org/apache/flink/api/java/type/extractor/TypeExtractorTest.java @@ -854,7 +854,7 @@ public void testFunctionWithMissingGenericsAndReturns() { private static final long serialVersionUID = 1L; @Override - public String map(Object value) throws Exception { + public Object map(Object value) throws Exception { return null; } };