This is an automated email from the ASF dual-hosted git repository.
jshao 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 d6ff0e3268 [#7515] feat(core): Improve fromComment in StringIdentifier
(#7544)
d6ff0e3268 is described below
commit d6ff0e3268e15eb73092d33e573f9a9548749694
Author: BIN <[email protected]>
AuthorDate: Fri Jul 4 11:24:32 2025 +0800
[#7515] feat(core): Improve fromComment in StringIdentifier (#7544)
### What changes were proposed in this pull request?
Improve fromComment in StringIdentifier
### Why are the changes needed?
Fix: #7515
### Does this PR introduce _any_ user-facing change?
no
### How was this patch tested?
Unit tests
---------
Co-authored-by: senlizishi <[email protected]>
---
.../main/java/org/apache/gravitino/StringIdentifier.java | 15 ++++++++++++---
.../java/org/apache/gravitino/TestStringIdentifier.java | 12 ++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/core/src/main/java/org/apache/gravitino/StringIdentifier.java
b/core/src/main/java/org/apache/gravitino/StringIdentifier.java
index c60846f6de..d2ef219253 100644
--- a/core/src/main/java/org/apache/gravitino/StringIdentifier.java
+++ b/core/src/main/java/org/apache/gravitino/StringIdentifier.java
@@ -176,12 +176,21 @@ public class StringIdentifier {
return null;
}
- int index = comment.lastIndexOf('(');
- if (index == -1) {
+ int left = comment.lastIndexOf('(');
+ int right = comment.lastIndexOf(')');
+ if (left == -1 || right == -1) {
+ return null;
+ }
+ String innerComment = comment.substring(left + 1, right);
+ if (!innerComment.startsWith(STRING_COMMENT)) {
+ return null;
+ }
+
+ String idString = innerComment.substring(STRING_COMMENT.length());
+ if (idString.isEmpty()) {
return null;
}
- String idString = comment.substring(index + STRING_COMMENT.length() + 1,
comment.length() - 1);
return fromString(idString);
}
diff --git a/core/src/test/java/org/apache/gravitino/TestStringIdentifier.java
b/core/src/test/java/org/apache/gravitino/TestStringIdentifier.java
index 3a570993ac..967dac542b 100644
--- a/core/src/test/java/org/apache/gravitino/TestStringIdentifier.java
+++ b/core/src/test/java/org/apache/gravitino/TestStringIdentifier.java
@@ -163,6 +163,18 @@ public class TestStringIdentifier {
String comment1 = "This is a comment";
StringIdentifier stringIdFromComment2 =
StringIdentifier.fromComment(comment1);
Assertions.assertNull(stringIdFromComment2);
+
+ // Test comment contains parentheses but not the Gravitino prefix
+ String comment2 = "This is a comment (other info)";
+ Assertions.assertNull(StringIdentifier.fromComment(comment2));
+
+ // Test comment contains parentheses and Gravitino prefix but not the id
+ String comment3 = "This is a comment (From Gravitino, DO NOT EDIT: )";
+ Assertions.assertNull(StringIdentifier.fromComment(comment3));
+
+ // Test comment where there is no space between Gravitino prefix and id
+ String comment4 = "This is a comment (From Gravitino, DO NOT
EDIT:gravitino.v1.uid123123)";
+ Assertions.assertNull(StringIdentifier.fromComment(comment4));
}
@Test