[
https://issues.apache.org/jira/browse/FLINK-7452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16167870#comment-16167870
]
ASF GitHub Bot commented on FLINK-7452:
---------------------------------------
Github user fhueske commented on a diff in the pull request:
https://github.com/apache/flink/pull/4612#discussion_r138921417
--- Diff:
flink-core/src/main/java/org/apache/flink/api/common/typeinfo/Types.java ---
@@ -19,56 +19,408 @@
package org.apache.flink.api.common.typeinfo;
import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.api.common.functions.InvalidTypesException;
+import org.apache.flink.api.java.typeutils.EitherTypeInfo;
+import org.apache.flink.api.java.typeutils.EnumTypeInfo;
+import org.apache.flink.api.java.typeutils.GenericTypeInfo;
+import org.apache.flink.api.java.typeutils.ListTypeInfo;
+import org.apache.flink.api.java.typeutils.MapTypeInfo;
+import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo;
+import org.apache.flink.api.java.typeutils.PojoField;
+import org.apache.flink.api.java.typeutils.PojoTypeInfo;
import org.apache.flink.api.java.typeutils.RowTypeInfo;
+import org.apache.flink.api.java.typeutils.TupleTypeInfo;
+import org.apache.flink.api.java.typeutils.TypeExtractor;
+import org.apache.flink.api.java.typeutils.ValueTypeInfo;
-import java.math.BigDecimal;
-import java.sql.Date;
-import java.sql.Time;
-import java.sql.Timestamp;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
/**
- * This class gives access to the type information of the most most common
types.
+ * This class gives access to the type information of the most common
types for which Flink
+ * has built-in serializers and comparators.
+ *
+ * <p>In many cases, Flink tries to analyze generic signatures of
functions to determine return
+ * types automatically. This class is intended for cases where the
extraction is not possible
+ * (or inefficient) as well as cases where type information has to be
supplied manually.
+ *
+ * <p>Depending on the API you are using (e.g. Scala API or Table API),
there might be a more
+ * specialized <code>Types</code> class.
+ *
+ * <p>A more convenient alternative might be a {@link TypeHint}.
+ *
+ * @see TypeInformation#of(Class) specify type information based on a
class that will be analyzed
+ * @see TypeInformation#of(TypeHint) specify type information based on a
{@link TypeHint}
*/
@PublicEvolving
public class Types {
- public static final BasicTypeInfo<String> STRING =
BasicTypeInfo.STRING_TYPE_INFO;
- public static final BasicTypeInfo<Boolean> BOOLEAN =
BasicTypeInfo.BOOLEAN_TYPE_INFO;
- public static final BasicTypeInfo<Byte> BYTE =
BasicTypeInfo.BYTE_TYPE_INFO;
- public static final BasicTypeInfo<Short> SHORT =
BasicTypeInfo.SHORT_TYPE_INFO;
- public static final BasicTypeInfo<Integer> INT =
BasicTypeInfo.INT_TYPE_INFO;
- public static final BasicTypeInfo<Long> LONG =
BasicTypeInfo.LONG_TYPE_INFO;
- public static final BasicTypeInfo<Float> FLOAT =
BasicTypeInfo.FLOAT_TYPE_INFO;
- public static final BasicTypeInfo<Double> DOUBLE =
BasicTypeInfo.DOUBLE_TYPE_INFO;
- public static final BasicTypeInfo<BigDecimal> DECIMAL =
BasicTypeInfo.BIG_DEC_TYPE_INFO;
+ /**
+ * Returns type information for {@link java.lang.Void}. Does not
support a null value.
+ */
+ public static final TypeInformation<?> VOID =
BasicTypeInfo.VOID_TYPE_INFO;
+
+ /**
+ * Returns type information for {@link java.lang.String}. Supports a
null value.
+ */
+ public static final TypeInformation<?> STRING =
BasicTypeInfo.STRING_TYPE_INFO;
+
+ /**
+ * Returns type information for both a primitive <code>byte</code> and a
--- End diff --
`Returns type information for both primitive <code>byte</code> and {@link
java.lang.Byte}.` (drop `a` and `wrapped` as for `STRING`. IMO, "wrapped
java.lang.Byte" would mean that `Byte` is wrapped not that it wraps a `byte`.
> Add helper methods for all built-in Flink types to Types
> --------------------------------------------------------
>
> Key: FLINK-7452
> URL: https://issues.apache.org/jira/browse/FLINK-7452
> Project: Flink
> Issue Type: Improvement
> Components: Type Serialization System
> Reporter: Timo Walther
> Assignee: Timo Walther
>
> Sometimes it is very difficult to provide `TypeInformation` manually, in case
> some extraction fails or is not available. {{TypeHint}}s should be the
> preferred way but this methods can ensure correct types.
> I propose to add all built-in Flink types to the {{Types}}. Such as:
> {code}
> Types.POJO(MyPojo.class)
> Types.POJO(Map<String, TypeInformation>)
> Types.GENERIC(Object.class)
> Types.TUPLE(TypeInformation, ...)
> Types.MAP(TypeInformation, TypeInformation)
> {code}
> The methods should validate that the returned type is exactly the requested
> type. And especially in case of POJO should help creating {{PojoTypeInfo}}.
> Once this is in place, we can deprecate the {{TypeInfoParser}}.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)