From 9ef8a0110a0782e2c384ce0fde0c2bfc24dbfea8 Mon Sep 17 00:00:00 2001 From: rbradley813 Date: Thu, 17 Oct 2024 10:17:38 -0400 Subject: [PATCH] =?UTF-8?q?ensure=20new=20transactions=20and=20stamps=20ar?= =?UTF-8?q?e=20only=20created=20if=20they=20don't=20alr=E2=80=A6=20(#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ensure new transactions and stamps are only created if they don't already exist * composer transaction to local variable * update tinkar-core and eclipse-collections versions * fix tinkar core version typo --- pom.xml | 4 ++-- .../dev/ikm/tinkar/composer/Composer.java | 19 +++++++++++-------- src/test/java/module-info.java | 2 -- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 41f5389..8d05ad5 100644 --- a/pom.xml +++ b/pom.xml @@ -56,14 +56,14 @@ - 1.72.0 + 1.74.0 2.0.13 3.0.0-alpha1 1.0.0 dev.ikm.jpms - 11.1.0-r12 + 11.1.0-r13 11.1.0-r11 diff --git a/src/main/java/dev/ikm/tinkar/composer/Composer.java b/src/main/java/dev/ikm/tinkar/composer/Composer.java index f8a2c80..6d8b43a 100644 --- a/src/main/java/dev/ikm/tinkar/composer/Composer.java +++ b/src/main/java/dev/ikm/tinkar/composer/Composer.java @@ -27,7 +27,6 @@ public class Composer { private final Map composerSessionCache = new HashMap<>(); private StampEntity stampEntity; - private Transaction transaction; private final String name; public Composer(String name) { @@ -54,10 +53,12 @@ public Composer(String name) { * @see State */ public Session open(State status, long time, Concept author, Concept module, Concept path) { - this.transaction = new Transaction(name); - this.stampEntity = transaction.getStamp(status, time, author.publicId(), module.publicId(), path.publicId()); UUID sessionKey = keyValue(status, time, author, module, path); - composerSessionCache.computeIfAbsent(sessionKey, (key) -> new Session(transaction, stampEntity, sessionKey)); + composerSessionCache.computeIfAbsent(sessionKey, (key) -> { + Transaction transaction = new Transaction(name); + this.stampEntity = transaction.getStamp(status, time, author.publicId(), module.publicId(), path.publicId()); + return new Session(transaction, stampEntity, sessionKey); + }); return composerSessionCache.get(sessionKey); } @@ -80,10 +81,12 @@ public Session open(State status, long time, Concept author, Concept module, Con * @see State */ public Session open(State status, Concept author, Concept module, Concept path) { - this.transaction = new Transaction(name); - this.stampEntity = transaction.getStamp(status, author, module, path); - UUID sessionKey = keyValue(status, transaction.commitTime(), author, module, path); - composerSessionCache.computeIfAbsent(sessionKey, (key) -> new Session(transaction, stampEntity, sessionKey)); + UUID sessionKey = keyValue(status, Long.MAX_VALUE, author, module, path); + composerSessionCache.computeIfAbsent(sessionKey, (key) -> { + Transaction transaction = new Transaction(name); + this.stampEntity = transaction.getStamp(status, author, module, path); + return new Session(transaction, stampEntity, sessionKey); + }); return composerSessionCache.get(sessionKey); } diff --git a/src/test/java/module-info.java b/src/test/java/module-info.java index 051fb3b..2606d71 100644 --- a/src/test/java/module-info.java +++ b/src/test/java/module-info.java @@ -28,8 +28,6 @@ requires org.junit.jupiter.api; requires dev.ikm.jpms.eclipse.collections.api; - - exports dev.ikm.tinkar.composer.test; exports dev.ikm.tinkar.composer.test.template;