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");