From 3b8c065e0e7510a8e9afb1f6ba8d3285b872c4d8 Mon Sep 17 00:00:00 2001 From: peterxcli Date: Wed, 6 May 2026 03:38:16 +0800 Subject: [PATCH] Fix EncodingTypeObject creation logic to check for null name instead of empty string; update tests to cover new behavior. Signed-off-by: peterxcli --- .../hadoop/ozone/s3/commontypes/EncodingTypeObject.java | 5 ++--- .../ozone/s3/commontypes/TestObjectKeyNameAdapter.java | 5 +++++ .../org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java | 3 +++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java index 3f5ee7b20322..ee0e62c70f42 100644 --- a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java +++ b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/EncodingTypeObject.java @@ -18,7 +18,6 @@ package org.apache.hadoop.ozone.s3.commontypes; import jakarta.annotation.Nullable; -import org.apache.commons.lang3.StringUtils; /** * A converter to encode string if needed. @@ -41,12 +40,12 @@ public String getName() { } /** - * Create a EncodingTypeObject Object, if the parameter name is null. + * Create a EncodingTypeObject Object, if the parameter name is not null. * @return If name is null return null else return a EncodingTypeObject object */ @Nullable public static EncodingTypeObject createNullable( @Nullable String name, @Nullable String encodingType) { - if (StringUtils.isEmpty(name)) { + if (name == null) { return null; } return new EncodingTypeObject(name, encodingType); diff --git a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/commontypes/TestObjectKeyNameAdapter.java b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/commontypes/TestObjectKeyNameAdapter.java index 2473e1143a63..f2b10ac4e1bf 100644 --- a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/commontypes/TestObjectKeyNameAdapter.java +++ b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/commontypes/TestObjectKeyNameAdapter.java @@ -42,6 +42,11 @@ public void testEncodeResult() throws Exception { .marshal(EncodingTypeObject.createNullable("a b c/", null))); assertEquals("a+b+c/", getAdapter() .marshal(EncodingTypeObject.createNullable("a+b+c/", null))); + + assertEquals("", getAdapter() + .marshal(EncodingTypeObject.createNullable("", null))); + assertEquals("", getAdapter() + .marshal(EncodingTypeObject.createNullable("", ENCODING_TYPE))); } private XmlAdapter getAdapter() { diff --git a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java index c62a7e8da1c8..44f1dc5f8405 100644 --- a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java +++ b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/endpoint/TestBucketList.java @@ -58,6 +58,9 @@ public void listRoot() throws OS3Exception, IOException { endpoint.queryParamsForTest().set(QueryParams.PREFIX, ""); ListObjectResponse getBucketResponse = (ListObjectResponse) endpoint.get("b1").getEntity(); + assertNotNull(getBucketResponse.getPrefix()); + assertEquals("", getBucketResponse.getPrefix().getName()); + assertEquals(1, getBucketResponse.getCommonPrefixes().size()); assertEquals("dir1/", getBucketResponse.getCommonPrefixes().get(0).getPrefix().getName());