[ 
https://issues.apache.org/jira/browse/FLINK-29534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Exidex updated FLINK-29534:
---------------------------
    Description: 
The ability to place @TypeInfo on field was added in 
[https://github.com/apache/flink/pull/8344] . But it seams like the fact that 
it requires field to be a valid POJO was overlooked. In my case I was trying to 
add custom serializer for Jackson's ObjectNode (wrapped in List but not sure if 
this is relevant https://issues.apache.org/jira/browse/FLINK-26470) which is 
not a valid POJO, and this requirement seams to defeat the whole purpose of 
such feature. It also doesn't look like like there's a way to register 
{{org.apache.flink.api.common.typeutils.TypeSerializer}} globally on 3rd-party 
types

code snippet from TypeExtractor:
{code:java}
Type fieldType = field.getGenericType();
if (!isValidPojoField(field, clazz, typeHierarchy) && clazz != Row.class) {
    LOG.info(
            "Class "
                    + clazz
                    + " cannot be used as a POJO type because not all fields 
are valid POJO fields, "
                    + "and must be processed as GenericType. {}",
            GENERIC_TYPE_DOC_HINT);
    return null;
}
try {
    final TypeInformation<?> typeInfo;
    List<Type> fieldTypeHierarchy = new ArrayList<>(typeHierarchy);
    TypeInfoFactory factory = getTypeInfoFactory(field);
    if (factory != null) {{code}
 

 

  was:
The ability to place @TypeInfo on field was added in 
[https://github.com/apache/flink/pull/8344] . But it seams like the fact that 
it requires field to be a valid POJO was overlooked. In my case I was trying to 
add custom serializer for Jackson's ObjectNode (wrapped in List but not sure if 
this is relevant https://issues.apache.org/jira/browse/FLINK-26470) which is 
not a valid POJO, and this requirement seams to defeat the whole purpose of 
such feature. It also doesn't look like like there's a way to register 
{{org.apache.flink.api.common.typeutils.TypeSerializer}} globally

code snippet from TypeExtractor:
{code:java}
Type fieldType = field.getGenericType();
if (!isValidPojoField(field, clazz, typeHierarchy) && clazz != Row.class) {
    LOG.info(
            "Class "
                    + clazz
                    + " cannot be used as a POJO type because not all fields 
are valid POJO fields, "
                    + "and must be processed as GenericType. {}",
            GENERIC_TYPE_DOC_HINT);
    return null;
}
try {
    final TypeInformation<?> typeInfo;
    List<Type> fieldTypeHierarchy = new ArrayList<>(typeHierarchy);
    TypeInfoFactory factory = getTypeInfoFactory(field);
    if (factory != null) {{code}
 

 


> @TypeInfo on field requires field type to be valid Pojo 
> --------------------------------------------------------
>
>                 Key: FLINK-29534
>                 URL: https://issues.apache.org/jira/browse/FLINK-29534
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Type Serialization System
>    Affects Versions: 1.14.0, 1.15.0
>            Reporter: Exidex
>            Priority: Major
>
> The ability to place @TypeInfo on field was added in 
> [https://github.com/apache/flink/pull/8344] . But it seams like the fact that 
> it requires field to be a valid POJO was overlooked. In my case I was trying 
> to add custom serializer for Jackson's ObjectNode (wrapped in List but not 
> sure if this is relevant https://issues.apache.org/jira/browse/FLINK-26470) 
> which is not a valid POJO, and this requirement seams to defeat the whole 
> purpose of such feature. It also doesn't look like like there's a way to 
> register {{org.apache.flink.api.common.typeutils.TypeSerializer}} globally on 
> 3rd-party types
> code snippet from TypeExtractor:
> {code:java}
> Type fieldType = field.getGenericType();
> if (!isValidPojoField(field, clazz, typeHierarchy) && clazz != Row.class) {
>     LOG.info(
>             "Class "
>                     + clazz
>                     + " cannot be used as a POJO type because not all fields 
> are valid POJO fields, "
>                     + "and must be processed as GenericType. {}",
>             GENERIC_TYPE_DOC_HINT);
>     return null;
> }
> try {
>     final TypeInformation<?> typeInfo;
>     List<Type> fieldTypeHierarchy = new ArrayList<>(typeHierarchy);
>     TypeInfoFactory factory = getTypeInfoFactory(field);
>     if (factory != null) {{code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to