Author: tolusha
Date: 2009-11-10 02:27:27 -0500 (Tue, 10 Nov 2009)
New Revision: 531
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoaderTest.java
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/TesterLockManagerImpl.java
Log:
EXOJCR-205: test added
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java 2009-11-09
17:45:28 UTC (rev 530)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java 2009-11-10
07:27:27 UTC (rev 531)
@@ -110,7 +110,8 @@
else if (lockChanges.get(0).getType() ==
ModificationType.REMOVE_KEY_VALUE
&& lockChanges.get(1).getType() ==
ModificationType.REMOVE_KEY_VALUE)
{
- performUnLock(lockChanges, sessionId);
+ PropertyData propertyData =
(PropertyData)lockChanges.get(0).getOldValue();
+ performUnLock(lockChanges, sessionId,
propertyData.getParentIdentifier());
}
else
{
@@ -275,12 +276,11 @@
}
}
- private void performUnLock(List<Modification> lockChanges, String sessionId)
+ private void performUnLock(List<Modification> lockChanges, String sessionId,
String nodeIdentifier)
{
- // TODO parent nodeIdentifier
try
{
- lockManager.internalUnLock(sessionId, "nodeIdentifier");
+ lockManager.internalUnLock(sessionId, nodeIdentifier);
}
catch (LockException e)
{
Modified:
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java 2009-11-09
17:45:28 UTC (rev 530)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/AbstractCacheLoaderTest.java 2009-11-10
07:27:27 UTC (rev 531)
@@ -141,4 +141,8 @@
return list;
}
+ public Modification removeSession()
+ {
+ return new Modification(ModificationType.REMOVE_DATA, Fqn.fromString("/"
+ JBossCacheStorage.SESSION));
+ }
}
Modified:
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoaderTest.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoaderTest.java 2009-11-09
17:45:28 UTC (rev 530)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoaderTest.java 2009-11-10
07:27:27 UTC (rev 531)
@@ -32,6 +32,7 @@
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
+import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.jboss.cache.Modification;
@@ -53,7 +54,7 @@
public class LockCacheLoaderTest extends AbstractCacheLoaderTest
{
- private LockManagerImpl lockManager;
+ private TesterLockManagerImpl lockManager;
private LockCacheLoader lockCacheLoader;
@@ -64,29 +65,62 @@
public void setUp() throws Exception
{
- this.valueFactory = new ValueFactoryImpl(new LocationFactory(new
NamespaceRegistryImpl()));
this.lockManager = new TesterLockManagerImpl();
this.lockCacheLoader = new LockCacheLoader(lockManager);
}
public void testLock() throws Exception
{
- List<Modification> modifcations = new ArrayList<Modification>();
- String parentIdentifier = IdGenerator.generate();
+ List<Modification> modifications = new ArrayList<Modification>();
+ String nodeIdentifier = IdGenerator.generate();
+ String sessionId = IdGenerator.generate();
- TransientPropertyData propertyData =
+ TransientPropertyData lockIsDeepData =
new TransientPropertyData(QPath.makeChildPath(testRoot,
Constants.JCR_LOCKISDEEP), IdGenerator.generate(), 1,
- PropertyType.BOOLEAN, parentIdentifier, false);
+ PropertyType.BOOLEAN, nodeIdentifier, false);
+ TransientValueData lockIsDeepValue = new TransientValueData(false);
+ lockIsDeepData.setValue(lockIsDeepValue);
- propertyData =
+ TransientPropertyData lockOwnerData =
new TransientPropertyData(QPath.makeChildPath(testRoot,
Constants.JCR_LOCKOWNER), IdGenerator.generate(), 1,
- PropertyType.BOOLEAN, parentIdentifier, false);
+ PropertyType.BOOLEAN, nodeIdentifier, false);
+ TransientValueData lockOwner = new TransientValueData("__system");
+ lockOwnerData.setValue(lockOwner);
- modifcations.add(addProperty(propertyData));
+ modifications.addAll(setSession(sessionId, "userId"));
+ modifications.add(addProperty(lockIsDeepData));
+ modifications.add(addProperty(lockOwnerData));
+ modifications.add(removeSession());
+ lockCacheLoader.put(modifications);
+
+ assertEquals(nodeIdentifier, lockManager.getNodeIdentifier());
}
public void testUnLock() throws Exception
{
+ List<Modification> modifications = new ArrayList<Modification>();
+ String nodeIdentifier = IdGenerator.generate();
+ String sessionId = IdGenerator.generate();
+ TransientPropertyData lockIsDeepData =
+ new TransientPropertyData(QPath.makeChildPath(testRoot,
Constants.JCR_LOCKISDEEP), IdGenerator.generate(), 1,
+ PropertyType.BOOLEAN, nodeIdentifier, false);
+ TransientValueData lockIsDeepValue = new TransientValueData(false);
+ lockIsDeepData.setValue(lockIsDeepValue);
+
+ TransientPropertyData lockOwnerData =
+ new TransientPropertyData(QPath.makeChildPath(testRoot,
Constants.JCR_LOCKOWNER), IdGenerator.generate(), 1,
+ PropertyType.BOOLEAN, nodeIdentifier, false);
+ TransientValueData lockOwner = new TransientValueData("__system");
+ lockOwnerData.setValue(lockOwner);
+
+ modifications.addAll(setSession(sessionId, "userId"));
+ modifications.add(removeProperty(lockIsDeepData));
+ modifications.add(removeProperty(lockOwnerData));
+ modifications.add(removeSession());
+ lockCacheLoader.put(modifications);
+
+ assertEquals(nodeIdentifier, lockManager.getNodeIdentifier());
+ assertEquals(sessionId, lockManager.getSessionid());
}
}
Modified:
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/TesterLockManagerImpl.java
===================================================================
---
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/TesterLockManagerImpl.java 2009-11-09
17:45:28 UTC (rev 530)
+++
jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/TesterLockManagerImpl.java 2009-11-10
07:27:27 UTC (rev 531)
@@ -20,6 +20,8 @@
import org.exoplatform.services.jcr.impl.core.lock.LockManagerImpl;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
+import javax.jcr.lock.LockException;
+
/**
* Created by The eXo Platform SAS.
*
@@ -31,6 +33,10 @@
public class TesterLockManagerImpl extends LockManagerImpl
{
+ private String nodeIdentifier;
+
+ private String sessionId;
+
public TesterLockManagerImpl(WorkspacePersistentDataManager dataManager,
WorkspaceEntry config)
{
super(dataManager, config);
@@ -40,4 +46,32 @@
{
this(null, null);
}
+
+ /**
+ * Internal lock
+ */
+ public synchronized void internalLock(String nodeIdentifier) throws LockException
+ {
+ this.nodeIdentifier = nodeIdentifier;
+ }
+
+ /**
+ * Internal lock
+ */
+ public synchronized void internalUnLock(String nodeIdentifier, String sessionId)
throws LockException
+ {
+ this.nodeIdentifier = nodeIdentifier;
+ this.sessionId = sessionId;
+ }
+
+ public String getNodeIdentifier()
+ {
+ return nodeIdentifier;
+ }
+
+ public String getSessionid()
+ {
+ return sessionId;
+ }
+
}