From f0ec30fd9cc7fa19f9f9bf82d7d7449a65d90359 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Sun, 15 Oct 2006 17:50:08 +0000 Subject: Created StorageCollection. More tests added. --- .../carbonado/repo/logging/LoggingRepository.java | 25 ++++++++++------------ 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/main/java/com/amazon/carbonado/repo/logging') diff --git a/src/main/java/com/amazon/carbonado/repo/logging/LoggingRepository.java b/src/main/java/com/amazon/carbonado/repo/logging/LoggingRepository.java index 99c462c..58639e2 100644 --- a/src/main/java/com/amazon/carbonado/repo/logging/LoggingRepository.java +++ b/src/main/java/com/amazon/carbonado/repo/logging/LoggingRepository.java @@ -18,9 +18,6 @@ package com.amazon.carbonado.repo.logging; -import java.util.IdentityHashMap; -import java.util.Map; - import java.util.concurrent.atomic.AtomicReference; import com.amazon.carbonado.IsolationLevel; @@ -34,6 +31,8 @@ import com.amazon.carbonado.TriggerFactory; import com.amazon.carbonado.capability.Capability; +import com.amazon.carbonado.spi.StorageCollection; + /** * * @@ -45,8 +44,7 @@ class LoggingRepository implements Repository, LogAccessCapability { private final Repository mRepo; private final Log mLog; - // Map of storages by storable class - private final Map, LoggingStorage> mStorages; + private final StorageCollection mStorages; LoggingRepository(AtomicReference rootRef, Iterable triggerFactories, @@ -57,7 +55,13 @@ class LoggingRepository implements Repository, LogAccessCapability { mRepo = actual; mLog = log; - mStorages = new IdentityHashMap, LoggingStorage>(); + mStorages = new StorageCollection() { + protected Storage createStorage(Class type) + throws RepositoryException + { + return new LoggingStorage(LoggingRepository.this, mRepo.storageFor(type)); + } + }; } public String getName() { @@ -67,14 +71,7 @@ class LoggingRepository implements Repository, LogAccessCapability { public Storage storageFor(Class type) throws SupportException, RepositoryException { - synchronized (mStorages) { - LoggingStorage storage = mStorages.get(type); - if (storage == null) { - storage = new LoggingStorage(this, mRepo.storageFor(type)); - mStorages.put(type, storage); - } - return storage; - } + return mStorages.storageFor(type); } public Transaction enterTransaction() { -- cgit v1.2.3