[
https://issues.apache.org/jira/browse/FLINK-9599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16519161#comment-16519161
]
ASF GitHub Bot commented on FLINK-9599:
---------------------------------------
Github user tillrohrmann commented on a diff in the pull request:
https://github.com/apache/flink/pull/6189#discussion_r197070198
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/rest/RestClient.java ---
@@ -212,6 +271,86 @@ public void shutdown(Time timeout) {
executor);
}
+ private interface RequestProcessor<T> {
+ T createRequest(HttpRequest request, ByteBuf jsonPayload)
throws IOException;
+
+ void writeRequest(T body, Channel channel) throws IOException;
+ }
+
+ private static final class DefaultProcessor implements
RequestProcessor<HttpRequest> {
+
+ @Override
+ public HttpRequest createRequest(HttpRequest request, ByteBuf
jsonPayload) throws IOException {
+ return request;
+ }
+
+ @Override
+ public void writeRequest(HttpRequest body, Channel channel)
throws IOException {
+ channel.writeAndFlush(body);
+ }
+ }
+
+ private static final class MultipartProcessor implements
RequestProcessor<HttpPostRequestEncoder> {
+
+ private final Collection<FileUpload> fileUploads;
+
+ MultipartProcessor(Collection<FileUpload> fileUploads) {
+ this.fileUploads = fileUploads;
+ }
+
+ @Override
+ public HttpPostRequestEncoder createRequest(HttpRequest
httpRequest, ByteBuf jsonPayload) throws IOException {
--- End diff --
Move this method out to `RestClient` to generate the
`HttpPostRequestEncoder` with which we then create a `MultipartRequest`
instance.
> 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)