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

jmclean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new d06ceb537c [#7634] Improvement: Add null filter to ConfigEntry 
seqToStr method  (#7693)
d06ceb537c is described below

commit d06ceb537c34a13ff2896435a35a2ca099643d4c
Author: Reuben George <[email protected]>
AuthorDate: Tue Jul 15 11:06:35 2025 +0530

    [#7634] Improvement: Add null filter to ConfigEntry seqToStr method  (#7693)
    
    ### What changes were proposed in this pull request?
    
    Add null filter to ConfigEntry seqToStr method
    
    ### Why are the changes needed?
    
    Fix: #7634
    
    ### Does this PR introduce _any_ user-facing change?
    
    No
    
    ### How was this patch tested?
    
    Added a unit test
---
 .../main/java/org/apache/gravitino/config/ConfigEntry.java  |  7 ++++---
 .../org/apache/gravitino/config/TestConfigEntryList.java    | 13 +++++++++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/core/src/main/java/org/apache/gravitino/config/ConfigEntry.java 
b/core/src/main/java/org/apache/gravitino/config/ConfigEntry.java
index 44196e3f07..b32f1c33a3 100644
--- a/core/src/main/java/org/apache/gravitino/config/ConfigEntry.java
+++ b/core/src/main/java/org/apache/gravitino/config/ConfigEntry.java
@@ -22,6 +22,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.function.Consumer;
 import java.util.function.Function;
@@ -172,9 +173,9 @@ public class ConfigEntry<T> {
    * @return The converted string.
    */
   public String seqToStr(List<T> seq, Function<T, String> converter) {
-    List<String> valList = 
seq.stream().map(converter).collect(Collectors.toList());
-    String str = String.join(",", valList);
-    return str;
+    List<String> valList =
+        
seq.stream().filter(Objects::nonNull).map(converter).collect(Collectors.toList());
+    return String.join(",", valList);
   }
 
   /**
diff --git 
a/core/src/test/java/org/apache/gravitino/config/TestConfigEntryList.java 
b/core/src/test/java/org/apache/gravitino/config/TestConfigEntryList.java
index a5c8c6a91b..fc2326d34e 100644
--- a/core/src/test/java/org/apache/gravitino/config/TestConfigEntryList.java
+++ b/core/src/test/java/org/apache/gravitino/config/TestConfigEntryList.java
@@ -159,4 +159,17 @@ public class TestConfigEntryList {
     Assertions.assertThrows(
         IllegalArgumentException.class, () -> 
testConfWithoutDefault.readFrom(configMap));
   }
+
+  @Test
+  public void testSeqToStrWithNullElement() {
+    ConfigEntry<List<Integer>> testConf =
+        new ConfigBuilder("gravitino.seq.null")
+            .intConf()
+            .toSequence()
+            .createWithDefault(Lists.newArrayList());
+
+    Assertions.assertDoesNotThrow(
+        () -> testConf.writeTo(configMapEmpty, Lists.newArrayList(1, null, 
2)));
+    Assertions.assertEquals("1,2", configMapEmpty.get("gravitino.seq.null"));
+  }
 }

Reply via email to