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 a86c155a4d [#7985] fix(authz): Include recursive flag in hashCode(),
equals(), toString() (#7992)
a86c155a4d is described below
commit a86c155a4daf679c218b7ab7c4c88e82f020b0de
Author: 이승주 <[email protected]>
AuthorDate: Mon Aug 11 11:00:35 2025 +0900
[#7985] fix(authz): Include recursive flag in hashCode(), equals(),
toString() (#7992)
### What changes were proposed in this pull request?
Updated the PathBasedMetadataObject class to:
- Compare the `recursive` flag in `equals()` and `hashCode()` methods.
- Include the `recursive` flag in the `toString()` output.
### Why are the changes needed?
Previously, the `recursive` flag was not considered in equality checks
or hash code generation,
which could lead to incorrect comparisons and inconsistent behavior in
hash-based collections.
Additionally, the `toString()` output did not reflect the `recursive`
state, making debugging harder.
Fix: #7985
### Does this PR introduce _any_ user-facing change?
No user-facing API changes.
However, objects with different `recursive` flag values will now be
treated as unequal.
### How was this patch tested?
- Added `testRecursiveFlagAffectsEquality()` to the
`TestPathBasedMetadataObject` class.
- Added a case to `testToString()`.
---
.../common/PathBasedMetadataObject.java | 7 ++++--
.../common/TestPathBasedMetadataObject.java | 28 ++++++++++++++++++----
2 files changed, 29 insertions(+), 6 deletions(-)
diff --git
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/PathBasedMetadataObject.java
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/PathBasedMetadataObject.java
index bb8362fecf..1b5151dddc 100644
---
a/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/PathBasedMetadataObject.java
+++
b/authorizations/authorization-common/src/main/java/org/apache/gravitino/authorization/common/PathBasedMetadataObject.java
@@ -174,12 +174,13 @@ public class PathBasedMetadataObject implements
AuthorizationMetadataObject {
return Objects.equals(name, that.name)
&& Objects.equals(parent, that.parent)
&& Objects.equals(path, that.path)
- && Objects.equals(type, that.type);
+ && Objects.equals(type, that.type)
+ && Objects.equals(recursive, that.recursive);
}
@Override
public int hashCode() {
- return Objects.hash(name, parent, path, type);
+ return Objects.hash(name, parent, path, type, recursive);
}
@Override
@@ -191,6 +192,8 @@ public class PathBasedMetadataObject implements
AuthorizationMetadataObject {
+ strPath
+ "], [type="
+ type
+ + "], [recursive="
+ + recursive
+ "]";
}
}
diff --git
a/authorizations/authorization-common/src/test/java/org/apache/gravitino/authorization/common/TestPathBasedMetadataObject.java
b/authorizations/authorization-common/src/test/java/org/apache/gravitino/authorization/common/TestPathBasedMetadataObject.java
index 0fd40a541e..60b07159b7 100644
---
a/authorizations/authorization-common/src/test/java/org/apache/gravitino/authorization/common/TestPathBasedMetadataObject.java
+++
b/authorizations/authorization-common/src/test/java/org/apache/gravitino/authorization/common/TestPathBasedMetadataObject.java
@@ -54,25 +54,45 @@ public class TestPathBasedMetadataObject {
PathBasedMetadataObject pathBasedMetadataObject1 =
new PathBasedMetadataObject("parent", "name", "path",
PathBasedMetadataObject.FILESET_PATH);
Assertions.assertEquals(
- "MetadataObject: [fullName=parent.name], [path=path], [type=PATH]",
+ "MetadataObject: [fullName=parent.name], [path=path], [type=PATH],
[recursive=true]",
pathBasedMetadataObject1.toString());
PathBasedMetadataObject pathBasedMetadataObject2 =
new PathBasedMetadataObject("parent", "name", null,
PathBasedMetadataObject.FILESET_PATH);
Assertions.assertEquals(
- "MetadataObject: [fullName=parent.name], [path=null], [type=PATH]",
+ "MetadataObject: [fullName=parent.name], [path=null], [type=PATH],
[recursive=true]",
pathBasedMetadataObject2.toString());
PathBasedMetadataObject pathBasedMetadataObject3 =
new PathBasedMetadataObject(null, "name", null,
PathBasedMetadataObject.FILESET_PATH);
Assertions.assertEquals(
- "MetadataObject: [fullName=name], [path=null], [type=PATH]",
+ "MetadataObject: [fullName=name], [path=null], [type=PATH],
[recursive=true]",
pathBasedMetadataObject3.toString());
PathBasedMetadataObject pathBasedMetadataObject4 =
new PathBasedMetadataObject(null, "name", "path",
PathBasedMetadataObject.FILESET_PATH);
Assertions.assertEquals(
- "MetadataObject: [fullName=name], [path=path], [type=PATH]",
+ "MetadataObject: [fullName=name], [path=path], [type=PATH],
[recursive=true]",
pathBasedMetadataObject4.toString());
+
+ PathBasedMetadataObject pathBasedMetadataObject5 =
+ new PathBasedMetadataObject(
+ null, "name", "path", PathBasedMetadataObject.FILESET_PATH, false);
+ Assertions.assertEquals(
+ "MetadataObject: [fullName=name], [path=path], [type=PATH],
[recursive=false]",
+ pathBasedMetadataObject5.toString());
+ }
+
+ @Test
+ void testRecursiveFlagAffectsEquality() {
+ PathBasedMetadataObject recursiveObject =
+ new PathBasedMetadataObject(
+ "parent", "name", "path", PathBasedMetadataObject.FILESET_PATH,
true);
+ PathBasedMetadataObject nonRecursiveObject =
+ new PathBasedMetadataObject(
+ "parent", "name", "path", PathBasedMetadataObject.FILESET_PATH,
false);
+
+ Assertions.assertNotEquals(recursiveObject, nonRecursiveObject);
+ Assertions.assertNotEquals(recursiveObject.hashCode(),
nonRecursiveObject.hashCode());
}
}