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

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

Github user zentol commented on a diff in the pull request:

    https://github.com/apache/flink/pull/6189#discussion_r197065693
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/AbstractHandler.java 
---
    @@ -103,77 +102,68 @@ protected void respondAsLeader(ChannelHandlerContext 
ctx, RoutedRequest routedRe
                                return;
                        }
     
    -                   ByteBuf msgContent = ((FullHttpRequest) 
httpRequest).content();
    -
    -                   R request;
    -                   if (isFileUpload()) {
    -                           final Path path = 
ctx.channel().attr(FileUploadHandler.UPLOADED_FILE).get();
    -                           if (path == null) {
    -                                   HandlerUtils.sendErrorResponse(
    -                                           ctx,
    -                                           httpRequest,
    -                                           new ErrorResponseBody("Client 
did not upload a file."),
    -                                           HttpResponseStatus.BAD_REQUEST,
    -                                           responseHeaders);
    -                                   return;
    -                           }
    -                           //noinspection unchecked
    -                           request = (R) new FileUpload(path);
    -                   } else if (msgContent.capacity() == 0) {
    -                           try {
    -                                   request = MAPPER.readValue("{}", 
untypedResponseMessageHeaders.getRequestClass());
    -                           } catch (JsonParseException | 
JsonMappingException je) {
    -                                   log.error("Request did not conform to 
expected format.", je);
    -                                   HandlerUtils.sendErrorResponse(
    -                                           ctx,
    -                                           httpRequest,
    -                                           new ErrorResponseBody("Bad 
request received."),
    -                                           HttpResponseStatus.BAD_REQUEST,
    -                                           responseHeaders);
    -                                   return;
    +                   final ByteBuf msgContent = ((FullHttpRequest) 
httpRequest).content();
    +
    +                   try (FileUploads uploadedFiles = 
FileUploadHandler.getMultipartFileUploads(ctx)) {
    +
    +                           R request;
    +                           if (msgContent.capacity() == 0) {
    +                                   try {
    +                                           request = 
MAPPER.readValue("{}", untypedResponseMessageHeaders.getRequestClass());
    +                                   } catch (JsonParseException | 
JsonMappingException je) {
    +                                           log.error("Request did not 
conform to expected format.", je);
    +                                           HandlerUtils.sendErrorResponse(
    +                                                   ctx,
    +                                                   httpRequest,
    +                                                   new 
ErrorResponseBody("Bad request received."),
    +                                                   
HttpResponseStatus.BAD_REQUEST,
    +                                                   responseHeaders);
    +                                           return;
    +                                   }
    +                           } else {
    +                                   try {
    +                                           ByteBufInputStream in = new 
ByteBufInputStream(msgContent);
    --- End diff --
    
    btw, this change is also part of the previosu commit that isn't part of 
this PR.


> Implement generic mechanism to receive files via rest
> -----------------------------------------------------
>
>                 Key: FLINK-9599
>                 URL: https://issues.apache.org/jira/browse/FLINK-9599
>             Project: Flink
>          Issue Type: New Feature
>          Components: REST
>            Reporter: Chesnay Schepler
>            Assignee: Chesnay Schepler
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.6.0
>
>
> As a prerequisite for a cleaner implementation of FLINK-9280 we should
>  * extend the RestClient to allow the upload of Files
>  * extend FileUploadHandler to accept mixed multi-part requests (json + files)
>  * generalize mechanism for accessing uploaded files in {{AbstractHandler}}
> Uploaded files can be forwarded to subsequent handlers as an attribute, 
> similar to the existing special case for the {{JarUploadHandler}}. The JSON 
> body can be forwarded by replacing the incoming http requests with a simple 
> {{DefaultFullHttpRequest}}.
> Uploaded files will be retrievable through the {{HandlerRequest}}.
> I'm not certain if/how we can document that a handler accepts files.



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

Reply via email to