[jira] [Commented] (FLINK-29534) @TypeInfo on field requires field type to be valid Pojo

2022-10-07 Thread Exidex (Jira)


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

Exidex commented on FLINK-29534:


You are right the problem I had was in different place. Here it worked 
properly, but there was still a log in logs which misled me.

> @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 fieldTypeHierarchy = new ArrayList<>(typeHierarchy);
>     TypeInfoFactory factory = getTypeInfoFactory(field);
>     if (factory != null) {{code}
>  
>  



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


[jira] [Commented] (FLINK-29534) @TypeInfo on field requires field type to be valid Pojo

2022-10-07 Thread Chesnay Schepler (Jira)


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

Chesnay Schepler commented on FLINK-29534:
--

>  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

Yes, this was removed at some point.


> @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 fieldTypeHierarchy = new ArrayList<>(typeHierarchy);
>     TypeInfoFactory factory = getTypeInfoFactory(field);
>     if (factory != null) {{code}
>  
>  



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


[jira] [Commented] (FLINK-29534) @TypeInfo on field requires field type to be valid Pojo

2022-10-07 Thread Chesnay Schepler (Jira)


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

Chesnay Schepler commented on FLINK-29534:
--

It's not the field most be a POJO; the annotated class must actually go through 
Flinks serialization stack.

If the ObjectNode is within a List then it the whole thing goes through Kryo. 
If you'd annotate the list with TypeInfo and set it up to go through Flinks 
ListSerializer than TypeInfo will also work on the contained ObjectNodes.

> @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 fieldTypeHierarchy = new ArrayList<>(typeHierarchy);
>     TypeInfoFactory factory = getTypeInfoFactory(field);
>     if (factory != null) {{code}
>  
>  



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