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

fanng 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 903f7c81ca [#8863] improvement(policy): Add a convenience method to 
get all rules in the policy content (#9023)
903f7c81ca is described below

commit 903f7c81ca15b01c16d4bac39c9dda23da2cc142
Author: mchades <[email protected]>
AuthorDate: Wed Nov 5 20:27:40 2025 +0800

    [#8863] improvement(policy): Add a convenience method to get all rules in 
the policy content (#9023)
    
    ### What changes were proposed in this pull request?
    
    Add a convenience method to get all rules in the policy content
    
    ### Why are the changes needed?
    
    Fix: #8863
    
    ### Does this PR introduce _any_ user-facing change?
    
    yes, the new method is for the client
    
    ### How was this patch tested?
    
    tests added
---
 .../main/java/org/apache/gravitino/policy/PolicyContent.java   | 10 ++++++++++
 .../main/java/org/apache/gravitino/policy/PolicyContents.java  |  5 +++++
 .../org/apache/gravitino/client/integration/test/PolicyIT.java |  2 ++
 3 files changed, 17 insertions(+)

diff --git a/api/src/main/java/org/apache/gravitino/policy/PolicyContent.java 
b/api/src/main/java/org/apache/gravitino/policy/PolicyContent.java
index e66191afdf..03f6168679 100644
--- a/api/src/main/java/org/apache/gravitino/policy/PolicyContent.java
+++ b/api/src/main/java/org/apache/gravitino/policy/PolicyContent.java
@@ -37,6 +37,16 @@ public interface PolicyContent {
    */
   Map<String, String> properties();
 
+  /**
+   * A convenience method to get all rules in the policy content.
+   *
+   * @return A map of rule names to their corresponding rule objects.
+   */
+  default Map<String, Object> rules() {
+    // backward compatibility
+    throw new UnsupportedOperationException("Does support get all rules.");
+  }
+
   /**
    * Validates the policy content.
    *
diff --git a/api/src/main/java/org/apache/gravitino/policy/PolicyContents.java 
b/api/src/main/java/org/apache/gravitino/policy/PolicyContents.java
index 27b9caa636..5922136ba3 100644
--- a/api/src/main/java/org/apache/gravitino/policy/PolicyContents.java
+++ b/api/src/main/java/org/apache/gravitino/policy/PolicyContents.java
@@ -87,6 +87,11 @@ public class PolicyContents {
       return customRules;
     }
 
+    @Override
+    public Map<String, Object> rules() {
+      return customRules;
+    }
+
     @Override
     public Set<MetadataObject.Type> supportedObjectTypes() {
       return supportedObjectTypes;
diff --git 
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/PolicyIT.java
 
b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/PolicyIT.java
index e7cd6ed726..d20e38fe8f 100644
--- 
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/PolicyIT.java
+++ 
b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/PolicyIT.java
@@ -197,6 +197,7 @@ public class PolicyIT extends BaseIT {
     Assertions.assertTrue(policy.enabled());
     Assertions.assertFalse(policy.inherited().isPresent());
     Assertions.assertEquals(content, policy.content());
+    Assertions.assertEquals(content.rules(), policy.content().rules());
 
     // Test already existed policy
     Assertions.assertThrows(
@@ -212,6 +213,7 @@ public class PolicyIT extends BaseIT {
     Assertions.assertTrue(fetchedPolicy.enabled());
     Assertions.assertFalse(fetchedPolicy.inherited().isPresent());
     Assertions.assertEquals(content, fetchedPolicy.content());
+    Assertions.assertEquals(content.rules(), fetchedPolicy.content().rules());
 
     // test List names
     String policyName1 = GravitinoITUtils.genRandomName("policy_it_policy1");

Reply via email to