[exo-jcr-commits] exo-jcr SVN: r1398 - jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Jan 14 12:11:59 EST 2010
Author: sergiykarpenko
Date: 2010-01-14 12:11:58 -0500 (Thu, 14 Jan 2010)
New Revision: 1398
Modified:
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheLockImpl.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheableLockManager.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/LockData.java
Log:
EXOJCR-332: CacheableLockManager fixes
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheLockImpl.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheLockImpl.java 2010-01-14 17:07:20 UTC (rev 1397)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheLockImpl.java 2010-01-14 17:11:58 UTC (rev 1398)
@@ -16,19 +16,13 @@
*/
package org.exoplatform.services.jcr.impl.core.lock.cache;
-import java.util.ArrayList;
+import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.lock.LockImpl;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.lock.LockException;
-import org.exoplatform.services.jcr.dataflow.ItemState;
-import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl;
-import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
-import org.exoplatform.services.jcr.impl.core.SessionImpl;
-import org.exoplatform.services.jcr.impl.core.lock.LockImpl;
-import org.exoplatform.services.jcr.observation.ExtendedEvent;
-
/**
* Created by The eXo Platform SAS.
*
@@ -40,11 +34,11 @@
public class CacheLockImpl extends LockImpl
{
private boolean live;
-
+
private LockData lockData;
private SessionImpl session;
-
+
private CacheableLockManager lockManager;
public CacheLockImpl(SessionImpl session, LockData lockData, CacheableLockManager lockManager)
@@ -61,9 +55,8 @@
public String getLockToken()
{
- //TODO
- //return lockData.getLockToken(session.getId());
- return null;
+ // TODO
+ return lockData.getToken();
}
public boolean isLive()
@@ -94,12 +87,12 @@
if (!isLive())
throw new LockException("Lock is not live");
- LockData newLockData = new LockData(lockData.getNodeIdentifier(), lockData.getToken(), lockData.isDeep(), lockData
- .isSessionScoped(), lockData.getOwner(), lockData.getTimeOut());
-
+ LockData newLockData =
+ new LockData(lockData.getNodeIdentifier(), lockData.getToken(), lockData.isDeep(), lockData.isSessionScoped(),
+ lockData.getOwner(), lockData.getTimeOut());
+
lockManager.refresh(newLockData);
-
- this.lockData = newLockData;
+ lockData = newLockData;
}
public Node getNode()
@@ -133,8 +126,17 @@
protected void setTimeOut(long timeOut)
{
- // TODO make same as refresh
- //lockData.setTimeOut(timeOut);
+ lockData.setTimeOut(timeOut);
+ //reset lock data
+ try
+ {
+ lockManager.refresh(lockData);
+ }
+ catch (LockException e)
+ {
+ // TODO remove or change this
+ e.printStackTrace();
+ }
}
}
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheableLockManager.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheableLockManager.java 2010-01-14 17:07:20 UTC (rev 1397)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/CacheableLockManager.java 2010-01-14 17:11:58 UTC (rev 1398)
@@ -867,10 +867,13 @@
lockRoot.removeChild(Fqn.fromString(nodeIdentifier));
// remove session holder
- lockTokenHolders.get(sessionId).remove(lData.getToken());
- if (lockTokenHolders.get(sessionId).size() == 0)
+ if (lockTokenHolders.containsKey(sessionId))
{
- lockTokenHolders.remove(sessionId);
+ lockTokenHolders.get(sessionId).remove(lData.getToken());
+ if (lockTokenHolders.get(sessionId).size() == 0)
+ {
+ lockTokenHolders.remove(sessionId);
+ }
}
}
}
@@ -933,7 +936,7 @@
}
catch (RepositoryException e)
{
- log.error("Error occur during removing lock" + e.getLocalizedMessage());
+ log.error("Error occur during removing lock" + e.getLocalizedMessage(), e);
}
}
@@ -964,8 +967,25 @@
*
* @param newLockData
*/
- public void refresh(LockData newLockData)
+ public void refresh(LockData newLockData) throws LockException
{
- lockRoot.addChild(Fqn.fromString(newLockData.getNodeIdentifier()));
+ //first look pending locks
+ if (pendingLocks.containsKey(newLockData.getNodeIdentifier()))
+ {
+ pendingLocks.put(newLockData.getNodeIdentifier(), newLockData);
+ }
+ else
+ {
+ Fqn<String> id = Fqn.fromString(newLockData.getNodeIdentifier());
+ if (lockRoot.hasChild(id))
+ {
+ lockRoot.addChild(id);
+ }
+ else
+ {
+ throw new LockException("Can't refresh lock for node " + newLockData.getNodeIdentifier()
+ + " since lock is not exist");
+ }
+ }
}
}
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/LockData.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/LockData.java 2010-01-14 17:07:20 UTC (rev 1397)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cache/LockData.java 2010-01-14 17:11:58 UTC (rev 1398)
@@ -235,4 +235,9 @@
return timeOut;
}
+ public void setTimeOut(long timeOut)
+ {
+ this.timeOut = timeOut;
+ }
+
}
More information about the exo-jcr-commits
mailing list