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


The following commit(s) were added to refs/heads/master by this push:
     new 3233fbb182 JAMES-3756 Expose the JMAP Delegation capability (#1371)
3233fbb182 is described below

commit 3233fbb18257c22473f819b27bff6e0f48ff2f23
Author: Trần Hồng Quân <55171818+quantranhong1...@users.noreply.github.com>
AuthorDate: Thu Jan 5 15:38:24 2023 +0700

    JAMES-3756 Expose the JMAP Delegation capability (#1371)
---
 .../java/org/apache/james/jmap/draft/JMAPModule.java     |  2 ++
 .../jmap/rfc8621/contract/CustomMethodContract.scala     |  3 +++
 .../jmap/rfc8621/contract/SessionRoutesContract.scala    |  3 +++
 .../scala/org/apache/james/jmap/core/Capabilities.scala  |  1 +
 .../scala/org/apache/james/jmap/core/Capability.scala    | 16 +++++++++++++++-
 .../org/apache/james/jmap/routes/SessionRoutesTest.scala |  3 +++
 6 files changed, 27 insertions(+), 1 deletion(-)

diff --git 
a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
 
b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
index 9f6dce1161..0844923902 100644
--- 
a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
+++ 
b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/draft/JMAPModule.java
@@ -39,6 +39,7 @@ import org.apache.james.jmap.Version;
 import org.apache.james.jmap.change.MailboxChangeListener;
 import org.apache.james.jmap.core.CapabilityFactory;
 import org.apache.james.jmap.core.CoreCapabilityFactory;
+import org.apache.james.jmap.core.DelegationCapabilityFactory$;
 import org.apache.james.jmap.core.IdentitySortOrderCapabilityFactory$;
 import org.apache.james.jmap.core.JmapQuotaCapabilityFactory$;
 import org.apache.james.jmap.core.JmapRfc8621Configuration;
@@ -147,6 +148,7 @@ public class JMAPModule extends AbstractModule {
         
supportedCapabilities.addBinding().toInstance(QuotaCapabilityFactory$.MODULE$);
         
supportedCapabilities.addBinding().toInstance(JmapQuotaCapabilityFactory$.MODULE$);
         
supportedCapabilities.addBinding().toInstance(IdentitySortOrderCapabilityFactory$.MODULE$);
+        
supportedCapabilities.addBinding().toInstance(DelegationCapabilityFactory$.MODULE$);
         
supportedCapabilities.addBinding().toInstance(SharesCapabilityFactory$.MODULE$);
         
supportedCapabilities.addBinding().toInstance(VacationResponseCapabilityFactory$.MODULE$);
         
supportedCapabilities.addBinding().toInstance(SubmissionCapabilityFactory$.MODULE$);
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/CustomMethodContract.scala
 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala
index 13633edd43..d1a0f76d0f 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/CustomMethodContract.scala
@@ -108,6 +108,7 @@ object CustomMethodContract {
       |    "urn:apache:james:params:jmap:mail:quota": {},
       |    "urn:ietf:params:jmap:quota": {},
       |    "urn:apache:james:params:jmap:mail:identity:sortorder": {},
+      |    "urn:apache:james:params:jmap:delegation": {},
       |    "$CUSTOM": {"custom": "property"},
       |    "urn:apache:james:params:jmap:mail:shares": {},
       |    "urn:ietf:params:jmap:vacationresponse":{},
@@ -148,6 +149,7 @@ object CustomMethodContract {
       |        "urn:apache:james:params:jmap:mail:quota": {},
       |        "urn:ietf:params:jmap:quota": {},
       |        "urn:apache:james:params:jmap:mail:identity:sortorder": {},
+      |        "urn:apache:james:params:jmap:delegation": {},
       |        "urn:apache:james:params:jmap:mail:shares": {},
       |        "$CUSTOM": {"custom": "property"},
       |        "urn:ietf:params:jmap:vacationresponse":{},
@@ -163,6 +165,7 @@ object CustomMethodContract {
       |    "urn:apache:james:params:jmap:mail:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "urn:ietf:params:jmap:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "urn:apache:james:params:jmap:mail:identity:sortorder": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+      |    "urn:apache:james:params:jmap:delegation": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "urn:apache:james:params:jmap:mail:shares": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "$CUSTOM": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "urn:ietf:params:jmap:vacationresponse": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
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/SessionRoutesContract.scala
 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/SessionRoutesContract.scala
index ecdcb3ad35..2a07c89573 100644
--- 
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/SessionRoutesContract.scala
+++ 
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/SessionRoutesContract.scala
@@ -71,6 +71,7 @@ object SessionRoutesContract {
                          |    "urn:apache:james:params:jmap:mail:quota": {},
                          |    "urn:ietf:params:jmap:quota": {},
                          |    
"urn:apache:james:params:jmap:mail:identity:sortorder": {},
+                         |    "urn:apache:james:params:jmap:delegation": {},
                          |    "urn:apache:james:params:jmap:mail:shares": {},
                          |    "urn:ietf:params:jmap:vacationresponse":{},
                          |    "urn:ietf:params:jmap:mdn":{}
@@ -110,6 +111,7 @@ object SessionRoutesContract {
                          |        "urn:apache:james:params:jmap:mail:quota": 
{},
                          |        "urn:ietf:params:jmap:quota": {},
                          |        
"urn:apache:james:params:jmap:mail:identity:sortorder": {},
+                         |        "urn:apache:james:params:jmap:delegation": 
{},
                          |        "urn:apache:james:params:jmap:mail:shares": 
{},
                          |        "urn:ietf:params:jmap:vacationresponse":{},
                          |        "urn:ietf:params:jmap:mdn":{}
@@ -124,6 +126,7 @@ object SessionRoutesContract {
                          |    "urn:apache:james:params:jmap:mail:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:ietf:params:jmap:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    
"urn:apache:james:params:jmap:mail:identity:sortorder": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+                         |    "urn:apache:james:params:jmap:delegation": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:apache:james:params:jmap:mail:shares": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:ietf:params:jmap:vacationresponse": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:ietf:params:jmap:mdn": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capabilities.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capabilities.scala
index 57f1747aa9..310bc1bfd1 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capabilities.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capabilities.scala
@@ -29,6 +29,7 @@ object DefaultCapabilities {
     QuotaCapabilityFactory,
     JmapQuotaCapabilityFactory,
     IdentitySortOrderCapabilityFactory,
+    DelegationCapabilityFactory,
     SharesCapabilityFactory,
     VacationResponseCapabilityFactory,
     SharesCapabilityFactory,
diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
index c3d587d4f4..86098e2aef 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/Capability.scala
@@ -26,7 +26,7 @@ import eu.timepit.refined.api.Refined
 import eu.timepit.refined.auto._
 import eu.timepit.refined.collection.NonEmpty
 import eu.timepit.refined.string.Uri
-import org.apache.james.jmap.core.CapabilityIdentifier.{CapabilityIdentifier, 
EMAIL_SUBMISSION, JAMES_IDENTITY_SORTORDER, JAMES_QUOTA, JAMES_SHARES, 
JMAP_CORE, JMAP_MAIL, JMAP_MDN, JMAP_QUOTA, JMAP_VACATION_RESPONSE, 
JMAP_WEBSOCKET}
+import org.apache.james.jmap.core.CapabilityIdentifier.{CapabilityIdentifier, 
EMAIL_SUBMISSION, JAMES_DELEGATION, JAMES_IDENTITY_SORTORDER, JAMES_QUOTA, 
JAMES_SHARES, JMAP_CORE, JMAP_MAIL, JMAP_MDN, JMAP_QUOTA, 
JMAP_VACATION_RESPONSE, JMAP_WEBSOCKET}
 import org.apache.james.jmap.core.CoreCapabilityProperties.CollationAlgorithm
 import org.apache.james.jmap.core.MailCapability.EmailQuerySortOption
 import org.apache.james.jmap.core.UnsignedInt.{UnsignedInt, 
UnsignedIntConstraint}
@@ -51,6 +51,7 @@ object CapabilityIdentifier {
   val JMAP_QUOTA: CapabilityIdentifier = "urn:ietf:params:jmap:quota"
   val JAMES_SHARES: CapabilityIdentifier = 
"urn:apache:james:params:jmap:mail:shares"
   val JAMES_IDENTITY_SORTORDER: CapabilityIdentifier = 
"urn:apache:james:params:jmap:mail:identity:sortorder"
+  val JAMES_DELEGATION: CapabilityIdentifier = 
"urn:apache:james:params:jmap:delegation"
   val JMAP_MDN: CapabilityIdentifier = "urn:ietf:params:jmap:mdn"
 }
 
@@ -240,6 +241,19 @@ case object IdentitySortOrderCapabilityFactory extends 
CapabilityFactory {
   override def create(urlPrefixes: UrlPrefixes): Capability = 
IdentitySortOrderCapability()
 }
 
+final case class DelegationCapabilityProperties() extends CapabilityProperties 
{
+  override def jsonify(): JsObject = Json.obj()
+}
+
+final case class DelegationCapability(properties: 
DelegationCapabilityProperties = DelegationCapabilityProperties(),
+                                      identifier: CapabilityIdentifier = 
JAMES_DELEGATION) extends Capability
+
+case object DelegationCapabilityFactory extends CapabilityFactory {
+  override def id(): CapabilityIdentifier = JAMES_DELEGATION
+
+  override def create(urlPrefixes: UrlPrefixes): Capability = 
DelegationCapability()
+}
+
 final case class SharesCapabilityProperties() extends CapabilityProperties {
   override def jsonify(): JsObject = Json.obj()
 }
diff --git 
a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/SessionRoutesTest.scala
 
b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/SessionRoutesTest.scala
index a32e7e4b36..bae8146582 100644
--- 
a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/SessionRoutesTest.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/routes/SessionRoutesTest.scala
@@ -150,6 +150,7 @@ class SessionRoutesTest extends AnyFlatSpec with 
BeforeAndAfter with Matchers {
                          |      "url": "ws://localhost/jmap/ws"
                          |    },
                          |    
"urn:apache:james:params:jmap:mail:identity:sortorder": {},
+                         |    "urn:apache:james:params:jmap:delegation": {},
                          |    "urn:apache:james:params:jmap:mail:quota": {},
                          |    "urn:ietf:params:jmap:quota": {},
                          |    "urn:apache:james:params:jmap:mail:shares": {},
@@ -190,6 +191,7 @@ class SessionRoutesTest extends AnyFlatSpec with 
BeforeAndAfter with Matchers {
                          |        "urn:apache:james:params:jmap:mail:quota": 
{},
                          |        "urn:ietf:params:jmap:quota": {},
                          |        
"urn:apache:james:params:jmap:mail:identity:sortorder": {},
+                         |        "urn:apache:james:params:jmap:delegation": 
{},
                          |        "urn:apache:james:params:jmap:mail:shares": 
{},
                          |        "urn:ietf:params:jmap:vacationresponse":{}
                          |      }
@@ -203,6 +205,7 @@ class SessionRoutesTest extends AnyFlatSpec with 
BeforeAndAfter with Matchers {
                          |    "urn:apache:james:params:jmap:mail:quota": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
                          |    "urn:ietf:params:jmap:quota": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
                          |    
"urn:apache:james:params:jmap:mail:identity:sortorder": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
+                         |    "urn:apache:james:params:jmap:delegation": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
                          |    "urn:apache:james:params:jmap:mail:shares": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
                          |    "urn:ietf:params:jmap:vacationresponse": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401"
                          |  },


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org
For additional commands, e-mail: notifications-h...@james.apache.org

Reply via email to