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 06930bdcfbbe2e04b0579d855edca5aa54a51eb4
Author: duc91 <[email protected]>
AuthorDate: Tue Aug 11 10:18:13 2020 +0700

    JAMES-3349: Propose a refactor for simplify Invocation.error
---
 .../org/apache/james/jmap/method/MailboxGetMethod.scala     |  2 +-
 .../main/scala/org/apache/james/jmap/model/Invocation.scala | 13 ++-----------
 .../scala/org/apache/james/jmap/routes/JMAPApiRoutes.scala  |  2 +-
 3 files changed, 4 insertions(+), 13 deletions(-)

diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
index 91b0b46..ed582f4 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MailboxGetMethod.scala
@@ -61,7 +61,7 @@ class MailboxGetMethod @Inject() (serializer: Serializer,
           mailboxGetRequest.properties match {
             case Some(properties) if 
!properties.asSetOfString.subsetOf(Mailbox.allProperties) =>
               SMono.just(Invocation.error(errorCode = 
ErrorCode.InvalidArguments,
-                description = Some(s"The following properties 
[${properties.asSetOfString.diff(Mailbox.allProperties).mkString(", ")}] do not 
exist."),
+                description = s"The following properties 
[${properties.asSetOfString.diff(Mailbox.allProperties).mkString(", ")}] do not 
exist.",
                 methodCallId = invocation.methodCallId))
             case _ => getMailboxes(capabilities, mailboxGetRequest, 
mailboxSession)
               .reduce(MailboxGetResults(Set.empty, NotFound(Set.empty)), 
(result1: MailboxGetResults, result2: MailboxGetResults) => 
result1.merge(result2))
diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Invocation.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Invocation.scala
index 7e99723..7d80d0b 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Invocation.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/model/Invocation.scala
@@ -35,9 +35,9 @@ object Invocation {
   case class MethodCallId(value: NonEmptyString)
 
 
-  def error(errorCode: ErrorCode, description: Option[String], methodCallId: 
MethodCallId): Invocation = {
+  def error(errorCode: ErrorCode, description: NonEmptyString, methodCallId: 
MethodCallId): Invocation = {
     Invocation(MethodName("error"),
-      Arguments(JsObject(Map("type" -> JsString(errorCode.code), "description" 
-> JsString(description.getOrElse(errorCode.defaultDescription))))),
+      Arguments(JsObject(Map("type" -> JsString(errorCode.code), "description" 
-> JsString(description)))),
       methodCallId)
   }
   def error(errorCode: ErrorCode, methodCallId: MethodCallId): Invocation = {
@@ -49,31 +49,22 @@ object Invocation {
 
 sealed trait ErrorCode {
   def code: String
-  def defaultDescription: String
 }
 
 object ErrorCode {
   case object InvalidArguments extends ErrorCode {
     override def code: String = "error"
-
-    override def defaultDescription: String = "One of the arguments is of the 
wrong type or otherwise invalid, or a required argument is missing."
   }
 
   case object ServerFail extends ErrorCode {
     override def code: String = "serverFail"
-
-    override def defaultDescription: String = null
   }
 
   case object UnknownMethod extends ErrorCode {
     override def code: String = "unknownMethod"
-
-    override def defaultDescription: String = null
   }
 
   case object AccountNotFound extends ErrorCode {
     override def code: String = "accountNotFound"
-
-    override def defaultDescription: String = null
   }
 }
diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JMAPApiRoutes.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JMAPApiRoutes.scala
index 9623f74..d81adf6 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JMAPApiRoutes.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/routes/JMAPApiRoutes.scala
@@ -138,7 +138,7 @@ class JMAPApiRoutes (val authenticator: Authenticator,
   private def processMethodWithMatchName(capabilities: 
Set[CapabilityIdentifier], invocation: Invocation, mailboxSession: 
MailboxSession): SMono[Invocation] =
     SMono.justOrEmpty(methodsByName.get(invocation.methodName))
       .flatMap(method => SMono.fromPublisher(method.process(capabilities, 
invocation, mailboxSession)))
-      .onErrorResume(throwable => 
SMono.just(Invocation.error(ErrorCode.ServerFail, Option(throwable.getMessage), 
invocation.methodCallId)))
+      .onErrorResume(throwable => 
SMono.just(Invocation.error(ErrorCode.ServerFail, throwable.getMessage, 
invocation.methodCallId)))
       .switchIfEmpty(SMono.just(Invocation.error(ErrorCode.UnknownMethod, 
invocation.methodCallId)))
 
   private def handleError(throwable: Throwable, httpServerResponse: 
HttpServerResponse): SMono[Void] = throwable match {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to