This is an automated email from the ASF dual-hosted git repository. daim pushed a commit to branch OAK-11914 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit bcc628e0ba18bdfe234194fcd6511b38eb81ee67 Author: rishabhdaim <[email protected]> AuthorDate: Mon Oct 13 13:32:56 2025 +0530 OAK-11914 : removed usage of Guava's HashBasedTable --- .../nodestore/DocumentMemoryNodeStoreFixture.java | 21 +++---- .../nodestore/DocumentMongoNodeStoreFixture.java | 20 +++--- .../nodestore/SegmentMemoryNodeStoreFixture.java | 30 ++++----- .../oak/jcr/random/RandomizedReadTest.java | 71 ++++++++++++---------- 4 files changed, 73 insertions(+), 69 deletions(-) diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMemoryNodeStoreFixture.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMemoryNodeStoreFixture.java index 1328d33d5f..27aa6900cc 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMemoryNodeStoreFixture.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMemoryNodeStoreFixture.java @@ -20,6 +20,8 @@ package org.apache.jackrabbit.oak.jcr.binary.fixtures.nodestore; import java.io.File; import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; import javax.jcr.RepositoryException; import org.apache.commons.io.FileUtils; @@ -36,9 +38,6 @@ import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.jackrabbit.guava.common.collect.HashBasedTable; -import org.apache.jackrabbit.guava.common.collect.Table; - /** * Creates a repository with * - DocumentNodeStore, storing data in-memory @@ -50,7 +49,7 @@ public class DocumentMemoryNodeStoreFixture extends NodeStoreFixture implements private final DataStoreFixture dataStoreFixture; - private final Table<NodeStore, String, Object> components = HashBasedTable.create(); + private final Map<NodeStore, Map<String, Object>> components = new LinkedHashMap<>(); public DocumentMemoryNodeStoreFixture(@Nullable DataStoreFixture dataStoreFixture) { this.dataStoreFixture = dataStoreFixture; @@ -87,11 +86,11 @@ public class DocumentMemoryNodeStoreFixture extends NodeStoreFixture implements // track all main components if (dataStore != null) { - components.put(nodeStore, DataStore.class.getName(), dataStore); - components.put(nodeStore, DataStore.class.getName() + ":folder", dataStoreFolder); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName(), dataStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName() + ":folder", dataStoreFolder); } if (blobStore != null) { - components.put(nodeStore, BlobStore.class.getName(), blobStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(BlobStore.class.getName(), blobStore); } return nodeStore; @@ -107,15 +106,15 @@ public class DocumentMemoryNodeStoreFixture extends NodeStoreFixture implements ((DocumentNodeStore)nodeStore).dispose(); } - DataStore dataStore = (DataStore) components.get(nodeStore, DataStore.class.getName()); + DataStore dataStore = (DataStore) components.get(nodeStore).get(DataStore.class.getName()); if (dataStore != null && dataStoreFixture != null) { dataStoreFixture.dispose(dataStore); - File dataStoreFolder = (File) components.get(nodeStore, DataStore.class.getName() + ":folder"); + File dataStoreFolder = (File) components.get(nodeStore).get(DataStore.class.getName() + ":folder"); FileUtils.deleteQuietly(dataStoreFolder); } } finally { - components.row(nodeStore).clear(); + components.get(nodeStore).clear(); } } @@ -127,6 +126,6 @@ public class DocumentMemoryNodeStoreFixture extends NodeStoreFixture implements @Override public <T> T get(NodeStore nodeStore, String componentName) { - return (T) components.get(nodeStore, componentName); + return (T) components.get(nodeStore).get(componentName); } } diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMongoNodeStoreFixture.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMongoNodeStoreFixture.java index 411a11a85f..f34b8d1503 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMongoNodeStoreFixture.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/DocumentMongoNodeStoreFixture.java @@ -20,13 +20,13 @@ package org.apache.jackrabbit.oak.jcr.binary.fixtures.nodestore; import java.io.File; import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.UUID; import java.util.concurrent.TimeUnit; import javax.jcr.RepositoryException; -import org.apache.jackrabbit.guava.common.collect.HashBasedTable; -import org.apache.jackrabbit.guava.common.collect.Table; import org.apache.commons.io.FileUtils; import org.apache.jackrabbit.core.data.DataStore; import org.apache.jackrabbit.oak.fixture.NodeStoreFixture; @@ -61,7 +61,7 @@ public class DocumentMongoNodeStoreFixture extends NodeStoreFixture implements C private final Logger log = LoggerFactory.getLogger(getClass()); private final DataStoreFixture dataStoreFixture; - private final Table<NodeStore, String, Object> components = HashBasedTable.create(); + private final Map<NodeStore, Map<String, Object>> components = new LinkedHashMap<>(); private MongoConnection connection; private final Clock clock; public MongoConnectionFactory connFactory; @@ -123,11 +123,11 @@ public class DocumentMongoNodeStoreFixture extends NodeStoreFixture implements C // track all main components if (dataStore != null) { - components.put(nodeStore, DataStore.class.getName(), dataStore); - components.put(nodeStore, DataStore.class.getName() + ":folder", dataStoreFolder); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName(), dataStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName() + ":folder", dataStoreFolder); } if (blobStore != null) { - components.put(nodeStore, BlobStore.class.getName(), blobStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(BlobStore.class.getName(), blobStore); } return nodeStore; @@ -143,11 +143,11 @@ public class DocumentMongoNodeStoreFixture extends NodeStoreFixture implements C ((DocumentNodeStore)nodeStore).dispose(); } - DataStore dataStore = (DataStore) components.get(nodeStore, DataStore.class.getName()); + DataStore dataStore = (DataStore) components.get(nodeStore).get(DataStore.class.getName()); if (dataStore != null && dataStoreFixture != null) { dataStoreFixture.dispose(dataStore); - File dataStoreFolder = (File) components.get(nodeStore, DataStore.class.getName() + ":folder"); + File dataStoreFolder = (File) components.get(nodeStore).get(DataStore.class.getName() + ":folder"); FileUtils.deleteQuietly(dataStoreFolder); } MongoUtils.dropDatabase(db); @@ -155,7 +155,7 @@ public class DocumentMongoNodeStoreFixture extends NodeStoreFixture implements C connection.close(); } } finally { - components.row(nodeStore).clear(); + components.get(nodeStore).clear(); } } @@ -179,6 +179,6 @@ public class DocumentMongoNodeStoreFixture extends NodeStoreFixture implements C @Override public <T> T get(NodeStore nodeStore, String componentName) { - return (T) components.get(nodeStore, componentName); + return (T) components.get(nodeStore).get(componentName); } } diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/SegmentMemoryNodeStoreFixture.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/SegmentMemoryNodeStoreFixture.java index 366058f45e..fc99ed99ab 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/SegmentMemoryNodeStoreFixture.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/binary/fixtures/nodestore/SegmentMemoryNodeStoreFixture.java @@ -20,6 +20,8 @@ package org.apache.jackrabbit.oak.jcr.binary.fixtures.nodestore; import java.io.File; import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; import javax.jcr.RepositoryException; import org.apache.commons.io.FileUtils; @@ -42,9 +44,6 @@ import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.jackrabbit.guava.common.collect.HashBasedTable; -import org.apache.jackrabbit.guava.common.collect.Table; - /** * Creates a repository with * - SegmentNodeStore, storing data in-memory @@ -57,7 +56,7 @@ public class SegmentMemoryNodeStoreFixture extends NodeStoreFixture implements C private final DataStoreFixture dataStoreFixture; - private final Table<NodeStore, String, Object> components = HashBasedTable.create(); + private final Map<NodeStore, Map<String, Object>> components = new LinkedHashMap<>(); public SegmentMemoryNodeStoreFixture(@Nullable DataStoreFixture dataStoreFixture) { this.dataStoreFixture = dataStoreFixture; @@ -99,14 +98,15 @@ public class SegmentMemoryNodeStoreFixture extends NodeStoreFixture implements C // track all main components if (dataStore != null) { - components.put(nodeStore, DataStore.class.getName(), dataStore); - components.put(nodeStore, DataStore.class.getName() + ":folder", dataStoreFolder); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName(), dataStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName(), dataStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(DataStore.class.getName() + ":folder", dataStoreFolder); } if (blobStore != null) { - components.put(nodeStore, BlobStore.class.getName(), blobStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(BlobStore.class.getName(), blobStore); } - components.put(nodeStore, FileStore.class.getName(), fileStore); - components.put(nodeStore, FileStore.class.getName() + ":root", fileStoreRoot); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(FileStore.class.getName(), fileStore); + components.computeIfAbsent(nodeStore, k -> new LinkedHashMap<>()).put(FileStore.class.getName() + ":root", fileStoreRoot); return nodeStore; @@ -118,22 +118,22 @@ public class SegmentMemoryNodeStoreFixture extends NodeStoreFixture implements C @Override public void dispose(NodeStore nodeStore) { try { - FileStore fileStore = (FileStore) components.get(nodeStore, FileStore.class.getName()); + FileStore fileStore = (FileStore) components.get(nodeStore).get(FileStore.class.getName()); if (fileStore != null) { fileStore.close(); } - File fileStoreRoot = (File) components.get(nodeStore, FileStore.class.getName() + ":root"); + File fileStoreRoot = (File) components.get(nodeStore).get(FileStore.class.getName() + ":root"); FileUtils.deleteQuietly(fileStoreRoot); - DataStore dataStore = (DataStore) components.get(nodeStore, DataStore.class.getName()); + DataStore dataStore = (DataStore) components.get(nodeStore).get(DataStore.class.getName()); if (dataStore != null && dataStoreFixture != null) { dataStoreFixture.dispose(dataStore); - File dataStoreFolder = (File) components.get(nodeStore, DataStore.class.getName() + ":folder"); + File dataStoreFolder = (File) components.get(nodeStore).get(DataStore.class.getName() + ":folder"); FileUtils.deleteQuietly(dataStoreFolder); } } finally { - components.row(nodeStore).clear(); + components.get(nodeStore).clear(); } } @@ -158,6 +158,6 @@ public class SegmentMemoryNodeStoreFixture extends NodeStoreFixture implements C @Override public <T> T get(NodeStore nodeStore, String componentName) { - return (T) components.get(nodeStore, componentName); + return (T) components.get(nodeStore).get(componentName); } } diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/random/RandomizedReadTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/random/RandomizedReadTest.java index 70e4934f4d..ba5388ae12 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/random/RandomizedReadTest.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/random/RandomizedReadTest.java @@ -18,6 +18,8 @@ package org.apache.jackrabbit.oak.jcr.random; import java.security.Principal; +import java.util.LinkedHashMap; +import java.util.Map; import java.util.Random; import javax.jcr.Node; @@ -27,8 +29,6 @@ import javax.jcr.security.AccessControlEntry; import javax.jcr.security.AccessControlList; import javax.jcr.security.AccessControlManager; -import org.apache.jackrabbit.guava.common.collect.HashBasedTable; -import org.apache.jackrabbit.guava.common.collect.Table; import org.apache.jackrabbit.api.JackrabbitSession; import org.apache.jackrabbit.api.security.JackrabbitAccessControlList; import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils; @@ -39,18 +39,21 @@ import org.junit.Test; public class RandomizedReadTest extends AbstractRandomizedTest { private static final int depth = 4; - private static final Table<Integer, Integer, String> tree = HashBasedTable.create(); + private static final Map<Integer, Map<Integer, String>> tree = new LinkedHashMap<>(); static { - tree.put(0, 0, "/"); - tree.put(1, 0, "/n1"); - tree.put(1, 1, "/n2"); - tree.put(2, 0, "/n1/n3"); - tree.put(2, 1, "/n1/n4"); - tree.put(2, 2, "/n1/n5"); - tree.put(3, 0, "/n1/n3/n6"); - tree.put(3, 1, "/n1/n3/n7"); - tree.put(3, 2, "/n1/n3/n8"); - tree.put(3, 3, "/n1/n3/n9"); + + // Java + tree.computeIfAbsent(0, k -> new LinkedHashMap<>()).put(0, "/"); + tree.computeIfAbsent(0, k -> new LinkedHashMap<>()).put(0, "/"); + tree.computeIfAbsent(1, k -> new LinkedHashMap<>()).put(0, "/n1"); + tree.computeIfAbsent(1, k -> new LinkedHashMap<>()).put(1, "/n2"); + tree.computeIfAbsent(2, k -> new LinkedHashMap<>()).put(0, "/n1/n3"); + tree.computeIfAbsent(2, k -> new LinkedHashMap<>()).put(1, "/n1/n4"); + tree.computeIfAbsent(2, k -> new LinkedHashMap<>()).put(2, "/n1/n5"); + tree.computeIfAbsent(3, k -> new LinkedHashMap<>()).put(0, "/n1/n3/n6"); + tree.computeIfAbsent(3, k -> new LinkedHashMap<>()).put(1, "/n1/n3/n7"); + tree.computeIfAbsent(3, k -> new LinkedHashMap<>()).put(2, "/n1/n3/n8"); + tree.computeIfAbsent(3, k -> new LinkedHashMap<>()).put(3, "/n1/n3/n9"); } @Override @@ -134,37 +137,39 @@ public class RandomizedReadTest extends AbstractRandomizedTest { if (depth == 0) { return "/"; } - return tree.get(depth, index); + return tree.get(depth).get(index); } public void check() throws Exception { boolean mustThrow; try { - for (String path : tree.values()) { - mustThrow = false; - - Session s1 = readSessions.get(0); - try { - Node n = s1.getNode(path); - if (!path.equals(n.getPath())) { - Assert.fail("did not resolved the same node"); - } - } catch (PathNotFoundException pnf) { - mustThrow = true; - } + for (Map<Integer, String> t : tree.values()) { + for (String path : t.values()) { + mustThrow = false; - for (int i = 1; i < readSessions.size(); i++) { + Session s1 = readSessions.get(0); try { - Node n = readSessions.get(i).getNode(path); - if (mustThrow) { - Assert.fail("did not throw for path " + path); - } + Node n = s1.getNode(path); if (!path.equals(n.getPath())) { Assert.fail("did not resolved the same node"); } } catch (PathNotFoundException pnf) { - if (!mustThrow) { - Assert.fail("did throw for path " + path); + mustThrow = true; + } + + for (int i = 1; i < readSessions.size(); i++) { + try { + Node n = readSessions.get(i).getNode(path); + if (mustThrow) { + Assert.fail("did not throw for path " + path); + } + if (!path.equals(n.getPath())) { + Assert.fail("did not resolved the same node"); + } + } catch (PathNotFoundException pnf) { + if (!mustThrow) { + Assert.fail("did throw for path " + path); + } } } }
