Author: nzamosenchuk
Date: 2011-04-28 04:31:16 -0400 (Thu, 28 Apr 2011)
New Revision: 4319
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java
Log:
EXOJCR-1319 : Check if node locked in CheckOut() also
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-04-27
14:26:02 UTC (rev 4318)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-04-28
08:31:16 UTC (rev 4319)
@@ -482,7 +482,7 @@
if (!checkLocking())
{
- throw new LockException("Node " + parent().getPath() + " is
locked ");
+ throw new LockException("Node " + getPath() + " is locked
");
}
// the new version identifier
@@ -531,6 +531,11 @@
"Node.checkout() is not supported for not mix:versionable node ");
}
+ if (!checkLocking())
+ {
+ throw new LockException("Node " + getPath() + " is locked
");
+ }
+
if (checkedOut())
{
return;
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 2011-04-27
14:26:02 UTC (rev 4318)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java 2011-04-28
08:31:16 UTC (rev 4319)
@@ -543,4 +543,37 @@
session1.logout();
}
+
+ public void testCheckOutWhenParentLocked() throws RepositoryException
+ {
+ // creating node that is going to be locked, adding a child also.
+
+ Session session1 = repository.login(new CredentialsImpl("root",
"exo".toCharArray()), "ws");
+ Node lockedNodeSession1 =
session1.getRootNode().addNode("testCheckOutWhenParentLocked");
+ lockedNodeSession1.addMixin("mix:lockable");
+ lockedNodeSession1.addMixin("mix:versionable");
+ session1.save();
+ lockedNodeSession1.checkin();
+ // locking it
+ lockedNodeSession1.lock(false, false);
+ session1.save();
+ assertTrue(lockedNodeSession1.isLocked());
+
+ Node lockedNode =
session.getRootNode().getNode("testCheckOutWhenParentLocked");
+
+ try
+ {
+ lockedNode.checkout();
+ fail("Lock exeption should be thrown");
+ }
+ catch (LockException e)
+ {
+ // it's okey
+ }
+
+ lockedNodeSession1.checkout();
+ session1.save();
+
+ session1.logout();
+ }
}
Show replies by date