From f28e3d7683745dfa138443e1102ef36344d1c4a3 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 19 Jan 2022 19:39:41 +0100 Subject: [PATCH] [New] AbstractTransaction.lock(StrolchRootElement) adds the given element to the TX's object cache This is necessary so that later calls to getResourceBy() etc. returns this object and not retrieves it again from the ElementMap. This can occur when using an element returned from a ElementMap.stream() call. --- .../li/strolch/persistence/api/AbstractTransaction.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java index 0e599e117..f18a058ac 100644 --- a/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java +++ b/li.strolch.agent/src/main/java/li/strolch/persistence/api/AbstractTransaction.java @@ -299,6 +299,12 @@ public abstract class AbstractTransaction implements StrolchTransaction { Locator locator = element.getLocator(); this.realm.lock(locator); this.lockedElements.add(locator); + + switch (element.getObjectType()) { + case RESOURCE -> resourceCache().addElement(element.getType(), element.getId(), (Resource) element); + case ORDER -> orderCache().addElement(element.getType(), element.getId(), (Order) element); + case ACTIVITY -> activityCache().addElement(element.getType(), element.getId(), (Activity) element); + } } @Override