[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