[jbosscache-commits] JBoss Cache SVN: r7172 - in core/branches/flat/src: main/java/org/jboss/starobrno/config and 4 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Wed Nov 19 15:16:58 EST 2008
Author: manik.surtani at jboss.com
Date: 2008-11-19 15:16:57 -0500 (Wed, 19 Nov 2008)
New Revision: 7172
Added:
core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeKey.java
core/branches/flat/src/test/java/org/jboss/starobrno/tree/api/NodeLockSupport.java
Modified:
core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java
core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java
core/branches/flat/src/main/java/org/jboss/starobrno/config/Configuration.java
core/branches/flat/src/main/java/org/jboss/starobrno/config/Option.java
core/branches/flat/src/main/java/org/jboss/starobrno/config/XmlParsingConfigurationRegistry.java
core/branches/flat/src/main/java/org/jboss/starobrno/context/InvocationContextImpl.java
core/branches/flat/src/main/java/org/jboss/starobrno/manager/CacheManager.java
core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java
core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java
Log:
Replicated tree unit tests
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -50,6 +50,7 @@
import org.jboss.starobrno.interceptors.InterceptorChain;
import org.jboss.starobrno.interceptors.base.CommandInterceptor;
import org.jboss.starobrno.invocation.InvocationContextContainer;
+import org.jboss.starobrno.lock.LockManager;
import org.jboss.starobrno.notifications.Notifier;
import org.jboss.starobrno.statetransfer.StateTransferManager;
import org.jboss.starobrno.transaction.GlobalTransaction;
@@ -81,6 +82,7 @@
private String name;
private EvictionManager evictionManager;
private DataContainer dataContainer;
+ private LockManager lockManager;
@Inject
@@ -93,7 +95,8 @@
ComponentRegistry componentRegistry,
TransactionManager transactionManager,
BatchContainer batchContainer,
- RPCManager rpcManager, DataContainer dataContainer)
+ RPCManager rpcManager, DataContainer dataContainer,
+ LockManager lockManager)
{
this.invocationContextContainer = invocationContextContainer;
this.commandsFactory = commandsFactory;
@@ -106,6 +109,7 @@
this.rpcManager = rpcManager;
this.evictionManager = evictionManager;
this.dataContainer = dataContainer;
+ this.lockManager = lockManager;
}
public V putIfAbsent(K key, V value)
@@ -384,6 +388,11 @@
throw new UnsupportedOperationException("Not implemented");//todo please implement!
}
+ public LockManager getLockManager()
+ {
+ return lockManager;
+ }
+
public String getName()
{
return name;
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -32,6 +32,7 @@
import org.jboss.starobrno.factories.ComponentRegistry;
import org.jboss.starobrno.interceptors.base.CommandInterceptor;
import org.jboss.starobrno.loader.CacheLoader;
+import org.jboss.starobrno.lock.LockManager;
import org.jboss.starobrno.notifications.Notifier;
import org.jboss.starobrno.statetransfer.StateTransferManager;
import org.jboss.starobrno.transaction.GlobalTransaction;
@@ -208,5 +209,7 @@
*/
ComponentRegistry getComponentRegistry();
- public Object getDirect(Object key);
+ Object getDirect(Object key);
+
+ LockManager getLockManager();
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/Configuration.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/Configuration.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/Configuration.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -957,28 +957,35 @@
}
@Override
- public Configuration clone() throws CloneNotSupportedException
+ public Configuration clone()
{
- Configuration c = (Configuration) super.clone();
- if (buddyReplicationConfig != null)
+ try
{
- c.setBuddyReplicationConfig(buddyReplicationConfig.clone());
+ Configuration c = (Configuration) super.clone();
+ if (buddyReplicationConfig != null)
+ {
+ c.setBuddyReplicationConfig(buddyReplicationConfig.clone());
+ }
+ if (evictionConfig != null)
+ {
+ c.setEvictionConfig(evictionConfig.clone());
+ }
+ if (cacheLoaderConfig != null)
+ {
+ c.setCacheLoaderConfig(cacheLoaderConfig.clone());
+ }
+ if (runtimeConfig != null)
+ {
+ c.setRuntimeConfig(runtimeConfig.clone());
+ // always make sure we reset the runtime when cloning.
+ c.getRuntimeConfig().reset();
+ }
+ return c;
}
- if (evictionConfig != null)
+ catch (CloneNotSupportedException e)
{
- c.setEvictionConfig(evictionConfig.clone());
+ throw new RuntimeException(e);
}
- if (cacheLoaderConfig != null)
- {
- c.setCacheLoaderConfig(cacheLoaderConfig.clone());
- }
- if (runtimeConfig != null)
- {
- c.setRuntimeConfig(runtimeConfig.clone());
- // always make sure we reset the runtime when cloning.
- c.getRuntimeConfig().reset();
- }
- return c;
}
public boolean isUsingCacheLoaders()
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/Option.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/Option.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/Option.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -269,7 +269,7 @@
catch (CloneNotSupportedException e)
{
// should never happen
- return null;
+ throw new RuntimeException(e);
}
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/config/XmlParsingConfigurationRegistry.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/config/XmlParsingConfigurationRegistry.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/config/XmlParsingConfigurationRegistry.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -112,14 +112,6 @@
throw new IllegalArgumentException("unknown config " + configName);
// Don't hand out a ref to our master copy
- try
- {
- return config.clone();
- }
- catch (CloneNotSupportedException e)
- {
- // This should not happen, as we already cloned the config
- throw new RuntimeException("Could not clone configuration " + configName, e);
- }
+ return config.clone();
}
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/context/InvocationContextImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/context/InvocationContextImpl.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/context/InvocationContextImpl.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -533,4 +533,58 @@
copy.transaction = transaction;
copy.transactionContext = transactionContext;
}
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ InvocationContextImpl that = (InvocationContextImpl) o;
+
+ if (localRollbackOnly != that.localRollbackOnly) return false;
+ if (originLocal != that.originLocal) return false;
+ if (globalTransaction != null ? !globalTransaction.equals(that.globalTransaction) : that.globalTransaction != null)
+ return false;
+ if (invocationLocks != null ? !invocationLocks.equals(that.invocationLocks) : that.invocationLocks != null)
+ return false;
+ if (lookedUpEntries != null ? !lookedUpEntries.equals(that.lookedUpEntries) : that.lookedUpEntries != null)
+ return false;
+ if (optionOverrides != null ? !optionOverrides.equals(that.optionOverrides) : that.optionOverrides != null)
+ return false;
+ if (transaction != null ? !transaction.equals(that.transaction) : that.transaction != null) return false;
+ if (transactionContext != null ? !transactionContext.equals(that.transactionContext) : that.transactionContext != null)
+ return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = transaction != null ? transaction.hashCode() : 0;
+ result = 31 * result + (globalTransaction != null ? globalTransaction.hashCode() : 0);
+ result = 31 * result + (transactionContext != null ? transactionContext.hashCode() : 0);
+ result = 31 * result + (optionOverrides != null ? optionOverrides.hashCode() : 0);
+ result = 31 * result + (originLocal ? 1 : 0);
+ result = 31 * result + (localRollbackOnly ? 1 : 0);
+ result = 31 * result + (invocationLocks != null ? invocationLocks.hashCode() : 0);
+ result = 31 * result + (lookedUpEntries != null ? lookedUpEntries.hashCode() : 0);
+ return result;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "InvocationContextImpl{" +
+ "transaction=" + transaction +
+ ", globalTransaction=" + globalTransaction +
+ ", transactionContext=" + transactionContext +
+ ", optionOverrides=" + optionOverrides +
+ ", originLocal=" + originLocal +
+ ", localRollbackOnly=" + localRollbackOnly +
+ ", invocationLocks=" + invocationLocks +
+ ", lookedUpEntries=" + lookedUpEntries +
+ '}';
+ }
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/manager/CacheManager.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/manager/CacheManager.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/manager/CacheManager.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -45,16 +45,9 @@
public CacheManager(Configuration c)
{
- try
- {
- //if a config is shared between multiple managers, then each registers it's
- // own chnnel in runtime
- this.c = c.clone();
- }
- catch (CloneNotSupportedException e)
- {
- throw new RuntimeException(e);
- }
+ //if a config is shared between multiple managers, then each registers it's
+ // own chnnel in runtime
+ this.c = c.clone();
}
public void start()
@@ -94,14 +87,8 @@
protected TreeCache createTreeCache()
{
Configuration cfg = null;
- try
- {
- cfg = c.clone();
- }
- catch (CloneNotSupportedException e)
- {
+ cfg = c.clone();
- }
cfg.setInvocationBatchingEnabled(true); // needed for the TreeCache
DefaultCacheFactory dcf = new DefaultCacheFactory();
return new TreeCacheImpl(dcf.createCache(cfg));
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -37,14 +37,14 @@
public class NodeImpl<K, V> extends TreeStructureSupport implements Node<K, V>
{
Fqn fqn;
- Key dataKey, structureKey;
+ NodeKey dataKey, structureKey;
public NodeImpl(Fqn fqn, Cache cache)
{
super(cache);
this.fqn = fqn;
- dataKey = new Key(fqn, Type.DATA);
- structureKey = new Key(fqn, Type.STRUCTURE);
+ dataKey = new NodeKey(fqn, NodeKey.Type.DATA);
+ structureKey = new NodeKey(fqn, NodeKey.Type.STRUCTURE);
}
public Node<K, V> getParent()
@@ -59,7 +59,7 @@
try
{
Set set = new HashSet();
- for (Fqn f : getStructure().children.values())
+ for (Fqn f : getStructure().values())
{
NodeImpl n = new NodeImpl(f, cache);
set.add(n);
@@ -74,7 +74,7 @@
public Set<Object> getChildrenNames()
{
- return Immutables.immutableSetCopy(getStructure().children.keySet());
+ return Immutables.immutableSetCopy(getStructure().keySet());
}
public Map<K, V> getData()
@@ -107,8 +107,8 @@
{
Fqn absoluteChildFqn = Fqn.fromRelativeFqn(fqn, f);
NodeImpl child = new NodeImpl(absoluteChildFqn, cache);
- Structure s = getStructure();
- s.children.put(f.getLastElement(), absoluteChildFqn);
+ Map<Object, Fqn> s = getStructure();
+ s.put(f.getLastElement(), absoluteChildFqn);
updateStructure(s);
createNodeInCache(absoluteChildFqn);
return child;
@@ -129,14 +129,14 @@
startAtomic();
try
{
- Structure s = (Structure) cache.get(structureKey);
- Fqn childFqn = s.children.remove(childName);
+ Map<Object, Fqn> s = getStructure();
+ Fqn childFqn = s.remove(childName);
if (childFqn != null)
{
Node child = new NodeImpl(childFqn, cache);
child.removeChildren();
- cache.remove(new Key(childFqn, Type.DATA));
- cache.remove(new Key(childFqn, Type.STRUCTURE));
+ cache.remove(new NodeKey(childFqn, NodeKey.Type.DATA));
+ cache.remove(new NodeKey(childFqn, NodeKey.Type.STRUCTURE));
updateStructure(s);
return true;
}
@@ -326,7 +326,7 @@
public boolean hasChild(Object o)
{
- return getStructure().children.containsKey(o);
+ return getStructure().containsKey(o);
}
public boolean isValid()
@@ -339,8 +339,8 @@
startAtomic();
try
{
- Structure s = getStructure();
- for (Object o : Immutables.immutableSetCopy(s.children.keySet())) removeChild(o);
+ Map<Object, Fqn> s = getStructure();
+ for (Object o : Immutables.immutableSetCopy(s.keySet())) removeChild(o);
}
finally
{
@@ -367,14 +367,14 @@
return (Map<K, V>) atomicMapCache.getAtomicMap(dataKey);
}
- void updateStructure(Structure s)
+ void updateStructure(Map<Object, Fqn> s)
{
cache.put(structureKey, s);
}
- Structure getStructure()
+ Map<Object, Fqn> getStructure()
{
- return (Structure) cache.get(structureKey);
+ return (Map<Object, Fqn>) cache.get(structureKey);
}
public boolean equals(Object o)
Added: core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeKey.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeKey.java (rev 0)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeKey.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ */
+
+package org.jboss.starobrno.tree;
+
+import org.jboss.starobrno.util.Util;
+
+import java.io.Serializable;
+
+/**
+ * A class that represents the key to a node
+ *
+ * @author Manik Surtani
+ */
+public class NodeKey implements Serializable
+{
+ Fqn fqn;
+ Type contents;
+
+ enum Type
+ {
+ DATA, STRUCTURE
+ }
+
+ public NodeKey(Fqn fqn, Type contents)
+ {
+ this.contents = contents;
+ this.fqn = fqn;
+ }
+
+ public boolean equals(Object o)
+ {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ NodeKey key = (NodeKey) o;
+
+ if (contents != key.contents) return false;
+ if (!Util.safeEquals(fqn, key.fqn)) return false;
+
+ return true;
+ }
+
+ public int hashCode()
+ {
+ int hc = (contents != null ? contents.hashCode() : 1);
+ hc = 31 * hc + fqn.hashCode();
+ return hc;
+ }
+
+ public String toString()
+ {
+ return "NodeKey{" +
+ "contents=" + contents +
+ ", fqn=" + fqn +
+ '}';
+ }
+}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java 2008-11-19 19:01:18 UTC (rev 7171)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -22,9 +22,9 @@
package org.jboss.starobrno.tree;
import org.jboss.starobrno.Cache;
+import org.jboss.starobrno.CacheSPI;
import org.jboss.starobrno.atomic.AtomicMapCache;
import org.jboss.starobrno.batch.AutoBatchSupport;
-import org.jboss.starobrno.util.Util;
import java.util.HashMap;
import java.util.Map;
@@ -44,7 +44,7 @@
startAtomic();
try
{
- return cache.containsKey(new Key(f, Type.DATA)) && cache.containsKey(new Key(f, Type.STRUCTURE));
+ return cache.containsKey(new NodeKey(f, NodeKey.Type.DATA)) && cache.containsKey(new NodeKey(f, NodeKey.Type.STRUCTURE));
}
finally
{
@@ -61,17 +61,16 @@
if (!fqn.isRoot())
{
if (!exists(parent)) createNodeInCache(parent);
- Structure parentStructure = getStructure(parent);
- parentStructure.children.put(fqn.getLastElement(), fqn);
+ Map<Object, Fqn> parentStructure = getStructure(parent);
+ parentStructure.put(fqn.getLastElement(), fqn);
updateStructure(parent, parentStructure);
}
- Key dataKey = new Key(fqn, Type.DATA);
- Key structureKey = new Key(fqn, Type.STRUCTURE);
+ NodeKey dataKey = new NodeKey(fqn, NodeKey.Type.DATA);
+ NodeKey structureKey = new NodeKey(fqn, NodeKey.Type.STRUCTURE);
if (cache.containsKey(dataKey) && cache.containsKey(structureKey)) return;
- Structure s = new Structure();
- s.parent = fqn.getParent();
+ Map<Object, Fqn> structure = new HashMap<Object, Fqn>();
+ cache.put(structureKey, structure);
atomicMapCache.getAtomicMap(dataKey);
- cache.put(structureKey, s);
}
finally
{
@@ -79,64 +78,20 @@
}
}
- enum Type
+ Map<Object, Fqn> getStructure(Fqn fqn)
{
- DATA, STRUCTURE
+ return (Map<Object, Fqn>) cache.get(new NodeKey(fqn, NodeKey.Type.STRUCTURE));
}
- static class Key
+ void updateStructure(Fqn fqn, Map<Object, Fqn> structure)
{
- Type contents;
- Fqn fqn;
-
- Key(Fqn fqn, Type contents)
- {
- this.contents = contents;
- this.fqn = fqn;
- }
-
- public boolean equals(Object o)
- {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Key key = (Key) o;
-
- if (contents != key.contents) return false;
- if (!Util.safeEquals(fqn, key.fqn)) return false;
-
- return true;
- }
-
- public int hashCode()
- {
- int hc = (contents != null ? contents.hashCode() : 1);
- hc = 31 * hc + fqn.hashCode();
- return hc;
- }
-
- public String toString()
- {
- return "Key{" +
- "contents=" + contents +
- ", fqn=" + fqn +
- '}';
- }
+ cache.put(new NodeKey(fqn, NodeKey.Type.STRUCTURE), structure);
}
- static class Structure
+ public static boolean isLocked(Cache c, Fqn fqn)
{
- Map<Object, Fqn> children = new HashMap<Object, Fqn>();
- Fqn parent;
+ org.jboss.starobrno.lock.LockManager lockManager = ((CacheSPI) c).getLockManager();
+ return lockManager.isLocked(new NodeKey(fqn, NodeKey.Type.STRUCTURE)) &&
+ lockManager.isLocked(new NodeKey(fqn, NodeKey.Type.DATA));
}
-
- Structure getStructure(Fqn fqn)
- {
- return (Structure) cache.get(new Key(fqn, Type.STRUCTURE));
- }
-
- void updateStructure(Fqn fqn, Structure s)
- {
- cache.put(new Key(fqn, Type.STRUCTURE), s);
- }
}
Added: core/branches/flat/src/test/java/org/jboss/starobrno/tree/api/NodeLockSupport.java
===================================================================
--- core/branches/flat/src/test/java/org/jboss/starobrno/tree/api/NodeLockSupport.java (rev 0)
+++ core/branches/flat/src/test/java/org/jboss/starobrno/tree/api/NodeLockSupport.java 2008-11-19 20:16:57 UTC (rev 7172)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ */
+
+package org.jboss.starobrno.tree.api;
+
+import org.jboss.starobrno.Cache;
+import org.jboss.starobrno.CacheSPI;
+import org.jboss.starobrno.lock.LockManager;
+import org.jboss.starobrno.tree.Fqn;
+import org.jboss.starobrno.tree.TreeCache;
+import org.jboss.starobrno.tree.TreeStructureSupport;
+
+import javax.transaction.TransactionManager;
+
+public abstract class NodeLockSupport
+{
+ static final Fqn A = Fqn.fromString("/a"), B = Fqn.fromString("/b"), C = Fqn.fromString("/c"), D = Fqn.fromString("/d"), E = Fqn.fromString("/e");
+ static final Object k = "key", vA = "valueA", vB = "valueB", vC = "valueC", vD = "valueD", vE = "valueE";
+ static final Fqn A_B = Fqn.fromRelativeFqn(A, B);
+ static final Fqn A_B_C = Fqn.fromRelativeFqn(A_B, C);
+ static final Fqn A_B_C_E = Fqn.fromRelativeFqn(A_B_C, E);
+ static final Fqn A_B_D = Fqn.fromRelativeFqn(A_B, D);
+ static final Fqn C_E = Fqn.fromRelativeFqn(C, E);
+ static final Fqn D_B = Fqn.fromRelativeFqn(D, B);
+ static final Fqn D_B_C = Fqn.fromRelativeFqn(D_B, C);
+
+ protected ThreadLocal<Cache<Object, Object>> cacheTL = new ThreadLocal<Cache<Object, Object>>();
+ protected ThreadLocal<TransactionManager> tmTL = new ThreadLocal<TransactionManager>();
+ protected ThreadLocal<TreeCache> treeCacheTL = new ThreadLocal<TreeCache>();
+
+ protected void checkLocks()
+ {
+ Cache<Object, Object> cache = cacheTL.get();
+
+ assert !TreeStructureSupport.isLocked(cache, A);
+ assert !TreeStructureSupport.isLocked(cache, Fqn.ROOT);
+ assert TreeStructureSupport.isLocked(cache, C);
+ assert TreeStructureSupport.isLocked(cache, A_B);
+ assert TreeStructureSupport.isLocked(cache, A_B_C);
+ }
+
+ protected void checkLocksDeep()
+ {
+ Cache<Object, Object> cache = cacheTL.get();
+
+ assert !TreeStructureSupport.isLocked(cache, A);
+ assert !TreeStructureSupport.isLocked(cache, Fqn.ROOT);
+ assert !TreeStructureSupport.isLocked(cache, A_B_D);
+
+ assert TreeStructureSupport.isLocked(cache, C);
+ assert TreeStructureSupport.isLocked(cache, C_E);
+ assert TreeStructureSupport.isLocked(cache, A_B);
+ assert TreeStructureSupport.isLocked(cache, A_B_C);
+ assert TreeStructureSupport.isLocked(cache, A_B_C_E);
+ }
+
+ protected void assertNoLocks()
+ {
+ Cache<Object, Object> cache = cacheTL.get();
+ LockManager lm = ((CacheSPI) cache).getLockManager();
+ for (Object key : cache.keySet()) assert !lm.isLocked(key);
+ }
+}
More information about the jbosscache-commits
mailing list