chibenwa commented on code in PR #2825:
URL: https://github.com/apache/james-project/pull/2825#discussion_r2397399811
##########
server/protocols/jmap-rfc-8621/src/main/java/org/apache/james/jmap/mailet/filter/ContentMatcher.java:
##########
@@ -95,7 +98,45 @@ public boolean match(Stream<String> contents, String
valueToMatch) {
return contents.map(ContentMatcher::asAddressHeader)
.anyMatch(addressHeaderToMatch::matchesIgnoreCase);
}
+ }
+
+ class ParsedFlag {
+ private final Optional<Keyword> keyword;
+
+ private ParsedFlag(String flag) {
+ this.keyword = parseFlag(flag);
+ }
+
+ private Optional<Keyword> parseFlag(String maybeFlag) {
+ if (maybeFlag == null) {
+ return Optional.empty();
+ }
+
+ String sanitizedFlag =
sanitizeFlag(maybeFlag).trim().toUpperCase();
+
+ Either<String, Keyword> result = Keyword.parse(sanitizedFlag);
+
+ if (result.isRight()) {
+ return Optional.of(result.right().get());
+ } else {
+ return Optional.empty();
+ }
+ }
+
+ private String sanitizeFlag(String maybeFlag) {
+ if (maybeFlag.startsWith("\\") || maybeFlag.startsWith("$")) {
+ return maybeFlag.substring(1);
+ }
+ return maybeFlag;
+ }
+ boolean matches(ParsedFlag otherFlag) {
+ return keyword.map(keyword1 ->
+ otherFlag.keyword
+ .map(keyword2 ->
keyword1.getFlagName().equals(keyword2.getFlagName()))
+ .orElse(false))
+ .orElse(false);
Review Comment:
```suggestion
return OptionalUtils.matches(keyword, otherFlag.keyword,
(k1, k2 -> k1.getFlagName().equals(k2.getFlagName()));
```
?
##########
server/protocols/jmap-rfc-8621/src/main/java/org/apache/james/jmap/mailet/filter/ContentMatcher.java:
##########
@@ -95,7 +98,45 @@ public boolean match(Stream<String> contents, String
valueToMatch) {
return contents.map(ContentMatcher::asAddressHeader)
.anyMatch(addressHeaderToMatch::matchesIgnoreCase);
}
+ }
+
+ class ParsedFlag {
+ private final Optional<Keyword> keyword;
+
+ private ParsedFlag(String flag) {
+ this.keyword = parseFlag(flag);
+ }
+
+ private Optional<Keyword> parseFlag(String maybeFlag) {
+ if (maybeFlag == null) {
+ return Optional.empty();
+ }
+
+ String sanitizedFlag =
sanitizeFlag(maybeFlag).trim().toUpperCase();
+
+ Either<String, Keyword> result = Keyword.parse(sanitizedFlag);
+
+ if (result.isRight()) {
+ return Optional.of(result.right().get());
+ } else {
+ return Optional.empty();
+ }
+ }
+
+ private String sanitizeFlag(String maybeFlag) {
+ if (maybeFlag.startsWith("\\") || maybeFlag.startsWith("$")) {
+ return maybeFlag.substring(1);
+ }
+ return maybeFlag;
+ }
+ boolean matches(ParsedFlag otherFlag) {
+ return keyword.map(keyword1 ->
+ otherFlag.keyword
+ .map(keyword2 ->
keyword1.getFlagName().equals(keyword2.getFlagName()))
+ .orElse(false))
+ .orElse(false);
Review Comment:
```suggestion
return OptionalUtils.matches(keyword, otherFlag.keyword,
(k1, k2) -> k1.getFlagName().equals(k2.getFlagName()));
```
?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]