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

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

zentol commented on issue #6437: [FLINK-9976][streaming] Remove unnecessary 
generic parameters
URL: https://github.com/apache/flink/pull/6437#issuecomment-408370024
 
 
   I think that would be a nicer approach. The fact that this compiles _and 
runs without error_ is rather disgusting:
   ```
   final RowFormatBuilder<String, String> original = forRowFormat(new 
Path("test"), (Encoder<String>) (element, stream) -> stream.write(0));
   final RowFormatBuilder<String, Integer> casted = original
        .withBucketerAndPolicy(new Bucketer<String, Integer>() {
                @Override
                public Integer getBucketId(String element, Context context) {
                        return 0;
                }
   
                @Override
                public SimpleVersionedSerializer<Integer> getSerializer() {
                        return null;
                }
        }, new RollingPolicy<String, Integer>() {
                @Override
                public boolean shouldRollOnCheckpoint(PartFileInfo<Integer> 
partFileState) throws IOException {
                        return false;
                }
   
                @Override
                public boolean shouldRollOnEvent(PartFileInfo<Integer> 
partFileState, String element) throws IOException {
                        return false;
                }
   
                @Override
                public boolean shouldRollOnProcessingTime(PartFileInfo<Integer> 
partFileState, long currentTime) throws IOException {
                        return false;
                }
        });
   
   if (!original.equals(casted)) {
        throw new RuntimeException();
   }
   ```

----------------------------------------------------------------
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:
[email protected]


> Odd signatures for streaming file sink format builders
> ------------------------------------------------------
>
>                 Key: FLINK-9976
>                 URL: https://issues.apache.org/jira/browse/FLINK-9976
>             Project: Flink
>          Issue Type: Bug
>          Components: Streaming Connectors
>    Affects Versions: 1.6.0
>            Reporter: Chesnay Schepler
>            Assignee: Chesnay Schepler
>            Priority: Major
>              Labels: pull-request-available
>
> There are 2 instances of apparently unnecessary generic parameters in the 
> format builders for the {{StreamingFileSink}}.
> Both these methods have a generic parameter for the BucketID type, however 
> the builder itself already has such a parameter. The methods use unchecked 
> casts to make the types fit, so we should be able to modify the signature to 
> use the builders parameter instead.
> {code}
> public static class RowFormatBuilder<IN, BucketID> extends 
> StreamingFileSink.BucketsBuilder<IN, BucketID> {
> ...
>       public <ID> StreamingFileSink.RowFormatBuilder<IN, ID> 
> withBucketerAndPolicy(final Bucketer<IN, ID> bucketer, final 
> RollingPolicy<IN, ID> policy) {
>               @SuppressWarnings("unchecked")
>               StreamingFileSink.RowFormatBuilder<IN, ID> reInterpreted = 
> (StreamingFileSink.RowFormatBuilder<IN, ID>) this;
>               reInterpreted.bucketer = Preconditions.checkNotNull(bucketer);
>               reInterpreted.rollingPolicy = 
> Preconditions.checkNotNull(policy);
>               return reInterpreted;
>       }
> ...
> {code}
> {code}
> public static class BulkFormatBuilder<IN, BucketID> extends 
> StreamingFileSink.BucketsBuilder<IN, BucketID> {
> ...
>       public <ID> StreamingFileSink.BulkFormatBuilder<IN, ID> 
> withBucketer(Bucketer<IN, ID> bucketer) {
>               @SuppressWarnings("unchecked")
>               StreamingFileSink.BulkFormatBuilder<IN, ID> reInterpreted = 
> (StreamingFileSink.BulkFormatBuilder<IN, ID>) this;
>               reInterpreted.bucketer = Preconditions.checkNotNull(bucketer);
>               return reInterpreted;
>       }
> ...
> {code}



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

Reply via email to