This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch 1.3.x
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 52f3f6a74d2fbdc2d5ea710c43d74c4e844a2e39
Author: liubao <[email protected]>
AuthorDate: Fri Nov 15 11:23:56 2019 +0800

    [SCB-1592]upgrade vert.x and netty.(2)fixed interface change
---
 .../demo/edge/service/EdgeDispatcher.java          |  3 +-
 .../service/encrypt/EncryptEdgeDispatcher.java     |  3 +-
 .../config/client/ConfigCenterClient.java          | 44 +++++++++++----------
 .../edge/core/DefaultEdgeDispatcher.java           |  3 +-
 .../edge/core/URLMappedEdgeDispatcher.java         |  7 ++--
 .../apache/servicecomb/it/edge/EdgeDispatcher.java |  3 +-
 .../it/edge/encrypt/EncryptEdgeDispatcher.java     |  3 +-
 .../metrics/core/TestVertxMetersInitializer.java   |  2 +
 .../client/http/WebsocketUtils.java                | 46 +++++++++++-----------
 .../transport/highway/HighwayServerVerticle.java   |  4 +-
 .../core/http/impl/Http1xConnectionBaseEx.java     |  2 +-
 .../rest/client/http/TestRestClientInvocation.java |  3 +-
 .../transport/rest/vertx/RestServerVerticle.java   |  4 ++
 .../transport/rest/vertx/VertxRestDispatcher.java  |  3 +-
 .../vertx/accesslog/element/impl/CookieItem.java   | 10 ++---
 .../rest/vertx/TestRestServerVerticle.java         |  2 +
 .../accesslog/element/impl/CookieItemTest.java     | 22 +++++------
 .../vertx/accesslog/impl/AccessLogHandlerTest.java | 10 ++---
 18 files changed, 91 insertions(+), 83 deletions(-)

diff --git 
a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeDispatcher.java
 
b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeDispatcher.java
index d5643d3..0eef0ba 100644
--- 
a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeDispatcher.java
+++ 
b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/EdgeDispatcher.java
@@ -25,7 +25,6 @@ import org.apache.servicecomb.edge.core.EdgeInvocation;
 
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 public class EdgeDispatcher extends AbstractEdgeDispatcher {
   private CompatiblePathVersionMapper versionMapper = new 
CompatiblePathVersionMapper();
@@ -38,7 +37,7 @@ public class EdgeDispatcher extends AbstractEdgeDispatcher {
   @Override
   public void init(Router router) {
     String regex = "/api/([^\\\\/]+)/([^\\\\/]+)/(.*)";
-    router.routeWithRegex(regex).handler(CookieHandler.create());
+    // cookies handler are enabled by default start from 3.8.3
     router.routeWithRegex(regex).handler(createBodyHandler());
     
router.routeWithRegex(regex).failureHandler(this::onFailure).handler(this::onRequest);
   }
diff --git 
a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/EncryptEdgeDispatcher.java
 
b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/EncryptEdgeDispatcher.java
index 5c8a9a5..c4900a6 100644
--- 
a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/EncryptEdgeDispatcher.java
+++ 
b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/EncryptEdgeDispatcher.java
@@ -30,7 +30,6 @@ import org.slf4j.LoggerFactory;
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 public class EncryptEdgeDispatcher extends AbstractEdgeDispatcher {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(EncryptEdgeDispatcher.class);
@@ -50,7 +49,7 @@ public class EncryptEdgeDispatcher extends 
AbstractEdgeDispatcher {
   public void init(Router router) {
     {
       String regex = "/" + prefix + "/([^\\\\/]+)/([^\\\\/]+)/(.*)";
-      router.routeWithRegex(regex).handler(CookieHandler.create());
+      // cookies handler are enabled by default start from 3.8.3
       router.routeWithRegex(regex).handler(createBodyHandler());
       
router.routeWithRegex(regex).failureHandler(this::onFailure).handler(this::onRequest);
     }
diff --git 
a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
 
b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
index ac0f88a..8ad91bd 100644
--- 
a/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
+++ 
b/dynamic-config/config-cc/src/main/java/org/apache/servicecomb/config/client/ConfigCenterClient.java
@@ -70,6 +70,7 @@ import io.vertx.core.http.CaseInsensitiveHeaders;
 import io.vertx.core.http.HttpClientOptions;
 import io.vertx.core.http.HttpClientRequest;
 import io.vertx.core.http.WebSocket;
+import io.vertx.core.http.WebSocketConnectOptions;
 import io.vertx.core.http.impl.FrameType;
 import io.vertx.core.http.impl.ws.WebSocketFrameImpl;
 import io.vertx.core.net.ProxyOptions;
@@ -285,28 +286,35 @@ public class ConfigCenterClient {
         Map<String, String> authHeaders = new HashMap<>();
         authHeaderProviders.forEach(provider -> 
authHeaders.putAll(provider.getSignAuthHeaders(
             createSignRequest(null, configCenter + url, headers, null))));
-
-        client.websocket(refreshPort,
-            ipPort.getHostOrIp(),
-            url,
-            new CaseInsensitiveHeaders().addAll(headers)
-                .addAll(authHeaders),
-            ws -> {
-              ws.exceptionHandler(e -> {
+        WebSocketConnectOptions options = new WebSocketConnectOptions();
+        options.setHost(ipPort.getHostOrIp()).setPort(refreshPort).setURI(url)
+            .setHeaders(new CaseInsensitiveHeaders().addAll(headers)
+                .addAll(authHeaders));
+        client.webSocket(options, asyncResult -> {
+          if (asyncResult.failed()) {
+            LOGGER.error(
+                "watcher connect to config center {} refresh port {} failed. 
Error message is [{}]",
+                configCenter,
+                refreshPort,
+                asyncResult.cause().getMessage());
+            waiter.countDown();
+          } else {
+            {
+              asyncResult.result().exceptionHandler(e -> {
                 LOGGER.error("watch config read fail", e);
                 stopHeartBeatThread();
                 isWatching = false;
               });
-              ws.closeHandler(v -> {
+              asyncResult.result().closeHandler(v -> {
                 LOGGER.warn("watching config connection is closed 
accidentally");
                 stopHeartBeatThread();
                 isWatching = false;
               });
 
-              ws.pongHandler(pong -> {
+              asyncResult.result().pongHandler(pong -> {
                 // ignore, just prevent NPE.
               });
-              ws.frameHandler(frame -> {
+              asyncResult.result().frameHandler(frame -> {
                 Buffer action = frame.binaryData();
                 LOGGER.info("watching config recieved {}", action);
                 Map<String, Object> mAction = action.toJsonObject().getMap();
@@ -319,18 +327,12 @@ public class ConfigCenterClient {
                   parseConfigUtils.refreshConfigItemsIncremental(mAction);
                 }
               });
-              startHeartBeatThread(ws);
+              startHeartBeatThread(asyncResult.result());
               isWatching = true;
               waiter.countDown();
-            },
-            e -> {
-              LOGGER.error(
-                  "watcher connect to config center {} refresh port {} failed. 
Error message is [{}]",
-                  configCenter,
-                  refreshPort,
-                  e.getMessage());
-              waiter.countDown();
-            });
+            }
+          }
+        });
       });
       waiter.await();
     }
diff --git 
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeDispatcher.java
 
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeDispatcher.java
index b6eadfe..0d195c6 100644
--- 
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeDispatcher.java
+++ 
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/DefaultEdgeDispatcher.java
@@ -23,7 +23,6 @@ import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 /**
  * Provide an easy mapping dispatcher that starts with a common prefix pattern.
@@ -66,7 +65,7 @@ public class DefaultEdgeDispatcher extends 
AbstractEdgeDispatcher {
     } else {
       regex = "/" + prefix + "/([^\\\\/]+)/(.*)";
     }
-    router.routeWithRegex(regex).handler(CookieHandler.create());
+    // cookies handler are enabled by default start from 3.8.3
     router.routeWithRegex(regex).handler(createBodyHandler());
     
router.routeWithRegex(regex).failureHandler(this::onFailure).handler(this::onRequest);
   }
diff --git 
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/URLMappedEdgeDispatcher.java
 
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/URLMappedEdgeDispatcher.java
index fe30068..c734b40 100644
--- 
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/URLMappedEdgeDispatcher.java
+++ 
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/URLMappedEdgeDispatcher.java
@@ -31,7 +31,6 @@ import com.netflix.config.DynamicPropertyFactory;
 
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 /**
  * Provide a URL mapping based dispatcher. Users configure witch URL patterns 
dispatch to a target service.
@@ -68,7 +67,7 @@ public class URLMappedEdgeDispatcher extends 
AbstractEdgeDispatcher {
   private Map<String, ConfigurationItem> configurations = new HashMap<>();
 
   public URLMappedEdgeDispatcher() {
-    if(this.enabled()) {
+    if (this.enabled()) {
       loadConfigurations();
     }
   }
@@ -85,7 +84,7 @@ public class URLMappedEdgeDispatcher extends 
AbstractEdgeDispatcher {
 
   @Override
   public void init(Router router) {
-    router.routeWithRegex(PATTERN_ANY).handler(CookieHandler.create());
+    // cookies handler are enabled by default start from 3.8.3
     router.routeWithRegex(PATTERN_ANY).handler(createBodyHandler());
     
router.routeWithRegex(PATTERN_ANY).failureHandler(this::onFailure).handler(this::onRequest);
   }
@@ -138,7 +137,7 @@ public class URLMappedEdgeDispatcher extends 
AbstractEdgeDispatcher {
     configurations.entrySet().forEach(stringConfigurationItemEntry -> {
       ConfigurationItem item = stringConfigurationItemEntry.getValue();
       LOG.info("config item: key=" + stringConfigurationItemEntry.getKey() + 
";pattern=" + item.stringPattern
-              + ";service=" + item.microserviceName + ";versionRule=" + 
item.versionRule);
+          + ";service=" + item.microserviceName + ";versionRule=" + 
item.versionRule);
     });
   }
 
diff --git 
a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/EdgeDispatcher.java
 
b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/EdgeDispatcher.java
index 7770c7c..4afda81 100644
--- 
a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/EdgeDispatcher.java
+++ 
b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/EdgeDispatcher.java
@@ -25,7 +25,6 @@ import org.apache.servicecomb.edge.core.EdgeInvocation;
 
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 public class EdgeDispatcher extends AbstractEdgeDispatcher {
   private CompatiblePathVersionMapper versionMapper = new 
CompatiblePathVersionMapper();
@@ -38,7 +37,7 @@ public class EdgeDispatcher extends AbstractEdgeDispatcher {
   @Override
   public void init(Router router) {
     String regex = "/api/([^\\\\/]+)/([^\\\\/]+)/(.*)";
-    router.routeWithRegex(regex).handler(CookieHandler.create());
+    // cookies handler are enabled by default start from 3.8.3
     router.routeWithRegex(regex).handler(createBodyHandler());
     
router.routeWithRegex(regex).failureHandler(this::onFailure).handler(this::onRequest);
   }
diff --git 
a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/encrypt/EncryptEdgeDispatcher.java
 
b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/encrypt/EncryptEdgeDispatcher.java
index 6c2bca7..7b48f04 100644
--- 
a/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/encrypt/EncryptEdgeDispatcher.java
+++ 
b/integration-tests/it-edge/src/main/java/org/apache/servicecomb/it/edge/encrypt/EncryptEdgeDispatcher.java
@@ -30,7 +30,6 @@ import org.slf4j.LoggerFactory;
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 public class EncryptEdgeDispatcher extends AbstractEdgeDispatcher {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(EncryptEdgeDispatcher.class);
@@ -50,7 +49,7 @@ public class EncryptEdgeDispatcher extends 
AbstractEdgeDispatcher {
   public void init(Router router) {
     {
       String regex = "/" + prefix + "/([^\\\\/]+)/([^\\\\/]+)/(.*)";
-      router.routeWithRegex(regex).handler(CookieHandler.create());
+      // cookies handler are enabled by default start from 3.8.3
       router.routeWithRegex(regex).handler(createBodyHandler());
       
router.routeWithRegex(regex).failureHandler(this::onFailure).handler(this::onRequest);
     }
diff --git 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
index 536cc47..17850ff 100644
--- 
a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
+++ 
b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestVertxMetersInitializer.java
@@ -67,6 +67,8 @@ public class TestVertxMetersInitializer {
 
   public static class TestServerVerticle extends AbstractVerticle {
     @Override
+    @SuppressWarnings("deprecation")
+    // TODO: vert.x 3.8.3 does not update startListen to promise, so we keep 
use deprecated API now. update in newer version.
     public void start(Future<Void> startFuture) {
       Router mainRouter = Router.router(vertx);
       mainRouter.route("/").handler(context -> {
diff --git 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
index 39db844..1536058 100644
--- 
a/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
+++ 
b/service-registry/src/main/java/org/apache/servicecomb/serviceregistry/client/http/WebsocketUtils.java
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
 import io.vertx.core.Handler;
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.http.HttpMethod;
+import io.vertx.core.http.WebSocketConnectOptions;
 
 /**
  * Created by on 2017/4/28.
@@ -42,28 +43,29 @@ public final class WebsocketUtils {
       Handler<Throwable> onConnectFailed) {
     HttpClientWithContext vertxHttpClient = 
WebsocketClientPool.INSTANCE.getClient();
     vertxHttpClient.runOnContext(client -> {
-      client.websocket(ipPort.getPort(),
-          ipPort.getHostOrIp(),
-          url,
-          RestUtils.getDefaultHeaders().addAll(RestUtils.getSignAuthHeaders(
-              RestUtils.createSignRequest(HttpMethod.GET.name(), ipPort, new 
RequestParam(), url, new HashMap<>()))),
-          ws -> {
-            onOpen.handle(null);
-
-            ws.exceptionHandler(v -> {
-              onException.handle(v);
-              try {
-                ws.close();
-              } catch (Exception err) {
-                LOGGER.error("ws close error.", err);
-              }
-            });
-            ws.closeHandler(v -> {
-              onClose.handle(v);
-            });
-            ws.handler(onMessage);
-          },
-          onConnectFailed);
+      WebSocketConnectOptions options = new WebSocketConnectOptions();
+      
options.setHost(ipPort.getHostOrIp()).setPort(ipPort.getPort()).setURI(url)
+          
.setHeaders(RestUtils.getDefaultHeaders().addAll(RestUtils.getSignAuthHeaders(
+              RestUtils.createSignRequest(HttpMethod.GET.name(), ipPort, new 
RequestParam(), url, new HashMap<>()))));
+      client.webSocket(options, asyncResult -> {
+        if (asyncResult.failed()) {
+          onConnectFailed.handle(asyncResult.cause());
+        } else {
+          onOpen.handle(null);
+          asyncResult.result().exceptionHandler(v -> {
+            onException.handle(v);
+            try {
+              asyncResult.result().close();
+            } catch (Exception err) {
+              LOGGER.error("ws close error.", err);
+            }
+          });
+          asyncResult.result().closeHandler(v -> {
+            onClose.handle(v);
+          });
+          asyncResult.result().handler(onMessage);
+        }
+      });
     });
   }
 }
diff --git 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerVerticle.java
 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerVerticle.java
index 3d6efc4..8104ecc 100644
--- 
a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerVerticle.java
+++ 
b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerVerticle.java
@@ -59,8 +59,10 @@ public class HighwayServerVerticle extends AbstractVerticle {
     }
   }
 
+  @SuppressWarnings("deprecation")
+  // TODO: vert.x 3.8.3 does not update startListen to promise, so we keep use 
deprecated API now. update in newer version.
   protected void startListen(Future<Void> startFuture) {
-    // 如果本地未配置地址,则表示不必监听,只需要作为客户端使用即可
+    // if listen address is not provided, do not fail and maybe a consumer 
service.
     if (endpointObject == null) {
       LOGGER.warn("highway listen address is not configured, will not 
listen.");
       startFuture.complete();
diff --git 
a/transports/transport-rest/transport-rest-client/src/test/java/io/vertx/core/http/impl/Http1xConnectionBaseEx.java
 
b/transports/transport-rest/transport-rest-client/src/test/java/io/vertx/core/http/impl/Http1xConnectionBaseEx.java
index 524647f..09dab11 100644
--- 
a/transports/transport-rest/transport-rest-client/src/test/java/io/vertx/core/http/impl/Http1xConnectionBaseEx.java
+++ 
b/transports/transport-rest/transport-rest-client/src/test/java/io/vertx/core/http/impl/Http1xConnectionBaseEx.java
@@ -22,7 +22,7 @@ import io.vertx.core.impl.ContextInternal;
 import io.vertx.core.impl.VertxInternal;
 import io.vertx.core.spi.metrics.NetworkMetrics;
 
-public abstract  class Http1xConnectionBaseEx extends Http1xConnectionBase{
+public abstract  class Http1xConnectionBaseEx<S extends WebSocketImplBase<S>> 
extends Http1xConnectionBase<S>{
   public Http1xConnectionBaseEx(VertxInternal vertx, ChannelHandlerContext 
chctx,
       ContextInternal context) {
     super(vertx, chctx, context);
diff --git 
a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestRestClientInvocation.java
 
b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestRestClientInvocation.java
index e00c3e3..c690091 100644
--- 
a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestRestClientInvocation.java
+++ 
b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestRestClientInvocation.java
@@ -74,6 +74,7 @@ import io.vertx.core.http.HttpClientRequest;
 import io.vertx.core.http.HttpClientResponse;
 import io.vertx.core.http.RequestOptions;
 import io.vertx.core.http.impl.Http1xConnectionBaseEx;
+import io.vertx.core.http.impl.WebSocketImpl;
 import io.vertx.core.http.impl.headers.VertxHttpHeaders;
 import io.vertx.core.net.NetSocket;
 import io.vertx.core.net.SocketAddress;
@@ -128,7 +129,7 @@ public class TestRestClientInvocation {
   static long nanoTime = 123;
 
   @Mocked
-  Http1xConnectionBaseEx connectionBase;
+  Http1xConnectionBaseEx<WebSocketImpl> connectionBase;
 
   OperationConfig operationConfig = new OperationConfig();
 
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
index a07c5a6..1047464 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestServerVerticle.java
@@ -76,6 +76,8 @@ public class RestServerVerticle extends AbstractVerticle {
     this.endpointObject = (URIEndpointObject) endpoint.getAddress();
   }
 
+  @SuppressWarnings("deprecation")
+  // TODO: vert.x 3.8.3 does not update startListen to promise, so we keep use 
deprecated API now. update in newer version.
   @Override
   public void start(Future<Void> startFuture) throws Exception {
     try {
@@ -212,6 +214,8 @@ public class RestServerVerticle extends AbstractVerticle {
     }
   }
 
+  @SuppressWarnings("deprecation")
+  // TODO: vert.x 3.8.3 does not update startListen to promise, so we keep use 
deprecated API now. update in newer version.
   private void startListen(HttpServer server, Future<Void> startFuture) {
     server.listen(endpointObject.getPort(), endpointObject.getHostOrIp(), ar 
-> {
       if (ar.succeeded()) {
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
index b90bc78..763a360 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/VertxRestDispatcher.java
@@ -42,7 +42,6 @@ import 
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.ErrorDataDec
 import io.vertx.core.json.JsonObject;
 import io.vertx.ext.web.Router;
 import io.vertx.ext.web.RoutingContext;
-import io.vertx.ext.web.handler.CookieHandler;
 
 public class VertxRestDispatcher extends AbstractVertxHttpDispatcher {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(VertxRestDispatcher.class);
@@ -63,7 +62,7 @@ public class VertxRestDispatcher extends 
AbstractVertxHttpDispatcher {
 
   @Override
   public void init(Router router) {
-    router.route().handler(CookieHandler.create());
+    // cookies handler are enabled by default start from 3.8.3
     router.route().handler(createBodyHandler());
     
router.route().failureHandler(this::failureHandler).handler(this::onRequest);
   }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
index aa20a02..331ef60 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItem.java
@@ -17,12 +17,12 @@
 
 package org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl;
 
-import java.util.Set;
+import java.util.Map;
 
 import org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import 
org.apache.servicecomb.transport.rest.vertx.accesslog.element.AccessLogItem;
 
-import io.vertx.ext.web.Cookie;
+import io.vertx.core.http.Cookie;
 import io.vertx.ext.web.RoutingContext;
 
 public class CookieItem implements AccessLogItem<RoutingContext> {
@@ -37,13 +37,13 @@ public class CookieItem implements 
AccessLogItem<RoutingContext> {
 
   @Override
   public String getFormattedItem(AccessLogParam<RoutingContext> 
accessLogParam) {
-    Set<Cookie> cookieSet = accessLogParam.getContextData().cookies();
-    if (null == cookieSet) {
+    Map<String, Cookie> cookieMap = 
accessLogParam.getContextData().cookieMap();
+    if (null == cookieMap) {
       return RESULT_NOT_FOUND;
     }
 
     String result = null;
-    for (Cookie cookie : cookieSet) {
+    for (Cookie cookie : cookieMap.values()) {
       if (varName.equals(cookie.getName())) {
         result = cookie.getValue();
       }
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
index c9846cf..5808aa5 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestRestServerVerticle.java
@@ -61,6 +61,8 @@ public class TestRestServerVerticle {
   Future<Void> startFuture = null;
 
   @Before
+  @SuppressWarnings("deprecation")
+  // TODO: vert.x 3.8.3 does not update startListen to promise, so we keep use 
deprecated API now. update in newer version.
   public void setUp() {
     instance = new RestServerVerticle();
     startFuture = Future.future();
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
index d8977aa..68db0db 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/element/impl/CookieItemTest.java
@@ -17,14 +17,14 @@
 
 package org.apache.servicecomb.transport.rest.vertx.accesslog.element.impl;
 
-import java.util.HashSet;
+import java.util.HashMap;
 
 import org.apache.servicecomb.transport.rest.vertx.accesslog.AccessLogParam;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import io.vertx.ext.web.Cookie;
+import io.vertx.core.http.Cookie;
 import io.vertx.ext.web.RoutingContext;
 import io.vertx.ext.web.impl.CookieImpl;
 
@@ -38,13 +38,13 @@ public class CookieItemTest {
   public void getFormattedElement() {
     AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
-    HashSet<Cookie> cookieSet = new HashSet<>();
+    HashMap<String, Cookie> cookieSet = new HashMap<>();
     String cookieValue = "cookieValue";
     CookieImpl cookie = new CookieImpl(COOKIE_NAME, cookieValue);
 
-    cookieSet.add(cookie);
+    cookieSet.put(cookie.getName(), cookie);
     Mockito.when(mockContext.cookieCount()).thenReturn(1);
-    Mockito.when(mockContext.cookies()).thenReturn(cookieSet);
+    Mockito.when(mockContext.cookieMap()).thenReturn(cookieSet);
     param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -56,10 +56,10 @@ public class CookieItemTest {
   public void getFormattedElementOnCookieCountIsZero() {
     AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
-    HashSet<Cookie> cookieSet = new HashSet<>();
+    HashMap<String, Cookie> cookieSet = new HashMap<>();
 
     Mockito.when(mockContext.cookieCount()).thenReturn(0);
-    Mockito.when(mockContext.cookies()).thenReturn(cookieSet);
+    Mockito.when(mockContext.cookieMap()).thenReturn(cookieSet);
     param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -73,7 +73,7 @@ public class CookieItemTest {
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
 
     Mockito.when(mockContext.cookieCount()).thenReturn(1);
-    Mockito.when(mockContext.cookies()).thenReturn(null);
+    Mockito.when(mockContext.cookieMap()).thenReturn(null);
     param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
@@ -85,13 +85,13 @@ public class CookieItemTest {
   public void getFormattedElementOnNotFound() {
     AccessLogParam<RoutingContext> param = new AccessLogParam<>();
     RoutingContext mockContext = Mockito.mock(RoutingContext.class);
-    HashSet<Cookie> cookieSet = new HashSet<>();
+    HashMap<String, Cookie> cookieSet = new HashMap<>();
     String cookieValue = "cookieValue";
     CookieImpl cookie = new CookieImpl("anotherCookieName", cookieValue);
 
-    cookieSet.add(cookie);
+    cookieSet.put(cookie.getName(), cookie);
     Mockito.when(mockContext.cookieCount()).thenReturn(1);
-    Mockito.when(mockContext.cookies()).thenReturn(cookieSet);
+    Mockito.when(mockContext.cookieMap()).thenReturn(cookieSet);
     param.setContextData(mockContext);
 
     String result = ELEMENT.getFormattedItem(param);
diff --git 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerTest.java
 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerTest.java
index 0ef62e5..d9b788c 100644
--- 
a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerTest.java
+++ 
b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/accesslog/impl/AccessLogHandlerTest.java
@@ -17,7 +17,7 @@
 
 package org.apache.servicecomb.transport.rest.vertx.accesslog.impl;
 
-import java.util.HashSet;
+import java.util.HashMap;
 import java.util.concurrent.TimeUnit;
 
 import javax.xml.ws.Holder;
@@ -31,10 +31,10 @@ import org.junit.Test;
 import org.mockito.Mockito;
 
 import io.vertx.core.Handler;
+import io.vertx.core.http.Cookie;
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.http.HttpServerResponse;
 import io.vertx.core.net.SocketAddress;
-import io.vertx.ext.web.Cookie;
 import io.vertx.ext.web.RoutingContext;
 import mockit.Mock;
 import mockit.MockUp;
@@ -59,7 +59,7 @@ public class AccessLogHandlerTest {
   @Test
   public void testHandle() {
     RoutingContext routingContext = Mockito.mock(RoutingContext.class);
-    HashSet<Cookie> cookies = new HashSet<>();
+    HashMap<String, Cookie> cookies = new HashMap<>();
     Cookie cookie = Mockito.mock(Cookie.class);
     HttpServerResponse httpServerResponse = new MockUp<HttpServerResponse>() {
       @Mock
@@ -93,10 +93,10 @@ public class AccessLogHandlerTest {
         return 123L;
       }
     };
-    cookies.add(cookie);
+    cookies.put(cookie.getName(), cookie);
     Mockito.when(cookie.getName()).thenReturn("cookie-name");
     Mockito.when(cookie.getValue()).thenReturn("cookie-value");
-    Mockito.when(routingContext.cookies()).thenReturn(cookies);
+    Mockito.when(routingContext.cookieMap()).thenReturn(cookies);
     Mockito.when(routingContext.response()).thenReturn(httpServerResponse);
     Mockito.when(routingContext.request()).thenReturn(httpServerRequest);
     
Mockito.when(httpServerRequest.remoteAddress()).thenReturn(remoteSocketAddress);

Reply via email to