You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2020/02/13 02:29:31 UTC
[james-project] 20/21: [REFACTORING]
s/StringValidator/StringMatcherCharacterValidator/
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit aaf61a9f0c328e74715844b14be183335f06bfd0
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jan 16 14:19:25 2020 +0700
[REFACTORING] s/StringValidator/StringMatcherCharacterValidator/
---
.../james/imap/decode/ImapRequestLineReader.java | 21 +++++++++++----------
.../parser/AbstractSelectionCommandParser.java | 6 +++---
.../imap/decode/parser/FetchCommandParser.java | 6 +++---
.../imap/decode/parser/StoreCommandParser.java | 4 ++--
...ava => StringMatcherCharacterValidatorTest.java} | 16 ++++++++--------
5 files changed, 27 insertions(+), 26 deletions(-)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
index 79f5a1b..ac0e7d9 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
@@ -31,7 +31,6 @@ import java.nio.charset.CodingErrorAction;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
-import java.util.function.BiPredicate;
import javax.mail.Flags;
@@ -818,31 +817,33 @@ public abstract class ImapRequestLineReader {
/**
* Verifies subsequent characters match a specified string
*/
- public static class StringValidator implements CharacterValidator {
- public static StringValidator caseIncentive(String expectedString) {
- return new StringValidator(expectedString,
- (c1, c2) -> isaBoolean(c1, c2));
+ public static class StringMatcherCharacterValidator implements CharacterValidator {
+ public static StringMatcherCharacterValidator ignoreCase(String expectedString) {
+ return new StringMatcherCharacterValidator(expectedString);
}
- public static boolean isaBoolean(Character c1, Character c2) {
+ static boolean asciiEqualsIgnoringCase(Character c1, Character c2) {
return Character.toUpperCase(c1) == Character.toUpperCase(c2);
}
private final String expectedString;
- private final BiPredicate<Character, Character> equalityTester;
private int position = 0;
- private StringValidator(String expectedString, BiPredicate<Character, Character> equalityTester) {
+ private StringMatcherCharacterValidator(String expectedString) {
this.expectedString = expectedString;
- this.equalityTester = equalityTester;
}
+ /**
+ * Verifies whether the next character is valid or not.
+ *
+ * This call will mutate StringValidator internal state, making it progress to following character validation.
+ */
@Override
public boolean isValid(char chr) {
if (position >= expectedString.length()) {
return false;
} else {
- return equalityTester.test(chr, expectedString.charAt(position++));
+ return asciiEqualsIgnoringCase(chr, expectedString.charAt(position++));
}
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java
index 758cb8b..3933c5e 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java
@@ -29,7 +29,7 @@ import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.ImapRequestLineReader.StringValidator;
+import org.apache.james.imap.decode.ImapRequestLineReader.StringMatcherCharacterValidator;
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest;
import org.apache.james.mailbox.MessageUid;
@@ -67,12 +67,12 @@ public abstract class AbstractSelectionCommandParser extends AbstractImapCommand
switch (n) {
case 'C':
// It starts with C so it should be CONDSTORE
- request.consumeWord(StringValidator.caseIncentive(CONDSTORE));
+ request.consumeWord(StringMatcherCharacterValidator.ignoreCase(CONDSTORE));
condstore = true;
break;
case 'Q':
// It starts with Q so it should be QRESYNC
- request.consumeWord(StringValidator.caseIncentive(QRESYNC));
+ request.consumeWord(StringMatcherCharacterValidator.ignoreCase(QRESYNC));
// Consume the SP
request.consumeChar(' ');
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/FetchCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/FetchCommandParser.java
index caf93cc..d9b2fc2 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/FetchCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/FetchCommandParser.java
@@ -43,7 +43,7 @@ import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.FetchPartPathDecoder;
import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.ImapRequestLineReader.StringValidator;
+import org.apache.james.imap.decode.ImapRequestLineReader.StringMatcherCharacterValidator;
import org.apache.james.imap.message.request.FetchRequest;
/**
@@ -90,12 +90,12 @@ public class FetchCommandParser extends AbstractUidCommandParser {
switch (next) {
case 'C':
// Now check for the CHANGEDSINCE option which is part of CONDSTORE
- request.consumeWord(StringValidator.caseIncentive(CHANGEDSINCE));
+ request.consumeWord(StringMatcherCharacterValidator.ignoreCase(CHANGEDSINCE));
fetch.changedSince(request.number(true));
break;
case 'V':
// Check for the VANISHED option which is part of QRESYNC
- request.consumeWord(StringValidator.caseIncentive(VANISHED));
+ request.consumeWord(StringMatcherCharacterValidator.ignoreCase(VANISHED));
fetch.vanished(true);
break;
default:
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/StoreCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/StoreCommandParser.java
index d161f14..4ae9d6b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/StoreCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/StoreCommandParser.java
@@ -31,7 +31,7 @@ import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.api.process.ImapSession;
import org.apache.james.imap.decode.DecodingException;
import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.ImapRequestLineReader.StringValidator;
+import org.apache.james.imap.decode.ImapRequestLineReader.StringMatcherCharacterValidator;
import org.apache.james.imap.message.request.StoreRequest;
import org.apache.james.mailbox.MessageManager;
@@ -55,7 +55,7 @@ public class StoreCommandParser extends AbstractUidCommandParser {
// Seems like we have a CONDSTORE parameter
request.consume();
- request.consumeWord(StringValidator.caseIncentive(UNCHANGEDSINCE));
+ request.consumeWord(StringMatcherCharacterValidator.ignoreCase(UNCHANGEDSINCE));
request.consumeChar(' ');
unchangedSince = request.number(true);
request.consumeChar(')');
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/decode/StringValidatorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/decode/StringMatcherCharacterValidatorTest.java
similarity index 73%
rename from protocols/imap/src/test/java/org/apache/james/imap/decode/StringValidatorTest.java
rename to protocols/imap/src/test/java/org/apache/james/imap/decode/StringMatcherCharacterValidatorTest.java
index e1220ca..83271a3 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/decode/StringValidatorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/decode/StringMatcherCharacterValidatorTest.java
@@ -19,36 +19,36 @@
package org.apache.james.imap.decode;
-import static org.apache.james.imap.decode.ImapRequestLineReader.StringValidator;
+import static org.apache.james.imap.decode.ImapRequestLineReader.StringMatcherCharacterValidator;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
-class StringValidatorTest {
+class StringMatcherCharacterValidatorTest {
@Test
void isValidShouldReturnFalseWhenDifferent() {
- StringValidator stringValidator = StringValidator.caseIncentive("expected");
+ StringMatcherCharacterValidator stringMatcherCharacterValidator = StringMatcherCharacterValidator.ignoreCase("expected");
assertThat(
"different".chars().mapToObj(i -> (char) i)
- .allMatch(stringValidator::isValid))
+ .allMatch(stringMatcherCharacterValidator::isValid))
.isFalse();
}
@Test
void isValidShouldReturnTrueWhenSame() {
- StringValidator stringValidator = StringValidator.caseIncentive("expected");
+ StringMatcherCharacterValidator stringMatcherCharacterValidator = StringMatcherCharacterValidator.ignoreCase("expected");
assertThat(
"expected".chars().mapToObj(i -> (char) i)
- .allMatch(stringValidator::isValid))
+ .allMatch(stringMatcherCharacterValidator::isValid))
.isTrue();
}
@Test
void isValidShouldShouldReturnTrueOnCaseDifference() {
- StringValidator stringValidator = StringValidator.caseIncentive("expected");
+ StringMatcherCharacterValidator stringMatcherCharacterValidator = StringMatcherCharacterValidator.ignoreCase("expected");
assertThat(
"eXpeCTed".chars().mapToObj(i -> (char) i)
- .allMatch(stringValidator::isValid))
+ .allMatch(stringMatcherCharacterValidator::isValid))
.isTrue();
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org