This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 5eb8a9c894c7949001a426cb1117a1de45ff9acf
Author: Quan Tran <[email protected]>
AuthorDate: Fri Oct 29 09:17:28 2021 +0700

    JAMES-3539 MemoryPushSubscriptionRepository should leverage 
PushSubscriptionHelpers
---
 .../MemoryPushSubscriptionRepository.java          | 38 +++++-----------------
 1 file changed, 8 insertions(+), 30 deletions(-)

diff --git 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
index 488b616..c6b42ed 100644
--- 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
+++ 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/pushsubscription/MemoryPushSubscriptionRepository.java
@@ -19,7 +19,10 @@
 
 package org.apache.james.jmap.memory.pushsubscription;
 
-import static 
org.apache.james.jmap.api.model.PushSubscription.EXPIRES_TIME_MAX_DAY;
+import static 
org.apache.james.jmap.api.pushsubscription.PushSubscriptionHelpers.evaluateExpiresTime;
+import static 
org.apache.james.jmap.api.pushsubscription.PushSubscriptionHelpers.isInThePast;
+import static 
org.apache.james.jmap.api.pushsubscription.PushSubscriptionHelpers.isInvalidPushSubscriptionKey;
+import static 
org.apache.james.jmap.api.pushsubscription.PushSubscriptionHelpers.isNotOutdatedSubscription;
 
 import java.time.Clock;
 import java.time.ZonedDateTime;
@@ -37,7 +40,6 @@ import org.apache.james.jmap.api.model.PushSubscription;
 import org.apache.james.jmap.api.model.PushSubscriptionCreationRequest;
 import org.apache.james.jmap.api.model.PushSubscriptionExpiredTime;
 import org.apache.james.jmap.api.model.PushSubscriptionId;
-import org.apache.james.jmap.api.model.PushSubscriptionKeys;
 import org.apache.james.jmap.api.model.PushSubscriptionNotFoundException;
 import org.apache.james.jmap.api.model.TypeName;
 import org.apache.james.jmap.api.pushsubscription.PushSubscriptionRepository;
@@ -48,7 +50,6 @@ import com.google.common.collect.Table;
 
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
-import scala.Option;
 import scala.jdk.javaapi.CollectionConverters;
 import scala.jdk.javaapi.OptionConverters;
 
@@ -66,7 +67,7 @@ public class MemoryPushSubscriptionRepository implements 
PushSubscriptionReposit
     public Publisher<PushSubscription> save(Username username, 
PushSubscriptionCreationRequest request) {
         return Mono.just(request)
             .handle((req, sink) -> {
-                if (isInThePast(req.expires())) {
+                if (isInThePast(req.expires(), clock)) {
                     sink.error(new 
ExpireTimeInvalidException(req.expires().get().value(), "expires must be 
greater than now"));
                 }
                 if (!isUniqueDeviceClientId(username, req.deviceClientId())) {
@@ -77,7 +78,8 @@ public class MemoryPushSubscriptionRepository implements 
PushSubscriptionReposit
                 }
             })
             .thenReturn(PushSubscription.from(request,
-                
evaluateExpiresTime(OptionConverters.toJava(request.expires().map(PushSubscriptionExpiredTime::value)))))
+                
evaluateExpiresTime(OptionConverters.toJava(request.expires().map(PushSubscriptionExpiredTime::value)),
+                    clock)))
             .doOnNext(pushSubscription -> table.put(username, 
pushSubscription.id(), pushSubscription));
     }
 
@@ -91,7 +93,7 @@ public class MemoryPushSubscriptionRepository implements 
PushSubscriptionReposit
             })
             .then(Mono.justOrEmpty(table.get(username, id))
                 .doOnNext(pushSubscription -> table.put(username, id,
-                    
pushSubscription.withExpires(evaluateExpiresTime(Optional.of(newExpire)))))
+                    
pushSubscription.withExpires(evaluateExpiresTime(Optional.of(newExpire), 
clock))))
                 .switchIfEmpty(Mono.error(() -> new 
PushSubscriptionNotFoundException(id)))
                 .then());
     }
@@ -140,33 +142,9 @@ public class MemoryPushSubscriptionRepository implements 
PushSubscriptionReposit
             .then();
     }
 
-    private boolean isInThePast(PushSubscriptionExpiredTime expire) {
-        return expire.isBefore(ZonedDateTime.now(clock));
-    }
-
-    private boolean isInThePast(Option<PushSubscriptionExpiredTime> expire) {
-        return expire.map(this::isInThePast).getOrElse(() -> false);
-    }
-
-    private PushSubscriptionExpiredTime 
evaluateExpiresTime(Optional<ZonedDateTime> inputTime) {
-        ZonedDateTime now = ZonedDateTime.now(clock);
-        ZonedDateTime maxExpiresTime = now.plusDays(EXPIRES_TIME_MAX_DAY());
-        return PushSubscriptionExpiredTime.apply(inputTime.filter(input -> 
input.isBefore(maxExpiresTime))
-            .orElse(maxExpiresTime));
-    }
-
-    private boolean isNotOutdatedSubscription(PushSubscription subscription, 
Clock clock) {
-        return subscription.expires().isAfter(ZonedDateTime.now(clock));
-    }
-
     private boolean isUniqueDeviceClientId(Username username, String 
deviceClientId) {
         return table.row(username).values().stream()
             .noneMatch(subscription -> 
subscription.deviceClientId().equals(deviceClientId));
     }
 
-    private boolean isInvalidPushSubscriptionKey(Option<PushSubscriptionKeys> 
keysOption) {
-        return OptionConverters.toJava(keysOption)
-            .map(key -> key.p256dh().isEmpty() || key.auth().isEmpty())
-            .orElse(false);
-    }
 }

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

Reply via email to