This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 1b8f5f8de21 HDDS-15933. Remove usage of jersey internal
ContainerRequest (#10839)
1b8f5f8de21 is described below
commit 1b8f5f8de213a5c722c229bc371db7d3f931af02
Author: Eric C. Ho <[email protected]>
AuthorDate: Sat Jul 25 20:48:53 2026 +0800
HDDS-15933. Remove usage of jersey internal ContainerRequest (#10839)
Generated-by: Codex (GPT-5)
---
hadoop-ozone/s3gateway/pom.xml | 5 -
.../ozone/s3/TestVirtualHostStyleFilter.java | 146 ++++++++++-----------
2 files changed, 70 insertions(+), 81 deletions(-)
diff --git a/hadoop-ozone/s3gateway/pom.xml b/hadoop-ozone/s3gateway/pom.xml
index 0e68b5cce7f..531138b8437 100644
--- a/hadoop-ozone/s3gateway/pom.xml
+++ b/hadoop-ozone/s3gateway/pom.xml
@@ -175,11 +175,6 @@
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
</dependency>
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-common</artifactId>
- <!-- <scope>test</scope> but transitive via jersey-server -->
- </dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
diff --git
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/TestVirtualHostStyleFilter.java
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/TestVirtualHostStyleFilter.java
index d6072e276c8..6120c349857 100644
---
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/TestVirtualHostStyleFilter.java
+++
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/TestVirtualHostStyleFilter.java
@@ -18,21 +18,28 @@
package org.apache.hadoop.ozone.s3;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.net.URI;
+import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.SecurityContext;
+import javax.ws.rs.core.MultivaluedHashMap;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
import org.apache.hadoop.fs.InvalidRequestException;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.glassfish.jersey.internal.PropertiesDelegate;
-import org.glassfish.jersey.server.ContainerRequest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
+import org.mockito.ArgumentCaptor;
/**
* This class test virtual host style mapping conversion to path style.
@@ -51,47 +58,31 @@ public void setup() {
conf.set(S3GatewayConfigKeys.OZONE_S3G_DOMAIN_NAME, s3HttpAddr);
}
- /**
- * Create containerRequest object.
- * @return ContainerRequest
- * @throws Exception
- */
- public ContainerRequest createContainerRequest(String host, String path,
- String queryParams,
- boolean virtualHostStyle)
- throws Exception {
- URI baseUri = new URI("http://" + s3HttpAddr);
- URI virtualHostStyleUri;
- if (path == null && queryParams == null) {
- virtualHostStyleUri = new URI("http://" + s3HttpAddr);
- } else if (path != null && queryParams == null) {
- virtualHostStyleUri = new URI("http://" + s3HttpAddr + path);
- } else if (path != null && queryParams != null) {
- virtualHostStyleUri = new URI("http://" + s3HttpAddr + path +
- queryParams);
- } else {
- virtualHostStyleUri = new URI("http://" + s3HttpAddr + queryParams);
- }
- URI pathStyleUri;
- if (queryParams == null) {
- pathStyleUri = new URI("http://" + s3HttpAddr + path);
- } else {
- pathStyleUri = new URI("http://" + s3HttpAddr + path + queryParams);
- }
- String httpMethod = "DELETE";
- SecurityContext securityContext = mock(SecurityContext.class);
- PropertiesDelegate propertiesDelegate = mock(PropertiesDelegate.class);
- ContainerRequest containerRequest;
- if (virtualHostStyle) {
- containerRequest = new ContainerRequest(baseUri, virtualHostStyleUri,
- httpMethod, securityContext, propertiesDelegate);
- containerRequest.header(HttpHeaders.HOST, host);
- } else {
- containerRequest = new ContainerRequest(baseUri, pathStyleUri,
- httpMethod, securityContext, propertiesDelegate);
- containerRequest.header(HttpHeaders.HOST, host);
+ private ContainerRequestContext createRequestContext(String host,
+ String path) {
+ return createRequestContext(host, path, new MultivaluedHashMap<>());
+ }
+
+ private ContainerRequestContext createRequestContext(String host, String
path,
+ MultivaluedMap<String, String> queryParams) {
+ URI baseUri = URI.create("http://" + s3HttpAddr);
+ UriBuilder requestUriBuilder = UriBuilder.fromUri(baseUri);
+ if (path != null) {
+ requestUriBuilder.path(path);
}
- return containerRequest;
+ queryParams.forEach((key, values) ->
+ requestUriBuilder.queryParam(key, values.toArray()));
+
+ UriInfo uriInfo = mock(UriInfo.class);
+ when(uriInfo.getBaseUri()).thenReturn(baseUri);
+ when(uriInfo.getPath()).thenReturn(path == null ? "" : path.substring(1));
+ when(uriInfo.getQueryParameters()).thenReturn(queryParams);
+ when(uriInfo.getRequestUri()).thenReturn(requestUriBuilder.build());
+
+ ContainerRequestContext requestContext =
mock(ContainerRequestContext.class);
+ when(requestContext.getHeaderString(HttpHeaders.HOST)).thenReturn(host);
+ when(requestContext.getUriInfo()).thenReturn(uriInfo);
+ return requestContext;
}
@Test
@@ -101,11 +92,11 @@ public void testVirtualHostStyle() throws Exception {
virtualHostStyleFilter.setConfiguration(conf);
- ContainerRequest containerRequest = createContainerRequest("mybucket" +
- ".localhost:9878", "/myfile", null, true);
- virtualHostStyleFilter.filter(containerRequest);
+ ContainerRequestContext requestContext = createRequestContext(
+ "mybucket.localhost:9878", "/myfile");
+ virtualHostStyleFilter.filter(requestContext);
URI expected = new URI("http://" + s3HttpAddr + "/mybucket/myfile");
- assertEquals(expected, containerRequest.getRequestUri());
+ verify(requestContext).setRequestUri(new URI("http://" + s3HttpAddr),
expected);
}
@Test
@@ -115,12 +106,10 @@ public void testPathStyle() throws Exception {
new VirtualHostStyleFilter();
virtualHostStyleFilter.setConfiguration(conf);
- ContainerRequest containerRequest = createContainerRequest(s3HttpAddr,
- "/mybucket/myfile", null, false);
- virtualHostStyleFilter.filter(containerRequest);
- URI expected = new URI("http://" + s3HttpAddr +
+ ContainerRequestContext requestContext = createRequestContext(s3HttpAddr,
"/mybucket/myfile");
- assertEquals(expected, containerRequest.getRequestUri());
+ virtualHostStyleFilter.filter(requestContext);
+ verify(requestContext, never()).setRequestUri(any(URI.class),
any(URI.class));
}
@@ -131,11 +120,11 @@ public void testVirtualHostStyleWithCreateBucketRequest()
throws Exception {
new VirtualHostStyleFilter();
virtualHostStyleFilter.setConfiguration(conf);
- ContainerRequest containerRequest = createContainerRequest("mybucket" +
- ".localhost:9878", null, null, true);
- virtualHostStyleFilter.filter(containerRequest);
+ ContainerRequestContext requestContext = createRequestContext(
+ "mybucket.localhost:9878", null);
+ virtualHostStyleFilter.filter(requestContext);
URI expected = new URI("http://" + s3HttpAddr + "/mybucket");
- assertEquals(expected, containerRequest.getRequestUri());
+ verify(requestContext).setRequestUri(new URI("http://" + s3HttpAddr),
expected);
}
@@ -145,11 +134,11 @@ public void testVirtualHostStyleWithCreateKeyRequest()
throws Exception {
new VirtualHostStyleFilter();
virtualHostStyleFilter.setConfiguration(conf);
- ContainerRequest containerRequest = createContainerRequest("mybucket" +
- ".localhost:9878", "/key1", null, true);
- virtualHostStyleFilter.filter(containerRequest);
+ ContainerRequestContext requestContext = createRequestContext(
+ "mybucket.localhost:9878", "/key1");
+ virtualHostStyleFilter.filter(requestContext);
URI expected = new URI("http://" + s3HttpAddr + "/mybucket/key1");
- assertEquals(expected, containerRequest.getRequestUri());
+ verify(requestContext).setRequestUri(new URI("http://" + s3HttpAddr),
expected);
}
@Test
@@ -158,19 +147,24 @@ public void testVirtualHostStyleWithQueryParams() throws
Exception {
VirtualHostStyleFilter virtualHostStyleFilter =
new VirtualHostStyleFilter();
virtualHostStyleFilter.setConfiguration(conf);
- URI expected = new URI("http://" + s3HttpAddr + "/mybucket?prefix=bh");
- ContainerRequest containerRequest = createContainerRequest("mybucket" +
- ".localhost:9878", null, "?prefix=bh", true);
- virtualHostStyleFilter.filter(containerRequest);
- assertThat(expected.toString())
- .contains(containerRequest.getRequestUri().toString());
-
- containerRequest = createContainerRequest("mybucket" +
- ".localhost:9878", null, "?prefix=bh&type=dir", true);
- virtualHostStyleFilter.filter(containerRequest);
- expected = new URI("http://" + s3HttpAddr +
- "/mybucket?prefix=bh&type=dir");
-
assertThat(expected.toString()).contains(containerRequest.getRequestUri().toString());
+ URI baseUri = new URI("http://" + s3HttpAddr);
+ MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<>();
+ queryParams.add("prefix", "bh");
+ ContainerRequestContext requestContext = createRequestContext(
+ "mybucket.localhost:9878", null, queryParams);
+ virtualHostStyleFilter.filter(requestContext);
+ verify(requestContext).setRequestUri(baseUri,
+ new URI("http://" + s3HttpAddr + "/mybucket?prefix=bh"));
+
+ queryParams.add("type", "dir");
+ requestContext = createRequestContext(
+ "mybucket.localhost:9878", null, queryParams);
+ virtualHostStyleFilter.filter(requestContext);
+ ArgumentCaptor<URI> requestUriCaptor = ArgumentCaptor.forClass(URI.class);
+ verify(requestContext).setRequestUri(eq(baseUri),
requestUriCaptor.capture());
+ assertThat(requestUriCaptor.getValue().getPath()).isEqualTo("/mybucket");
+ assertThat(requestUriCaptor.getValue().getQuery().split("&"))
+ .containsExactlyInAnyOrder("prefix=bh", "type=dir");
}
@@ -180,9 +174,9 @@ public void testVirtualHostStyleWithInvalidInputs(String
hostAddress,
String expectErrorMessage)
throws Exception {
VirtualHostStyleFilter virtualHostStyleFilter = new
VirtualHostStyleFilter();
virtualHostStyleFilter.setConfiguration(conf);
- ContainerRequest containerRequest = createContainerRequest(hostAddress,
null, null, true);
+ ContainerRequestContext requestContext = createRequestContext(hostAddress,
null);
InvalidRequestException exception =
assertThrows(InvalidRequestException.class,
- () -> virtualHostStyleFilter.filter(containerRequest));
+ () -> virtualHostStyleFilter.filter(requestContext));
assertThat(exception).hasMessageContaining(expectErrorMessage);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]