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