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 3646740c6e JAMES-3830 Advertise the quota extension in the session 
route (#1226)
3646740c6e is described below

commit 3646740c6e752b625c1ffb2dd14f495114043148
Author: Trần Hồng Quân <55171818+quantranhong1...@users.noreply.github.com>
AuthorDate: Mon Oct 10 15:35:38 2022 +0700

    JAMES-3830 Advertise the quota extension in the session route (#1226)
---
 .../java/org/apache/james/jmap/draft/JMAPModule.java   |  2 ++
 .../jmap/rfc8621/contract/CustomMethodContract.scala   |  3 +++
 .../jmap/rfc8621/contract/SessionRoutesContract.scala  |  5 ++++-
 .../org/apache/james/jmap/core/Capabilities.scala      |  1 +
 .../scala/org/apache/james/jmap/core/Capability.scala  | 18 ++++++++++++++++--
 .../apache/james/jmap/routes/SessionRoutesTest.scala   |  3 +++
 6 files changed, 29 insertions(+), 3 deletions(-)

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 2acbbb8876..7cdb17f9db 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.JmapQuotaCapabilityFactory$;
 import org.apache.james.jmap.core.JmapRfc8621Configuration;
 import org.apache.james.jmap.core.MDNCapabilityFactory$;
 import org.apache.james.jmap.core.MailCapabilityFactory$;
@@ -144,6 +145,7 @@ public class JMAPModule extends AbstractModule {
         Multibinder<CapabilityFactory> supportedCapabilities = 
Multibinder.newSetBinder(binder(), CapabilityFactory.class);
         
supportedCapabilities.addBinding().toInstance(MailCapabilityFactory$.MODULE$);
         
supportedCapabilities.addBinding().toInstance(QuotaCapabilityFactory$.MODULE$);
+        
supportedCapabilities.addBinding().toInstance(JmapQuotaCapabilityFactory$.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 d2e5487871..5fd115fc41 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
@@ -106,6 +106,7 @@ object CustomMethodContract {
       |      "url": "ws://domain.com/jmap/ws"
       |    },
       |    "urn:apache:james:params:jmap:mail:quota": {},
+      |    "urn:ietf:params:jmap:quota": {},
       |    "$CUSTOM": {"custom": "property"},
       |    "urn:apache:james:params:jmap:mail:shares": {},
       |    "urn:ietf:params:jmap:vacationresponse":{},
@@ -144,6 +145,7 @@ object CustomMethodContract {
       |          "mayCreateTopLevelMailbox" : true
       |        },
       |        "urn:apache:james:params:jmap:mail:quota": {},
+      |        "urn:ietf:params:jmap:quota": {},
       |        "urn:apache:james:params:jmap:mail:shares": {},
       |        "$CUSTOM": {"custom": "property"},
       |        "urn:ietf:params:jmap:vacationresponse":{},
@@ -157,6 +159,7 @@ object CustomMethodContract {
       |    "urn:ietf:params:jmap:core" : 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "urn:ietf:params:jmap:mail" : 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
       |    "urn:apache:james:params:jmap:mail:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+      |    "urn:ietf:params:jmap:quota": 
"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 e38189e325..307cd22815 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
@@ -69,6 +69,7 @@ object SessionRoutesContract {
                          |      "url": "ws://domain.com/jmap/ws"
                          |    },
                          |    "urn:apache:james:params:jmap:mail:quota": {},
+                         |    "urn:ietf:params:jmap:quota": {},
                          |    "urn:apache:james:params:jmap:mail:shares": {},
                          |    "urn:ietf:params:jmap:vacationresponse":{},
                          |    "urn:ietf:params:jmap:mdn":{}
@@ -106,6 +107,7 @@ object SessionRoutesContract {
                          |          "mayCreateTopLevelMailbox" : true
                          |        },
                          |        "urn:apache:james:params:jmap:mail:quota": 
{},
+                         |        "urn:ietf:params:jmap:quota": {},
                          |        "urn:apache:james:params:jmap:mail:shares": 
{},
                          |        "urn:ietf:params:jmap:vacationresponse":{},
                          |        "urn:ietf:params:jmap:mdn":{}
@@ -118,6 +120,7 @@ object SessionRoutesContract {
                          |    "urn:ietf:params:jmap:core" : 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:ietf:params:jmap:mail" : 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:apache:james:params:jmap:mail:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
+                         |    "urn:ietf:params:jmap:quota": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:apache:james:params:jmap:mail:shares": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:ietf:params:jmap:vacationresponse": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6",
                          |    "urn:ietf:params:jmap:mdn": 
"29883977c13473ae7cb7678ef767cbfbaffc8a44a6e463d971d23a65c1dc4af6"
@@ -164,7 +167,7 @@ trait SessionRoutesContract {
         .get("/session")
       .`then`
         .statusCode(SC_OK)
-        .header("Content-Length", "3025")
+        .header("Content-Length", "3185")
         .contentType(JSON)
       .extract()
         .body()
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 ae113f389d..2d8fe248a8 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
@@ -58,6 +58,7 @@ object DefaultCapabilities {
     CoreCapabilityFactory(configuration.maxUploadSize),
     MailCapabilityFactory,
     QuotaCapabilityFactory,
+    JmapQuotaCapabilityFactory,
     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 d8ceafd487..49a6bd28c4 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_QUOTA, JAMES_SHARES, JMAP_CORE, JMAP_MAIL, JMAP_MDN, 
JMAP_VACATION_RESPONSE, JMAP_WEBSOCKET}
+import org.apache.james.jmap.core.CapabilityIdentifier.{CapabilityIdentifier, 
EMAIL_SUBMISSION, 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}
@@ -48,6 +48,7 @@ object CapabilityIdentifier {
   val EMAIL_SUBMISSION: CapabilityIdentifier = 
"urn:ietf:params:jmap:submission"
   val JMAP_WEBSOCKET: CapabilityIdentifier = "urn:ietf:params:jmap:websocket"
   val JAMES_QUOTA: CapabilityIdentifier = 
"urn:apache:james:params:jmap:mail:quota"
+  val JMAP_QUOTA: CapabilityIdentifier = "urn:ietf:params:jmap:quota"
   val JAMES_SHARES: CapabilityIdentifier = 
"urn:apache:james:params:jmap:mail:shares"
   val JMAP_MDN: CapabilityIdentifier = "urn:ietf:params:jmap:mdn"
 }
@@ -254,4 +255,17 @@ case object VacationResponseCapabilityFactory extends 
CapabilityFactory {
 }
 
 final case class VacationResponseCapability(properties: 
VacationResponseCapabilityProperties = VacationResponseCapabilityProperties(),
-                                            identifier: CapabilityIdentifier = 
JMAP_VACATION_RESPONSE) extends Capability
\ No newline at end of file
+                                            identifier: CapabilityIdentifier = 
JMAP_VACATION_RESPONSE) extends Capability
+
+final case class JmapQuotaCapability(properties: JmapQuotaCapabilityProperties 
= JmapQuotaCapabilityProperties(),
+                                     identifier: CapabilityIdentifier = 
JMAP_QUOTA) extends Capability
+
+final case class JmapQuotaCapabilityProperties() extends CapabilityProperties {
+  override def jsonify(): JsObject = Json.obj()
+}
+
+case object JmapQuotaCapabilityFactory extends CapabilityFactory {
+  override def id(): CapabilityIdentifier = JMAP_QUOTA
+
+  override def create(urlPrefixes: UrlPrefixes): Capability = 
JmapQuotaCapability()
+}
\ No newline at end of file
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 0061236bac..3f90df64c7 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:quota": {},
+                         |    "urn:ietf:params:jmap:quota": {},
                          |    "urn:apache:james:params:jmap:mail:shares": {},
                          |    "urn:ietf:params:jmap:vacationresponse":{}
                          |  },
@@ -186,6 +187,7 @@ class SessionRoutesTest extends AnyFlatSpec with 
BeforeAndAfter with Matchers {
                          |          "mayCreateTopLevelMailbox" : true
                          |        },
                          |        "urn:apache:james:params:jmap:mail:quota": 
{},
+                         |        "urn:ietf:params:jmap:quota": {},
                          |        "urn:apache:james:params:jmap:mail:shares": 
{},
                          |        "urn:ietf:params:jmap:vacationresponse":{}
                          |      }
@@ -197,6 +199,7 @@ class SessionRoutesTest extends AnyFlatSpec with 
BeforeAndAfter with Matchers {
                          |    "urn:ietf:params:jmap:core" : 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
                          |    "urn:ietf:params:jmap:mail" : 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
                          |    "urn:apache:james:params:jmap:mail:quota": 
"0fe275bf13ff761407c17f64b1dfae2f4b3186feea223d7267b79f873a105401",
+                         |    "urn:ietf:params:jmap:quota": 
"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