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);
