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