[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/flink/pull/4603


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139908232
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/ClusterOverviewHeaders.java
 ---
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.messages;
+
+import 
org.apache.flink.runtime.messages.webmonitor.StatusOverviewWithVersion;
+import org.apache.flink.runtime.rest.HttpMethodWrapper;
+import org.apache.flink.runtime.rest.handler.legacy.ClusterOverviewHandler;
+
+import 
org.apache.flink.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus;
+
+/**
+ * Message headers for the {@link ClusterOverviewHandler}.
+ */
+public class ClusterOverviewHeaders implements 
MessageHeaders {
+   @Override
+   public Class getRequestClass() {
+   return EmptyRequestBody.class;
+   }
+
+   @Override
+   public HttpMethodWrapper getHttpMethod() {
+   return HttpMethodWrapper.GET;
+   }
+
+   @Override
+   public String getTargetRestEndpointURL() {
+   return "/overview";
--- End diff --

Will move `CLUSTER_OVERVIEW_REST_PATH` to `ClusterOverviewHeaders` and 
reference it from `ClusterOverviewHandler`.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139907625
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/LegacyRestHandler.java
 ---
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.handler;
+
+import org.apache.flink.runtime.rest.messages.EmptyRequestBody;
+import org.apache.flink.runtime.rest.messages.MessageParameters;
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.runtime.webmonitor.RestfulGateway;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Interface which Flink's legacy REST handler have to implement in order 
to bu usable
--- End diff --

good catch.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139907636
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/messages/webmonitor/StatusOverviewWithVersion.java
 ---
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.messages.webmonitor;
+
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.util.Preconditions;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Objects;
+
+/**
+ * Status overview message including the current flink version and commit 
id.
--- End diff --

good catch


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread tzulitai
Github user tzulitai commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139898963
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/ClusterOverviewHeaders.java
 ---
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.messages;
+
+import 
org.apache.flink.runtime.messages.webmonitor.StatusOverviewWithVersion;
+import org.apache.flink.runtime.rest.HttpMethodWrapper;
+import org.apache.flink.runtime.rest.handler.legacy.ClusterOverviewHandler;
+
+import 
org.apache.flink.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus;
+
+/**
+ * Message headers for the {@link ClusterOverviewHandler}.
+ */
+public class ClusterOverviewHeaders implements 
MessageHeaders {
+   @Override
+   public Class getRequestClass() {
+   return EmptyRequestBody.class;
+   }
+
+   @Override
+   public HttpMethodWrapper getHttpMethod() {
+   return HttpMethodWrapper.GET;
+   }
+
+   @Override
+   public String getTargetRestEndpointURL() {
+   return "/overview";
--- End diff --

Maybe we should make `ClusterOverviewHandler#CLUSTER_OVERVIEW_REST_PATH` 
public and reuse that


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread tzulitai
Github user tzulitai commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139890343
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/LegacyRestHandler.java
 ---
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.handler;
+
+import org.apache.flink.runtime.rest.messages.EmptyRequestBody;
+import org.apache.flink.runtime.rest.messages.MessageParameters;
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.runtime.webmonitor.RestfulGateway;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Interface which Flink's legacy REST handler have to implement in order 
to bu usable
--- End diff --

typo: bu -> be?


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-20 Thread tzulitai
Github user tzulitai commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139890497
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/messages/webmonitor/StatusOverviewWithVersion.java
 ---
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.messages.webmonitor;
+
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.util.Preconditions;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.Objects;
+
+/**
+ * Status overview message including the current flink version and commit 
id.
--- End diff --

nit: Capital F for Flink


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-19 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139692595
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/messages/webmonitor/StatusOverviewWithVersion.java
 ---
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.messages.webmonitor;
+
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.util.Preconditions;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Status overview message including the current flink version and commit 
id.
+ */
+public class StatusOverviewWithVersion extends StatusOverview implements 
ResponseBody {
--- End diff --

Good point. I'll add it.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-19 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139685211
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/LegacyRestHandler.java
 ---
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.handler;
+
+import org.apache.flink.runtime.rest.messages.LegacyRequest;
+import org.apache.flink.runtime.rest.messages.MessageParameters;
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.runtime.webmonitor.RestfulGateway;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Interface which Flink's legacy REST handler have to implement in order 
to bu usable
+ * via the {@link LegacyRestHandlerAdapter}.
+ *
+ * @param  type of the gateway
+ * @param  type of the REST response
+ */
+public interface LegacyRestHandler {
+
+   CompletableFuture handleRequest(HandlerRequest 
request, T gateway);
+
+   String[] getPaths();
--- End diff --

True, I will remove it.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-19 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139684952
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/LegacyRequest.java
 ---
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.messages;
+
+/**
+ * Request for Flink's legacy REST handler.
+ */
+public class LegacyRequest implements RequestBody {
--- End diff --

Good idea.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-19 Thread tillrohrmann
Github user tillrohrmann commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139684917
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/RedirectHandler.java
 ---
@@ -143,19 +154,20 @@ protected void channelRead0(
routed.request(),
new 
ErrorResponseBody("Service temporarily unavailable due to an ongoing leader 
election. Please refresh."),

HttpResponseStatus.SERVICE_UNAVAILABLE));
-   } else {
-   HandlerUtils.sendErrorResponse(
-   channelHandlerContext,
-   routed.request(),
-   new ErrorResponseBody("Local address 
has not been resolved. This indicates an internal error."),
-   
HttpResponseStatus.INTERNAL_SERVER_ERROR);
+
+   } catch (Throwable throwable) {
+   logger.warn("Error occurred while processing 
web request.", throwable);
+   HandlerUtils.sendErrorResponse(
--- End diff --

Good catch.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-18 Thread zentol
Github user zentol commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139414902
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/messages/LegacyRequest.java
 ---
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.messages;
+
+/**
+ * Request for Flink's legacy REST handler.
+ */
+public class LegacyRequest implements RequestBody {
--- End diff --

Let's rename this to `EmptyRequestBody`, similar to 
`EmptyMessageParameters`.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-18 Thread zentol
Github user zentol commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139411152
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/RedirectHandler.java
 ---
@@ -143,19 +154,20 @@ protected void channelRead0(
routed.request(),
new 
ErrorResponseBody("Service temporarily unavailable due to an ongoing leader 
election. Please refresh."),

HttpResponseStatus.SERVICE_UNAVAILABLE));
-   } else {
-   HandlerUtils.sendErrorResponse(
-   channelHandlerContext,
-   routed.request(),
-   new ErrorResponseBody("Local address 
has not been resolved. This indicates an internal error."),
-   
HttpResponseStatus.INTERNAL_SERVER_ERROR);
+
+   } catch (Throwable throwable) {
+   logger.warn("Error occurred while processing 
web request.", throwable);
+   HandlerUtils.sendErrorResponse(
--- End diff --

indentation is off


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-18 Thread zentol
Github user zentol commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139413912
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/messages/webmonitor/StatusOverviewWithVersion.java
 ---
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.messages.webmonitor;
+
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.util.Preconditions;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Status overview message including the current flink version and commit 
id.
+ */
+public class StatusOverviewWithVersion extends StatusOverview implements 
ResponseBody {
--- End diff --

I suggest to add a test to verify that a given Request-/ResponseBody can be 
mapped to JSON and back again. An example can be found here: 
https://github.com/zentol/flink/blob/7072/flink-runtime/src/test/java/org/apache/flink/runtime/rest/messages/JobSubmitRequestBodyResponseTest.java

(We can probably create a simple test base for this)


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-09-18 Thread zentol
Github user zentol commented on a diff in the pull request:

https://github.com/apache/flink/pull/4603#discussion_r139415579
  
--- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/LegacyRestHandler.java
 ---
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.rest.handler;
+
+import org.apache.flink.runtime.rest.messages.LegacyRequest;
+import org.apache.flink.runtime.rest.messages.MessageParameters;
+import org.apache.flink.runtime.rest.messages.ResponseBody;
+import org.apache.flink.runtime.webmonitor.RestfulGateway;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Interface which Flink's legacy REST handler have to implement in order 
to bu usable
+ * via the {@link LegacyRestHandlerAdapter}.
+ *
+ * @param  type of the gateway
+ * @param  type of the REST response
+ */
+public interface LegacyRestHandler {
+
+   CompletableFuture handleRequest(HandlerRequest 
request, T gateway);
+
+   String[] getPaths();
--- End diff --

I don't think we'll need this anymore, as this should be subsumed by the 
message headers.


---


[GitHub] flink pull request #4603: [FLINK-7534] Create LegacyRestHandlerAdapter for o...

2017-08-26 Thread tillrohrmann
GitHub user tillrohrmann opened a pull request:

https://github.com/apache/flink/pull/4603

[FLINK-7534] Create LegacyRestHandlerAdapter for old REST handlers

## What is the purpose of the change

Introduce LegacyRestHandler interface which the old REST handler have to 
implement
in order to make them usable for the RestServerEndpoint in combination with 
the
LegacyRestHandlerAdapter. The LegacyRestHandlerAdapter extends the 
AbstractRestHandler
and runs the LegacyRestHandler implementation.

As an example, this commit ports the ClusterOverviewHandler to the new 
interface. The
Dispatcher side still has to be properly implemented.

## Brief change log

- Introduce `LegacyRestHandler` interface to be implemented by the old REST 
handler
- Implement `LegacyRestHandlerAdapter` which allows the `LegacyRestHandler` 
to be executed by the `RestServerEndpoint`
- Port the `ClusterOverviewHandler` to the `LegacyRestHandler` interface

## Verifying this change

This change has been manually verified by starting the 
`DispatcherRestEndpoint` and opening the web frontend in a browser.

## Does this pull request potentially affect one of the following parts:

  - Dependencies (does it add or upgrade a dependency): (no)
  - The public API, i.e., is any changed class annotated with 
`@Public(Evolving)`: (no)
  - 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)

## 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/tillrohrmann/flink createLegacyHandlerAdapter

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/flink/pull/4603.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 #4603


commit 7835d0a89c8ecdd5b9661ee8c57a9d63a3ed3742
Author: Till Rohrmann 
Date:   2017-08-14T13:47:04Z

[FLINK-7522] Add termination future to ClusterEntrypoint

The termination future is completed when the ClusterEntrypoint shuts down. 
This
allows for easier testing.

commit 2cdf97f824bc62a82e65f4c160b9ad64de446de4
Author: Till Rohrmann 
Date:   2017-08-16T12:36:13Z

[FLINK-7457] Make Dispatcher highly available

This commit introduces a dispatcher leader election and retrieval service 
to the
HighAvailabilityServices. Moreover it adds code such that the Dispatcher 
now takes
part in the leader election process using the afore-mentioned services.

Let Dispatcher participate in leader election

Add test for Dispatcher leader election

commit 04caf85d33ddfc3a4a9b788745b8282c3437d8e2
Author: Till Rohrmann 
Date:   2017-08-10T08:56:12Z

[FLINK-7409] [web] Make WebRuntimeMonitor reactive

This commit changes the behaviour of the WebRuntimeMonitor to not longer 
block serving
threads by waiting on the result of futures. Instead the RequestHandler now 
returns a
CompletableFuture which is written out to the Netty 
channel upon
completion. This will improve the performance of our WebRuntimeMonitor.

commit 4fa6dedd9a2d1a91339ff5effda3bc2bd1d5
Author: Till Rohrmann 
Date:   2017-08-15T10:00:58Z

[FLINK-7458] Generalize GatewayRetriever for WebRuntimeMonitor

Introduce a generalized GatewayRetriever replacing the JobManagerRetriever. 
The
GatewayRetriever fulfills the same purpose as the JobManagerRetriever with 
the
ability to retrieve the gateway for an arbitrary endpoint type.

commit 0f9b2ce77e20f25fc95ddeba98f863b86450a72c
Author: Till Rohrmann 
Date:   2017-08-15T11:55:47Z

[FLINK-7459] Generalize Flink's redirection logic

Introduce RedirectHandler which can be extended to add redirection 
functionality to all
SimpleInboundChannelHandlers. This allows to share the same functionality 
across the
StaticFileServerHandler and the RuntimeMonitorHandlerBase which could now 
be removed.
In the future, the AbstractRestHandler will also extend the RedirectHandler.

commit 88aed4f7a198b3994271088b8e19558d399ddd9d
Author: Till Rohrmann 
Date:   2017-08-17T13:04:19Z

[FLINK-7527] [rest] Let AbstractRestHandler extend RedirectHandler

By letting the AbstractRestHandler extend the RedirectHandler, we add 
redirection
capabilities to the AbstractRestHandler.

commit 9b7de1dc21b771fc10ee1661f34c142e990b424f
Author: Till Rohrmann 
Date: