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

ASF GitHub Bot commented on FLINK-10235:
----------------------------------------

zentol opened a new pull request #6653: [FLINK-10235][kafka] Explicitly cast 
custom partitioner classes
URL: https://github.com/apache/flink/pull/6653
 
 
   This PR fixes a jdk9 incompatibility regarding generics. The method 
compilation fails on java 9 since the CONNECTOR_SINK_PARTITIONER_VALUE_CUSTOM 
branch returns an Optional<Class<? extends FlinkKafkaPartitioner>>, but the 
method requires a Optional<FlinkKafkaPartitioner<Row>>.
   
   The compiler obviously cannot infer that the instantiated partitioner is 
always a `FlinkKafkaPartitioner<Row>` (since it technically could work on any 
type), so we have to help a bit.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> KafkaTableSourceSinkFactoryBase#getFlinkKafkaPartitioner does not compile 
> with Java 9
> -------------------------------------------------------------------------------------
>
>                 Key: FLINK-10235
>                 URL: https://issues.apache.org/jira/browse/FLINK-10235
>             Project: Flink
>          Issue Type: Sub-task
>          Components: Table API &amp; SQL
>    Affects Versions: 1.7.0
>            Reporter: Chesnay Schepler
>            Assignee: Chesnay Schepler
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.7.0
>
>
> The method compilation fails on java 9. The problem is that the 
> {{CONNECTOR_SINK_PARTITIONER_VALUE_CUSTOM}} branch returns an 
> {{Optional<Class<? extends FlinkKafkaPartitioner>>}}, but the method requires 
> a {{Optional<FlinkKafkaPartitioner<Row>>}}.
> {code}
> private Optional<FlinkKafkaPartitioner<Row>> 
> getFlinkKafkaPartitioner(DescriptorProperties descriptorProperties) {
>       return descriptorProperties
>               .getOptionalString(CONNECTOR_SINK_PARTITIONER)
>               .flatMap((String partitionerString) -> {
>                       switch (partitionerString) {
>                               case CONNECTOR_SINK_PARTITIONER_VALUE_FIXED:
>                                       return Optional.of(new 
> FlinkFixedPartitioner<>());
>                               case 
> CONNECTOR_SINK_PARTITIONER_VALUE_ROUND_ROBIN:
>                                       return Optional.empty();
>                               case CONNECTOR_SINK_PARTITIONER_VALUE_CUSTOM:
>                                       final Class<? extends 
> FlinkKafkaPartitioner> partitionerClass =
>                                               
> descriptorProperties.getClass(CONNECTOR_SINK_PARTITIONER_CLASS, 
> FlinkKafkaPartitioner.class);
>                                       return 
> Optional.of(InstantiationUtil.instantiate(partitionerClass));
>                               default:
>                                       throw new TableException("Unsupported 
> sink partitioner. Validator should have checked that.");
>                       }
>               });
> }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to