You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by se...@apache.org on 2015/01/18 20:03:22 UTC
[16/17] flink git commit: [FLINK-1382][java] Adds the new basic types
Void and Date to the TypeInfoParser
[FLINK-1382][java] Adds the new basic types Void and Date to the TypeInfoParser
This closes #299
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/9cd96df7
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/9cd96df7
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/9cd96df7
Branch: refs/heads/master
Commit: 9cd96df752ed03b8e649d82d6df71ab1f400ee70
Parents: a22f994
Author: twalthr <in...@twalthr.com>
Authored: Mon Jan 12 12:34:46 2015 +0100
Committer: Stephan Ewen <se...@apache.org>
Committed: Sun Jan 18 09:58:21 2015 -0800
----------------------------------------------------------------------
.../api/java/typeutils/TypeInfoParser.java | 21 ++++++++++++++++++--
.../api/java/typeutils/TypeInfoParserTest.java | 5 +++++
2 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/9cd96df7/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeInfoParser.java
----------------------------------------------------------------------
diff --git a/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeInfoParser.java b/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeInfoParser.java
index e9d5dac..98373da 100644
--- a/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeInfoParser.java
+++ b/flink-java/src/main/java/org/apache/flink/api/java/typeutils/TypeInfoParser.java
@@ -40,8 +40,9 @@ public class TypeInfoParser {
private static final Pattern writablePattern = Pattern.compile("^((" + WRITABLE_PACKAGE.replaceAll("\\.", "\\\\.") + "\\.)?Writable)<([^\\s,>]*)(,|>|$)");
private static final Pattern enumPattern = Pattern.compile("^((java\\.lang\\.)?Enum)<([^\\s,>]*)(,|>|$)");
private static final Pattern basicTypePattern = Pattern
- .compile("^((java\\.lang\\.)?(String|Integer|Byte|Short|Character|Double|Float|Long|Boolean))(,|>|$)");
- private static final Pattern basicType2Pattern = Pattern.compile("^(int|byte|short|char|double|float|long|boolean)(,|>|$)");
+ .compile("^((java\\.lang\\.)?(String|Integer|Byte|Short|Character|Double|Float|Long|Boolean|Void))(,|>|$)");
+ private static final Pattern basicTypeDatePattern = Pattern.compile("^((java\\.util\\.)?Date)(,|>|$)");
+ private static final Pattern basicType2Pattern = Pattern.compile("^(int|byte|short|char|double|float|long|boolean|void)(,|>|$)");
private static final Pattern valueTypePattern = Pattern.compile("^((" + VALUE_PACKAGE.replaceAll("\\.", "\\\\.")
+ "\\.)?(String|Int|Byte|Short|Char|Double|Float|Long|Boolean|List|Map|Null))Value(,|>|$)");
private static final Pattern basicArrayTypePattern = Pattern
@@ -105,6 +106,7 @@ public class TypeInfoParser {
final Matcher enumMatcher = enumPattern.matcher(infoString);
final Matcher basicTypeMatcher = basicTypePattern.matcher(infoString);
+ final Matcher basicTypeDateMatcher = basicTypeDatePattern.matcher(infoString);
final Matcher basicType2Matcher = basicType2Pattern.matcher(infoString);
final Matcher valueTypeMatcher = valueTypePattern.matcher(infoString);
@@ -194,6 +196,19 @@ public class TypeInfoParser {
}
returnType = BasicTypeInfo.getInfoFor(clazz);
}
+ // special basic type "Date"
+ else if (basicTypeDateMatcher.find()) {
+ String className = basicTypeDateMatcher.group(1);
+ sb.delete(0, className.length());
+ Class<?> clazz;
+ // check if fully qualified
+ if (className.startsWith("java.util")) {
+ clazz = Class.forName(className);
+ } else {
+ clazz = Class.forName("java.util." + className);
+ }
+ returnType = BasicTypeInfo.getInfoFor(clazz);
+ }
// basic type of primitives
else if (basicType2Matcher.find()) {
String className = basicType2Matcher.group(1);
@@ -216,6 +231,8 @@ public class TypeInfoParser {
clazz = Long.class;
} else if (className.equals("boolean")) {
clazz = Boolean.class;
+ } else if (className.equals("void")) {
+ clazz = Void.class;
}
returnType = BasicTypeInfo.getInfoFor(clazz);
}
http://git-wip-us.apache.org/repos/asf/flink/blob/9cd96df7/flink-java/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoParserTest.java
----------------------------------------------------------------------
diff --git a/flink-java/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoParserTest.java b/flink-java/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoParserTest.java
index 9153d8d..e539ada 100644
--- a/flink-java/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoParserTest.java
+++ b/flink-java/src/test/java/org/apache/flink/api/java/typeutils/TypeInfoParserTest.java
@@ -62,6 +62,8 @@ public class TypeInfoParserTest {
Assert.assertEquals(BasicTypeInfo.CHAR_TYPE_INFO, TypeInfoParser.parse("Character"));
Assert.assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInfoParser.parse("String"));
Assert.assertEquals(BasicTypeInfo.BOOLEAN_TYPE_INFO, TypeInfoParser.parse("Boolean"));
+ Assert.assertEquals(BasicTypeInfo.VOID_TYPE_INFO, TypeInfoParser.parse("Void"));
+ Assert.assertEquals(BasicTypeInfo.DATE_TYPE_INFO, TypeInfoParser.parse("Date"));
Assert.assertEquals(BasicTypeInfo.INT_TYPE_INFO, TypeInfoParser.parse("java.lang.Integer"));
Assert.assertEquals(BasicTypeInfo.DOUBLE_TYPE_INFO, TypeInfoParser.parse("java.lang.Double"));
@@ -72,6 +74,8 @@ public class TypeInfoParserTest {
Assert.assertEquals(BasicTypeInfo.CHAR_TYPE_INFO, TypeInfoParser.parse("java.lang.Character"));
Assert.assertEquals(BasicTypeInfo.STRING_TYPE_INFO, TypeInfoParser.parse("java.lang.String"));
Assert.assertEquals(BasicTypeInfo.BOOLEAN_TYPE_INFO, TypeInfoParser.parse("java.lang.Boolean"));
+ Assert.assertEquals(BasicTypeInfo.VOID_TYPE_INFO, TypeInfoParser.parse("java.lang.Void"));
+ Assert.assertEquals(BasicTypeInfo.DATE_TYPE_INFO, TypeInfoParser.parse("java.util.Date"));
Assert.assertEquals(BasicTypeInfo.INT_TYPE_INFO, TypeInfoParser.parse("int"));
Assert.assertEquals(BasicTypeInfo.DOUBLE_TYPE_INFO, TypeInfoParser.parse("double"));
@@ -81,6 +85,7 @@ public class TypeInfoParserTest {
Assert.assertEquals(BasicTypeInfo.LONG_TYPE_INFO, TypeInfoParser.parse("long"));
Assert.assertEquals(BasicTypeInfo.CHAR_TYPE_INFO, TypeInfoParser.parse("char"));
Assert.assertEquals(BasicTypeInfo.BOOLEAN_TYPE_INFO, TypeInfoParser.parse("boolean"));
+ Assert.assertEquals(BasicTypeInfo.VOID_TYPE_INFO, TypeInfoParser.parse("void"));
}
@Test