You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/10/26 05:20:21 UTC
[james-project] 08/08: JAMES-3412 Keywords are case insentive,
lower cased
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 7d948857608db296efb457e1b8631297101bc7fd
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Oct 23 09:57:08 2020 +0700
JAMES-3412 Keywords are case insentive, lower cased
---
.../jmap/rfc8621/contract/EmailGetMethodContract.scala | 16 ++++++++--------
.../jmap/rfc8621/contract/EmailSetMethodContract.scala | 18 +++++++++---------
.../scala/org/apache/james/jmap/model/Keyword.scala | 18 ++++++++++--------
3 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailGetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailGetMethodContract.scala
index 0821e63..a6ca953 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailGetMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailGetMethodContract.scala
@@ -5475,7 +5475,7 @@ trait EmailGetMethodContract {
| {
| "id":"%s",
| "keywords": {
- | "$Answered": true
+ | "$answered": true
| }
| }
""".stripMargin, messageId.serialize)
@@ -5530,10 +5530,10 @@ trait EmailGetMethodContract {
| {
| "id":"%s",
| "keywords": {
- | "$Answered": true,
- | "$Seen": true,
- | "$Draft": true,
- | "$Flagged": true
+ | "$answered": true,
+ | "$seen": true,
+ | "$draft": true,
+ | "$flagged": true
| }
| }
""".stripMargin, messageId.serialize)
@@ -5588,10 +5588,10 @@ trait EmailGetMethodContract {
| {
| "id":"%s",
| "keywords": {
- | "$Answered": true,
+ | "$answered": true,
| "custom_flag": true,
- | "$Draft": true,
- | "$Flagged": true
+ | "$draft": true,
+ | "$flagged": true
| }
| }
""".stripMargin, messageId.serialize)
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala
index 4029127..2898b92 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala
+++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSetMethodContract.scala
@@ -662,7 +662,7 @@ trait EmailSetMethodContract {
"""{
| "id":"%s",
| "keywords": {
- | "$Answered": true,
+ | "$answered": true,
| "music": true
| }
|}
@@ -746,28 +746,28 @@ trait EmailSetMethodContract {
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true,
+ | "$answered": true,
| "music": true
| }
|},
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true,
+ | "$answered": true,
| "music": true
| }
|},
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true,
+ | "$answered": true,
| "music": true
| }
|},
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true,
+ | "$answered": true,
| "music": true
| }
|}
@@ -853,25 +853,25 @@ trait EmailSetMethodContract {
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true
+ | "$answered": true
| }
|},
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true
+ | "$answered": true
| }
|},
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true
+ | "$answered": true
| }
|},
|{
| "id":"%s",
| "keywords": {
- | "$Answered": true
+ | "$answered": true
| }
|}
|]
diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Keyword.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Keyword.scala
index 704caeb..f63a424 100644
--- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Keyword.scala
+++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Keyword.scala
@@ -18,6 +18,8 @@
* **************************************************************/
package org.apache.james.jmap.model
+import java.util.Locale
+
import com.ibm.icu.text.UnicodeSet
import javax.mail.Flags
import org.apache.commons.lang3.StringUtils
@@ -32,13 +34,13 @@ object Keyword {
" or {'(' ')' '{' ']' '%' '*' '\"' '\\'} "
private val FLAG_NAME_PATTERN = new UnicodeSet("[[a-z][A-Z][0-9]$_-]").freeze
- val DRAFT = Keyword.of("$Draft").get
- val SEEN = Keyword.of("$Seen").get
- val FLAGGED = Keyword.of("$Flagged").get
- val ANSWERED = Keyword.of("$Answered").get
- val DELETED = Keyword.of("$Deleted").get
- val RECENT = Keyword.of("$Recent").get
- val FORWARDED = Keyword.of("$Forwarded").get
+ val DRAFT = Keyword.of("$draft").get
+ val SEEN = Keyword.of("$seen").get
+ val FLAGGED = Keyword.of("$flagged").get
+ val ANSWERED = Keyword.of("$answered").get
+ val DELETED = Keyword.of("$deleted").get
+ val RECENT = Keyword.of("$recent").get
+ val FORWARDED = Keyword.of("$forwarded").get
val FLAG_VALUE: Boolean = true
private val NON_EXPOSED_IMAP_KEYWORDS = List(Keyword.RECENT, Keyword.DELETED)
private val IMAP_SYSTEM_FLAGS: Map[Flags.Flag, Keyword] =
@@ -50,7 +52,7 @@ object Keyword {
Flags.Flag.RECENT -> RECENT,
Flags.Flag.DELETED -> DELETED)
- def parse(flagName: String): Either[String, Keyword] = Either.cond(isValid(flagName), Keyword(flagName), VALIDATION_MESSAGE)
+ def parse(flagName: String): Either[String, Keyword] = Either.cond(isValid(flagName), Keyword(flagName.toLowerCase(Locale.US)), VALIDATION_MESSAGE)
def of(flagName: String): Try[Keyword] = parse(flagName) match {
case Left(errorMessage: String) => Failure(new IllegalArgumentException(errorMessage))
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org