GitHub user twalthr opened a pull request:
https://github.com/apache/flink/pull/5097
[FLINK-6909] [FLINK-7450] [types] Improve the handling of POJOs and
clean-up type extraction
## Contribution Checklist
This PR solves a variety of issues that are related to the type extraction
of POJOs and tuples.
## What is the purpose of the change
Make the type extraction more stable and help users with more detailed
exceptions.
## Brief change log
- Until now, subclasses of tuples where not properly checked for additional
fields and serializability: Non-static subclasses of tuples or classes with no
default constructor were valid types.
- Even existing tests and Gelly classes where not implemented correctly.
- I fixed bugs related to bounded generic fields in POJOs.
- The type extractor has been refactored and simplified in order to have
more consistent behavior. E.g., getForClass was unable to determine subclasses
of tuples.
- Type extraction tests have been refactored to remove all warnings that
were present.
- I tested generated Lombok POJOs.
- Class cast execeptions in CSV reader have been fixed as well.
- I added a utility method `PojoTypeInfo.ensurePojo(MyPojo.class)` that
validates if a type is a POJO and throws an exception with reasons why the
given field is no POJO. I think this can help users a lot to avoid common
mistakes.
## Verifying this change
Tests have been added to `TypeExtractorTest`, `PojoTypeExtractionTest`.
Existing tests still run.
## Does this pull request potentially affect one of the following parts:
- Dependencies (does it add or upgrade a dependency): yes
- The public API, i.e., is any changed class annotated with
`@Public(Evolving)`: yes
- The serializers: no
- The runtime per-record code paths (performance sensitive): no
- Anything that affects deployment or recovery: JobManager (and its
components), Checkpointing, Yarn/Mesos, ZooKeeper: no
- The S3 file system connector: no
## Documentation
- Does this pull request introduce a new feature? no
- If yes, how is the feature documented? not applicable
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/twalthr/flink FLINK-6909
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/flink/pull/5097.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #5097
----
commit ab3c24ab9ecbe4b39cc9ecb9e1d3b07538dacc36
Author: twalthr <[email protected]>
Date: 2017-11-24T14:59:42Z
[FLINK-6909] [FLINK-7450] [types] Improve the handling of POJOs and
clean-up type extraction
----
---