You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by jo...@apache.org on 2025/09/05 10:19:21 UTC
(jackrabbit-oak) 01/01: OAK-11894 resolve the IdentifierManager lazily
This is an automated email from the ASF dual-hosted git repository.
joerghoh pushed a commit to branch OAK-11894
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit f9271796748036cee7cb78b57ecee7a94e4ef3b7
Author: Joerg Hoh <jh...@adobe.com>
AuthorDate: Fri Sep 5 12:19:03 2025 +0200
OAK-11894 resolve the IdentifierManager lazily
---
.../main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
index c60f54b9bc..e71341a1be 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/xml/ImporterImpl.java
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Set;
import java.util.Stack;
import java.util.UUID;
+import java.util.function.Supplier;
import javax.jcr.ImportUUIDBehavior;
import javax.jcr.ItemExistsException;
@@ -44,6 +45,7 @@ import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
+import org.apache.jackrabbit.oak.commons.function.Suppliers;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
import org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate;
import org.apache.jackrabbit.oak.jcr.security.AccessManager;
@@ -578,7 +580,7 @@ public class ImporterImpl implements Importer {
* no modifications are performed
*/
private final IdentifierManager currentStateIdManager;
- private final IdentifierManager baseStateIdManager;
+ private final Supplier<IdentifierManager> baseStateIdManager;
/**
* Set of newly created uuid from nodes which are
@@ -590,7 +592,7 @@ public class ImporterImpl implements Importer {
private IdResolver(@NotNull Root root, @NotNull ContentSession contentSession) {
currentStateIdManager = new IdentifierManager(root);
- baseStateIdManager = new IdentifierManager(contentSession.getLatestRoot());
+ baseStateIdManager = Suppliers.memoize(() -> new IdentifierManager(contentSession.getLatestRoot()));
if (!root.hasPendingChanges()) {
importedUUIDs = new HashSet<String>();
@@ -604,7 +606,7 @@ public class ImporterImpl implements Importer {
private Tree getConflictingTree(@NotNull String id) {
//1. First check from base state that tree corresponding to
//this id exist
- Tree conflicting = baseStateIdManager.getTree(id);
+ Tree conflicting = baseStateIdManager.get().getTree(id);
if (conflicting == null && importedUUIDs != null) {
//1.a. Check if id is found in newly created nodes
if (importedUUIDs.contains(id)) {