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 6cef2d3ba3 JAMES-3945 advertize that subaddressing is supported (#2521)
6cef2d3ba3 is described below
commit 6cef2d3ba3cc347b39e8e51d33a55a7b0e3accf7
Author: florentos17 <[email protected]>
AuthorDate: Tue Dec 3 17:19:38 2024 +0100
JAMES-3945 advertize that subaddressing is supported (#2521)
Advertize in the `Mailbox share` capability that subaddressing is now
supported
---
.../apache/james/jmap/rfc8621/contract/CustomMethodContract.scala | 4 ++--
.../james/jmap/rfc8621/contract/DisabledCapabilityContract.scala | 4 ++--
.../contract/EmailSubmissionSetMethodFutureReleaseContract.scala | 4 ++--
.../james/jmap/rfc8621/contract/SessionRoutesContract.scala | 8 ++++----
server/protocols/jmap-rfc-8621/doc/specs/spec/mail/rights.mdown | 8 ++++++++
.../src/main/scala/org/apache/james/jmap/core/Capability.scala | 2 +-
.../org/apache/james/jmap/json/SessionSerializationTest.scala | 2 +-
.../scala/org/apache/james/jmap/routes/SessionRoutesTest.scala | 4 ++--
8 files changed, 22 insertions(+), 14 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/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 09c33336f5..9b71b545fa 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
@@ -107,7 +107,7 @@ object CustomMethodContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| },
@@ -147,7 +147,7 @@ object CustomMethodContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "$CUSTOM": {"custom": "property"},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
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/DisabledCapabilityContract.scala
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/DisabledCapabilityContract.scala
index 355552b82e..69e7b1da81 100644
---
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/DisabledCapabilityContract.scala
+++
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/DisabledCapabilityContract.scala
@@ -62,7 +62,7 @@ object DisabledCapabilityContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| },
@@ -94,7 +94,7 @@ object DisabledCapabilityContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| }
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/EmailSubmissionSetMethodFutureReleaseContract.scala
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetMethodFutureReleaseContract.scala
index 864d223609..3ee3a30d57 100644
---
a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetMethodFutureReleaseContract.scala
+++
b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetMethodFutureReleaseContract.scala
@@ -82,7 +82,7 @@ case object EmailSubmissionSetMethodFutureReleaseContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| },
@@ -122,7 +122,7 @@ case object EmailSubmissionSetMethodFutureReleaseContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| }
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 30f2b3f398..7ae75bdf50 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
@@ -72,7 +72,7 @@ object SessionRoutesContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| },
@@ -112,7 +112,7 @@ object SessionRoutesContract {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{},
| "urn:ietf:params:jmap:mdn":{}
| }
@@ -260,7 +260,7 @@ trait SessionRoutesContract {
| "i;unicode-casemap"
| ]
| },
- | "urn:apache:james:params:jmap:mail:shares": {},
+ | "urn:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse": {},
| "urn:ietf:params:jmap:mail": {
| "maxMailboxesPerEmail": 10000000,
@@ -309,7 +309,7 @@ trait SessionRoutesContract {
| "i;unicode-casemap"
| ]
| },
- | "urn:apache:james:params:jmap:mail:shares": {},
+ | "urn:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse": {},
| "urn:ietf:params:jmap:mail": {
| "maxMailboxesPerEmail": 10000000,
diff --git a/server/protocols/jmap-rfc-8621/doc/specs/spec/mail/rights.mdown
b/server/protocols/jmap-rfc-8621/doc/specs/spec/mail/rights.mdown
index 335cd54519..553c8ec03f 100644
--- a/server/protocols/jmap-rfc-8621/doc/specs/spec/mail/rights.mdown
+++ b/server/protocols/jmap-rfc-8621/doc/specs/spec/mail/rights.mdown
@@ -21,6 +21,14 @@ If specified, behavioral changes and additional fields
defined hereafter MUST ap
If unspecified no additional fields to the Mailbox object are returned, and
the behaviour needs to be exactly the one of `urn:ietf:params:jmap:mail`.
+## Addition to the capability object
+
+Servers supporting *subaddressing* need to advertise it through the session
capabilities by adding the following field to the
`urn:apache:james:params:jmap:mail:shares` capability object:
+
+- `subaddressingSupported`: *true*
+
+If this field is not present, then it should be assumed that subaddressing is
NOT supported.
+
## Addition to existing data types
The following data types are defined:
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 57bbe59085..2fbd64630a 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
@@ -317,7 +317,7 @@ case object DelegationCapabilityFactory extends
CapabilityFactory {
}
final case class SharesCapabilityProperties() extends CapabilityProperties {
- override def jsonify(): JsObject = Json.obj()
+ override def jsonify(): JsObject = Json.obj("subaddressingSupported" -> true)
}
case object SharesCapabilityFactory extends CapabilityFactory {
diff --git
a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/json/SessionSerializationTest.scala
b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/json/SessionSerializationTest.scala
index 4617998328..d751c76c89 100644
---
a/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/json/SessionSerializationTest.scala
+++
b/server/protocols/jmap-rfc-8621/src/test/scala/org/apache/james/jmap/json/SessionSerializationTest.scala
@@ -145,7 +145,7 @@ class SessionSerializationTest extends AnyWordSpec with
Matchers {
| "mayCreateTopLevelMailbox": true
| },
| "urn:apache:james:params:jmap:mail:quota":{},
- | "urn:apache:james:params:jmap:mail:shares":{},
+ |
"urn:apache:james:params:jmap:mail:shares":{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{}
| },
| "accounts": {
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 573252704c..218dee8155 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
@@ -162,7 +162,7 @@ class SessionRoutesTest extends AnyFlatSpec with
BeforeAndAfter with Matchers {
| "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": {},
+ | "urn:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{}
| },
| "accounts" : {
@@ -201,7 +201,7 @@ class SessionRoutesTest extends AnyFlatSpec with
BeforeAndAfter with Matchers {
| "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:apache:james:params:jmap:mail:shares":
{"subaddressingSupported":true},
| "urn:ietf:params:jmap:vacationresponse":{}
| }
| }
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]