[SCB-2509] Bump vertx version from 4.2.7 to 4.3.2 (#3244)
diff --git a/dependencies/default/pom.xml b/dependencies/default/pom.xml
index 65de9bf..4c684c2 100644
--- a/dependencies/default/pom.xml
+++ b/dependencies/default/pom.xml
@@ -97,7 +97,7 @@
<spring-boot.version>2.6.7</spring-boot.version>
<swagger.version>1.6.6</swagger.version>
<swagger2markup.version>1.3.3</swagger2markup.version>
- <vertx.version>4.2.7</vertx.version>
+ <vertx.version>4.3.2</vertx.version>
<zipkin.version>2.23.18</zipkin.version>
<zipkin-reporter.version>2.16.3</zipkin-reporter.version>
<!-- Base dir of main -->
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 014c1e9..3cff759 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
@@ -20,6 +20,7 @@
import java.util.HashMap;
import java.util.Map;
+import io.vertx.ext.web.handler.PlatformHandler;
import org.apache.servicecomb.transport.rest.vertx.RestBodyHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -71,7 +72,7 @@
// cookies handler are enabled by default start from 3.8.3
String pattern = DynamicPropertyFactory.getInstance().getStringProperty(KEY_PATTERN, PATTERN_ANY).get();
router.routeWithRegex(pattern).failureHandler(this::onFailure)
- .handler(this::preCheck)
+ .handler((PlatformHandler) URLMappedEdgeDispatcher.this::preCheck)
.handler(createBodyHandler())
.handler(this::onRequest);
}
diff --git a/foundations/foundation-test-scaffolding/src/main/java/io/vertx/core/impl/SyncContext.java b/foundations/foundation-test-scaffolding/src/main/java/io/vertx/core/impl/SyncContext.java
index 31cc2d9..eb25a08 100644
--- a/foundations/foundation-test-scaffolding/src/main/java/io/vertx/core/impl/SyncContext.java
+++ b/foundations/foundation-test-scaffolding/src/main/java/io/vertx/core/impl/SyncContext.java
@@ -29,7 +29,7 @@
}
public SyncContext(VertxInternal vertx) {
- super(vertx, null, null, null, null, null, null, false);
+ super(vertx, null, null, null, null, null, null);
}
@Override
@@ -42,7 +42,7 @@
}
@Override
- public void runOnContext(AbstractContext ctx, Handler<Void> action) {
+ protected void runOnContext(ContextInternal ctx, Handler<Void> action) {
action.handle(null);
}
diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
index e0e72b0..435b660 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/http/VertxServerRequestToHttpServletRequest.java
@@ -33,6 +33,7 @@
import javax.servlet.http.Part;
import javax.ws.rs.core.HttpHeaders;
+import io.vertx.ext.web.impl.RoutingContextInternal;
import org.apache.servicecomb.foundation.common.http.HttpUtils;
import org.apache.servicecomb.foundation.vertx.stream.BufferInputStream;
import org.slf4j.Logger;
@@ -77,13 +78,16 @@
this.context = context;
this.vertxRequest = context.request();
this.socketAddress = this.vertxRequest.remoteAddress();
- super.setBodyBuffer(context.getBody());
+ super.setBodyBuffer(context.body().buffer());
}
@Override
public void setBodyBuffer(Buffer bodyBuffer) {
super.setBodyBuffer(bodyBuffer);
- context.setBody(bodyBuffer);
+ if (context instanceof RoutingContextInternal) {
+ RoutingContextInternal contextInternal = (RoutingContextInternal) context;
+ contextInternal.setBody(bodyBuffer);
+ }
this.inputStream = null;
}
@@ -143,8 +147,7 @@
Map<String, String[]> paramMap = new HashMap<>();
MultiMap map = this.vertxRequest.params();
for (String name : map.names()) {
- List<String> valueList = map.getAll(name);
- paramMap.put(name, map.getAll(name).toArray(new String[valueList.size()]));
+ paramMap.put(name, map.getAll(name).toArray(new String[0]));
}
parameterMap = paramMap;
}
@@ -255,10 +258,10 @@
if (inputStream != null) {
return inputStream;
}
- if (context.getBody() == null) {
+ if (context.body().buffer() == null) {
return null;
}
- inputStream = new BufferInputStream(context.getBody().getByteBuf());
+ inputStream = new BufferInputStream(context.body().buffer().getByteBuf());
return inputStream;
}
@@ -284,8 +287,7 @@
@Override
public Collection<Part> getParts() {
- Set<FileUpload> fileUploads = context.fileUploads();
- return fileUploads.stream().map(FileUploadPart::new).collect(Collectors.toList());
+ return context.fileUploads().stream().map(FileUploadPart::new).collect(Collectors.toList());
}
public RoutingContext getContext() {
diff --git a/foundations/foundation-vertx/src/test/java/io/vertx/ext/web/impl/TestHttpServerRequestUtils.java b/foundations/foundation-vertx/src/test/java/io/vertx/ext/web/impl/TestHttpServerRequestUtils.java
index 874226f..ec8255f 100644
--- a/foundations/foundation-vertx/src/test/java/io/vertx/ext/web/impl/TestHttpServerRequestUtils.java
+++ b/foundations/foundation-vertx/src/test/java/io/vertx/ext/web/impl/TestHttpServerRequestUtils.java
@@ -17,6 +17,7 @@
package io.vertx.ext.web.impl;
+import io.vertx.ext.web.RequestBody;
import org.apache.servicecomb.foundation.vertx.http.VertxServerRequestToHttpServletRequest;
import io.vertx.core.http.impl.HttpServerRequestInternal;
@@ -35,6 +36,8 @@
HttpServerRequestWrapper wrapper = new HttpServerRequestWrapper(request, AllowForwardHeaders.NONE);
Mockito.when(request.scheme()).thenReturn("http");
Mockito.when(context.request()).thenReturn(wrapper);
+ RequestBody requestBody = Mockito.mock(RequestBody.class);
+ Mockito.when(context.body()).thenReturn(requestBody);
VertxServerRequestToHttpServletRequest reqEx = new VertxServerRequestToHttpServletRequest(context, "abc");
Assertions.assertEquals("abc", reqEx.getRequestURI());
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
index 2f8785d..8479e70 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/http/TestVertxServerRequestToHttpServletRequest.java
@@ -29,10 +29,13 @@
import javax.servlet.http.Cookie;
import javax.ws.rs.core.HttpHeaders;
+import io.vertx.ext.web.RequestBody;
+import io.vertx.ext.web.impl.RoutingContextInternal;
import org.apache.servicecomb.foundation.common.Holder;
import org.apache.servicecomb.foundation.common.http.HttpUtils;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -44,10 +47,9 @@
import io.vertx.ext.web.RoutingContext;
import mockit.Deencapsulation;
import mockit.Expectations;
-import mockit.Mock;
-import mockit.MockUp;
import mockit.Mocked;
import org.junit.jupiter.api.Assertions;
+import org.mockito.Mockito;
public class TestVertxServerRequestToHttpServletRequest {
@Mocked
@@ -59,6 +61,14 @@
@Mocked
SocketAddress socketAddress;
+ RequestBody mockRequestBody;
+
+ RoutingContextInternal mockContext;
+
+ HttpServerRequest mockHttpServerRequest;
+
+ SocketAddress mockSocketAddress;
+
VertxServerRequestToHttpServletRequest request;
@Before
@@ -72,9 +82,24 @@
}
};
+ mockRequestBody = Mockito.mock(RequestBody.class);
+ mockContext = Mockito.mock(RoutingContextInternal.class);
+ mockHttpServerRequest = Mockito.mock(HttpServerRequest.class);
+ mockSocketAddress = Mockito.mock(SocketAddress.class);
+ // init mocks
+ Mockito.when(mockHttpServerRequest.remoteAddress()).thenReturn(mockSocketAddress);
+ Mockito.when(mockContext.body()).thenReturn(mockRequestBody);
+ Mockito.when(mockContext.request()).thenReturn(mockHttpServerRequest);
+
request = new VertxServerRequestToHttpServletRequest(context);
}
+ @After
+ public void clean() {
+ Mockito.reset(mockRequestBody);
+ Mockito.reset(mockContext);
+ }
+
@Test
public void constructWithPath() {
request = new VertxServerRequestToHttpServletRequest(context, "/path");
@@ -85,18 +110,11 @@
@Test
public void setBodyBuffer() {
Holder<Buffer> bodyHolder = new Holder<>();
- context = new MockUp<RoutingContext>() {
- @Mock
- HttpServerRequest request() {
- return vertxRequest;
- }
-
- @Mock
- void setBody(Buffer body) {
- bodyHolder.value = body;
- }
- }.getMockInstance();
- request = new VertxServerRequestToHttpServletRequest(context);
+ Mockito.doAnswer(invocation -> {
+ bodyHolder.value = invocation.getArgument(0);
+ return null;
+ }).when(mockContext).setBody(Mockito.any());
+ request = new VertxServerRequestToHttpServletRequest(mockContext);
Buffer bodyBuffer = Buffer.buffer();
request.setBodyBuffer(bodyBuffer);
@@ -107,13 +125,8 @@
@Test
public void testGetContentType() {
- new Expectations() {
- {
- vertxRequest.getHeader(HttpHeaders.CONTENT_TYPE);
- result = "json";
- }
- };
-
+ VertxServerRequestToHttpServletRequest request = new VertxServerRequestToHttpServletRequest(mockContext);
+ Mockito.when(mockHttpServerRequest.getHeader(HttpHeaders.CONTENT_TYPE)).thenReturn("json");
Assertions.assertEquals("json", request.getContentType());
}
@@ -425,13 +438,11 @@
Buffer body = Buffer.buffer();
body.appendByte((byte) 1);
- new Expectations() {
- {
- context.getBody();
- result = body;
- }
- };
+ Mockito.when(mockRequestBody.buffer()).thenReturn(body);
+ Mockito.when(mockContext.request()).thenReturn(vertxRequest);
+ Mockito.when(mockContext.body()).thenReturn(mockRequestBody);
+ VertxServerRequestToHttpServletRequest request = new VertxServerRequestToHttpServletRequest(mockContext);
ServletInputStream is1 = request.getInputStream();
Assertions.assertSame(is1, request.getInputStream());
int value = is1.read();
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 564eb64..4dca3a9 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
@@ -68,7 +68,7 @@
@Override
public void start(Promise<Void> startPromise) {
Router mainRouter = Router.router(vertx);
- mainRouter.route("/").handler(context -> context.response().end(context.getBody()));
+ mainRouter.route("/").handler(context -> context.response().end(context.body().buffer()));
HttpServer server = vertx.createHttpServer();
server.requestHandler(mainRouter);
diff --git a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestBodyHandler.java b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestBodyHandler.java
index 8a8563f..f6e02fe 100644
--- a/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestBodyHandler.java
+++ b/transports/transport-rest/transport-rest-vertx/src/main/java/org/apache/servicecomb/transport/rest/vertx/RestBodyHandler.java
@@ -22,7 +22,7 @@
package org.apache.servicecomb.transport.rest.vertx;
import java.io.File;
-import java.util.Set;
+import java.util.List;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -209,7 +209,7 @@
initBodyBuffer();
}
- Set<FileUpload> fileUploads = context.fileUploads();
+ List<FileUpload> fileUploads = context.fileUploads();
final String contentType = context.request().getHeader(HttpHeaders.CONTENT_TYPE);
if (contentType == null) {
@@ -361,7 +361,10 @@
if (mergeFormAttributes && req.isExpectMultipart()) {
req.params().addAll(req.formAttributes());
}
- context.setBody(body);
+ if (context instanceof RoutingContextInternal) {
+ RoutingContextInternal contextInternal = (RoutingContextInternal) context;
+ contextInternal.setBody(body);
+ }
// release body as it may take lots of memory
body = null;
diff --git a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
index cfe6ed5..3a98723 100644
--- a/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
+++ b/transports/transport-rest/transport-rest-vertx/src/test/java/org/apache/servicecomb/transport/rest/vertx/TestVertxRestDispatcher.java
@@ -22,7 +22,7 @@
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.core.json.JsonObject;
-import io.vertx.core.net.SocketAddress;
+import io.vertx.ext.web.RequestBody;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.RoutingContext;
import mockit.Expectations;
@@ -228,22 +228,17 @@
}
@Test
- public void onRequest(@Mocked Vertx vertx, @Mocked Context context, @Mocked HttpServerRequest request,
- @Mocked SocketAddress socketAddress) {
-
+ public void onRequest(@Mocked Vertx vertx, @Mocked Context context) {
+ RequestBody requestBody = Mockito.mock(RequestBody.class);
+ HttpServerRequest request = Mockito.mock(HttpServerRequest.class);
Map<String, Object> map = new HashMap<>();
- RoutingContext routingContext = new MockUp<RoutingContext>() {
- @Mock
- RoutingContext put(String key, Object obj) {
- map.put(key, obj);
- return null;
- }
-
- @Mock
- HttpServerRequest request() {
- return request;
- }
- }.getMockInstance();
+ RoutingContext mockRoutingContext = Mockito.mock(RoutingContext.class);
+ Mockito.when(mockRoutingContext.body()).thenReturn(requestBody);
+ Mockito.when(mockRoutingContext.request()).thenReturn(request);
+ Mockito.doAnswer(invocation -> {
+ map.put(invocation.getArgument(0), invocation.getArgument(1));
+ return null;
+ }).when(mockRoutingContext).put(Mockito.anyString(), Mockito.any());
new Expectations() {
{
@@ -252,7 +247,7 @@
}
};
- dispatcher.onRequest(routingContext);
+ dispatcher.onRequest(mockRoutingContext);
Assertions.assertEquals(VertxRestInvocation.class, map.get(RestConst.REST_PRODUCER_INVOCATION).getClass());
Assertions.assertTrue(invoked);