[exo-jcr-commits] exo-jcr SVN: r3298 - in jcr/trunk/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/api/lock and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Oct 19 04:11:38 EDT 2010


Author: tolusha
Date: 2010-10-19 04:11:37 -0400 (Tue, 19 Oct 2010)
New Revision: 3298

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
   jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java
Log:
JCR-1482: Fix issue when after restarting JCR doesn't retrieve all lock data from DB. After restarting server node will remain locked as expected.

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java	2010-10-15 14:52:04 UTC (rev 3297)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java	2010-10-19 08:11:37 UTC (rev 3298)
@@ -1065,7 +1065,7 @@
       {
          public List<LockData> execute(Object arg) throws LockException
          {
-            Set<Object> nodesId = cache.getChildrenNames(lockRoot);
+            Set<Object> nodesId = ((CacheSPI<Serializable, Object>)cache).getNode(lockRoot).getChildrenNamesDirect();
 
             List<LockData> locksData = new ArrayList<LockData>();
             for (Object nodeId : nodesId)

Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java	2010-10-15 14:52:04 UTC (rev 3297)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java	2010-10-19 08:11:37 UTC (rev 3298)
@@ -42,6 +42,7 @@
 
    private Node lockedNode = null;
 
+   @Override
    public void setUp() throws Exception
    {
 
@@ -428,4 +429,26 @@
       assertFalse(childLockNode.isLocked());
 
    }
+
+   /**
+    * Test indicate if locked node after restarting still locked. 
+    */
+   public void testLockWithoutDBClean() throws Exception
+   {
+      String locNodeName = "TestLockNode";
+      if (session.getRootNode().hasNode(locNodeName))
+      {
+         Node node = session.getRootNode().getNode(locNodeName);
+         assertTrue(node.isLocked());
+      }
+      else
+      {
+         Node node = session.getRootNode().addNode(locNodeName);
+         node.addMixin("mix:lockable");
+         session.save();
+
+         node.lock(false, true);
+      }
+   }
+
 }



More information about the exo-jcr-commits mailing list