Author: sergiykarpenko
Date: 2010-02-19 11:57:53 -0500 (Fri, 19 Feb 2010)
New Revision: 1930
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractSessionLockManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/SessionLockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableSessionLockManager.java
Log:
EXOJCR-531: LockException on adding new subnodes fixed
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractSessionLockManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractSessionLockManager.java 2010-02-19
15:25:19 UTC (rev 1929)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/AbstractSessionLockManager.java 2010-02-19
16:57:53 UTC (rev 1930)
@@ -19,6 +19,7 @@
package org.exoplatform.services.jcr.impl.core.lock;
import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.impl.core.NodeImpl;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import javax.jcr.RepositoryException;
@@ -47,9 +48,27 @@
*/
protected abstract boolean isLockedPersisted(NodeData node) throws LockException;
+ protected abstract boolean isPersitedLockHolder(NodeImpl node) throws
RepositoryException;
+
/**
* {@inheritDoc}
*/
+ public boolean isLockHolder(NodeImpl node) throws RepositoryException
+ {
+ //check is parent node also new
+ if (transientManager.isNew(node.getIdentifier()) &&
transientManager.isNew(node.getParentIdentifier()))
+ {
+ return true;
+ }
+ else
+ {
+ return isPersitedLockHolder(node);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
public boolean isLocked(NodeData data) throws LockException
{
if (transientManager.isNew(data.getIdentifier()))
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/SessionLockManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/SessionLockManagerImpl.java 2010-02-19
15:25:19 UTC (rev 1929)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/SessionLockManagerImpl.java 2010-02-19
16:57:53 UTC (rev 1930)
@@ -94,7 +94,7 @@
/**
* {@inheritDoc}
*/
- public boolean isLockHolder(NodeImpl node) throws RepositoryException
+ protected boolean isPersitedLockHolder(NodeImpl node) throws RepositoryException
{
return lockManager.isLockHolder(node);
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableSessionLockManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableSessionLockManager.java 2010-02-19
15:25:19 UTC (rev 1929)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableSessionLockManager.java 2010-02-19
16:57:53 UTC (rev 1930)
@@ -87,7 +87,8 @@
* @param sessionID - session identifier
* @param lockManager - workspace lock manager
*/
- public CacheableSessionLockManager(String sessionID, CacheableLockManager lockManager,
SessionDataManager transientManager)
+ public CacheableSessionLockManager(String sessionID, CacheableLockManager
lockManager,
+ SessionDataManager transientManager)
{
super(transientManager);
this.sessionID = sessionID;
@@ -207,7 +208,7 @@
/**
* {@inheritDoc}
*/
- public boolean isLockHolder(NodeImpl node) throws RepositoryException
+ protected boolean isPersitedLockHolder(NodeImpl node) throws RepositoryException
{
//TODO optimise it
LockData lData =
lockManager.getExactNodeOrCloseParentLock((NodeData)node.getData());
Show replies by date