From dcc5b44520a27884a68e456a6cd5bd31c1c63d98 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 10 Nov 2020 22:39:07 +0100 Subject: [PATCH] Limited synchronized association access --- src/main/java/org/warp/commonutils/type/Association.java | 4 ++++ src/main/java/org/warp/commonutils/type/BiAssociation.java | 4 ++++ .../org/warp/commonutils/type/SynchronizedAssociation.java | 6 +++--- .../warp/commonutils/type/SynchronizedBiAssociation.java | 6 +++--- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/warp/commonutils/type/Association.java b/src/main/java/org/warp/commonutils/type/Association.java index 6579138..a7a3927 100644 --- a/src/main/java/org/warp/commonutils/type/Association.java +++ b/src/main/java/org/warp/commonutils/type/Association.java @@ -104,4 +104,8 @@ public interface Association { static Association synchronize(Association association) { return new SynchronizedAssociation(association); } + + static Association synchronize(Association association, Object lock) { + return new SynchronizedAssociation(association, lock); + } } diff --git a/src/main/java/org/warp/commonutils/type/BiAssociation.java b/src/main/java/org/warp/commonutils/type/BiAssociation.java index f2ade49..0310d9a 100644 --- a/src/main/java/org/warp/commonutils/type/BiAssociation.java +++ b/src/main/java/org/warp/commonutils/type/BiAssociation.java @@ -103,4 +103,8 @@ public interface BiAssociation { static BiAssociation synchronize(BiAssociation association) { return new SynchronizedBiAssociation(association); } + + static BiAssociation synchronize(BiAssociation association, Object lock) { + return new SynchronizedBiAssociation(association, lock); + } } diff --git a/src/main/java/org/warp/commonutils/type/SynchronizedAssociation.java b/src/main/java/org/warp/commonutils/type/SynchronizedAssociation.java index c93bb0f..2f48e8e 100644 --- a/src/main/java/org/warp/commonutils/type/SynchronizedAssociation.java +++ b/src/main/java/org/warp/commonutils/type/SynchronizedAssociation.java @@ -3,17 +3,17 @@ package org.warp.commonutils.type; import java.util.Optional; import java.util.Set; -public class SynchronizedAssociation implements Association { +public final class SynchronizedAssociation implements Association { private final Association association; private final Object lock; - public SynchronizedAssociation(Association association) { + SynchronizedAssociation(Association association) { this.association = association; this.lock = new Object(); } - public SynchronizedAssociation(Association association, Object lock) { + SynchronizedAssociation(Association association, Object lock) { this.association = association; this.lock = lock; } diff --git a/src/main/java/org/warp/commonutils/type/SynchronizedBiAssociation.java b/src/main/java/org/warp/commonutils/type/SynchronizedBiAssociation.java index bb0475e..b5d45d0 100644 --- a/src/main/java/org/warp/commonutils/type/SynchronizedBiAssociation.java +++ b/src/main/java/org/warp/commonutils/type/SynchronizedBiAssociation.java @@ -2,17 +2,17 @@ package org.warp.commonutils.type; import java.util.Optional; -public class SynchronizedBiAssociation implements BiAssociation { +public final class SynchronizedBiAssociation implements BiAssociation { private final BiAssociation association; private final Object lock; - public SynchronizedBiAssociation(BiAssociation association) { + SynchronizedBiAssociation(BiAssociation association) { this.association = association; this.lock = new Object(); } - public SynchronizedBiAssociation(BiAssociation association, Object lock) { + SynchronizedBiAssociation(BiAssociation association, Object lock) { this.association = association; this.lock = lock; }