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 76d3138428 [#9077] fix(dto): Ensure updates list is not null (#9094)
76d3138428 is described below

commit 76d3138428116de9cbb503a0801b917c26b45760
Author: Kwon Taeheon <[email protected]>
AuthorDate: Fri Nov 14 08:38:44 2025 +0900

    [#9077] fix(dto): Ensure updates list is not null (#9094)
    
    ### What changes were proposed in this pull request?
    
    - Prevent potential `NPE` in the validate method of classes implementing
    `RESTRequest`.
    - Although not requested, TopicCreateRequest was also included in the PR
    since it follows the same structure and should not allow `NPE` either.
    
    ### Why are the changes needed?
    
    - Added null check for updates list in request validation.
    
    Fix: #9077
    
    ### Does this PR introduce _any_ user-facing change?
    
    - no.
    - This change only corrects internal exception handling logic, with no
    modification to public APIs or user-visible behavior.
    
    
    ### How was this patch tested?
    
    - No new tests added, since this only fixes the caught exception type.
    - Ensured all existing tests continue to pass.
---
 .../java/org/apache/gravitino/dto/requests/CatalogUpdatesRequest.java   | 2 ++
 .../org/apache/gravitino/dto/requests/JobTemplateUpdatesRequest.java    | 2 ++
 .../java/org/apache/gravitino/dto/requests/MetalakeUpdatesRequest.java  | 2 ++
 .../java/org/apache/gravitino/dto/requests/ModelUpdatesRequest.java     | 2 ++
 .../java/org/apache/gravitino/dto/requests/SchemaUpdatesRequest.java    | 2 ++
 .../java/org/apache/gravitino/dto/requests/TableUpdatesRequest.java     | 2 ++
 .../java/org/apache/gravitino/dto/requests/TopicUpdatesRequest.java     | 2 ++
 7 files changed, 14 insertions(+)

diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/CatalogUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/CatalogUpdatesRequest.java
index 1aed4bb00e..5eea31a992 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/CatalogUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/CatalogUpdatesRequest.java
@@ -19,6 +19,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class CatalogUpdatesRequest implements RESTRequest {
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "updates must not be null");
     updates.forEach(RESTRequest::validate);
   }
 }
diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/JobTemplateUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/JobTemplateUpdatesRequest.java
index fc3b12c5d6..232e0efb53 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/JobTemplateUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/JobTemplateUpdatesRequest.java
@@ -19,6 +19,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class JobTemplateUpdatesRequest implements RESTRequest 
{
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "updates must not be null");
     updates.forEach(RESTRequest::validate);
   }
 }
diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/MetalakeUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/MetalakeUpdatesRequest.java
index 371270df2c..ba985121b0 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/MetalakeUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/MetalakeUpdatesRequest.java
@@ -19,6 +19,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class MetalakeUpdatesRequest implements RESTRequest {
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "updates must not be null");
     updates.forEach(RESTRequest::validate);
   }
 }
diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/ModelUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/ModelUpdatesRequest.java
index ba30149008..a0776c7e11 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/ModelUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/ModelUpdatesRequest.java
@@ -20,6 +20,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class ModelUpdatesRequest implements RESTRequest {
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "updates must not be null");
     updates.forEach(RESTRequest::validate);
   }
 }
diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/SchemaUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/SchemaUpdatesRequest.java
index 614029ee5e..bb5c61c7b5 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/SchemaUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/SchemaUpdatesRequest.java
@@ -19,6 +19,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class SchemaUpdatesRequest implements RESTRequest {
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "updates must not be null");
     updates.forEach(RESTRequest::validate);
   }
 }
diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/TableUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/TableUpdatesRequest.java
index a88b0d8dd2..02db343bed 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/TableUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/TableUpdatesRequest.java
@@ -19,6 +19,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class TableUpdatesRequest implements RESTRequest {
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "updates must not be null");
     updates.forEach(RESTRequest::validate);
   }
 }
diff --git 
a/common/src/main/java/org/apache/gravitino/dto/requests/TopicUpdatesRequest.java
 
b/common/src/main/java/org/apache/gravitino/dto/requests/TopicUpdatesRequest.java
index 88fd2ab389..2c2a39d5cc 100644
--- 
a/common/src/main/java/org/apache/gravitino/dto/requests/TopicUpdatesRequest.java
+++ 
b/common/src/main/java/org/apache/gravitino/dto/requests/TopicUpdatesRequest.java
@@ -19,6 +19,7 @@
 package org.apache.gravitino.dto.requests;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Preconditions;
 import java.util.List;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
@@ -55,6 +56,7 @@ public class TopicUpdatesRequest implements RESTRequest {
    */
   @Override
   public void validate() throws IllegalArgumentException {
+    Preconditions.checkArgument(updates != null, "Updates list cannot be 
null");
     updates.forEach(RESTRequest::validate);
   }
 }

Reply via email to