[exo-jcr-commits] exo-jcr SVN: r491 - in jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl: storage/jbosscache and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Nov 6 11:14:01 EST 2009


Author: tolusha
Date: 2009-11-06 11:14:01 -0500 (Fri, 06 Nov 2009)
New Revision: 491

Modified:
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java
Log:
EXOJCR-205: first implementation LockCacheLoader

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java	2009-11-06 16:02:42 UTC (rev 490)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java	2009-11-06 16:14:01 UTC (rev 491)
@@ -375,6 +375,7 @@
     * @seeorg.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener#onSaveItems(org.
     * exoplatform.services.jcr.dataflow.ItemStateChangesLog)
     */
+   @Deprecated
    public void onSaveItems(ItemStateChangesLog changesLog)
    {
       List<PlainChangesLog> chengesLogList = new ArrayList<PlainChangesLog>();
@@ -680,8 +681,10 @@
     * 
     * @param nodeIdentifier
     * @throws LockException
+    * 
+    * TODO: Changed from private to public. Need for LockCacheLoader.
     */
-   private synchronized void internalLock(String nodeIdentifier) throws LockException
+   public synchronized void internalLock(String nodeIdentifier) throws LockException
    {
       LockData ldata = pendingLocks.get(nodeIdentifier);
       if (ldata != null)
@@ -741,8 +744,10 @@
     * @param owner
     *          String
     * @return LockData
+    * 
+    *  TODO: Changed from private to public. Need for LockCacheLoader.
     */
-   private synchronized LockData createRemoteLock(String sessionId, String nodeIdentifier, String lockToken,
+   public synchronized LockData createRemoteLock(String sessionId, String nodeIdentifier, String lockToken,
       boolean isDeep, boolean sessionScoped, String owner)
    {
       LockData lData = new LockData(nodeIdentifier, lockToken, isDeep, sessionScoped, owner, lockTimeOut);
@@ -799,4 +804,12 @@
    {
       removeExpired();
    }
+
+   /**
+    * TODO: Added. Need for LockCacheLoader..
+    */
+   public boolean hasPendingLocks(String nodeIdentifier)
+   {
+      return pendingLocks.containsKey(nodeIdentifier);
+   }
 }

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java	2009-11-06 16:02:42 UTC (rev 490)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/LockCacheLoader.java	2009-11-06 16:14:01 UTC (rev 491)
@@ -16,9 +16,15 @@
  */
 package org.exoplatform.services.jcr.impl.storage.jbosscache;
 
+import org.exoplatform.services.jcr.datamodel.InternalQName;
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.lock.LockManager;
+import org.exoplatform.services.jcr.impl.core.lock.LockManagerImpl;
 import org.jboss.cache.CacheException;
 import org.jboss.cache.Modification;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -32,43 +38,78 @@
 public class LockCacheLoader extends AbstractWriteOnlyCacheLoader
 {
 
+   private LockManagerImpl lockManager;
+
    /**
     * {@inheritDoc}
     */
    @Override
    public void put(List<Modification> modifications) throws Exception
    {
+      LockChanges lockChanges = new LockChanges();
+
       for (Modification m : modifications)
       {
-         switch (m.getType())
+         // TODO $properties
+         if (m.getFqn().hasElement(JBossCacheStorage.PROPS))
          {
-            case PUT_DATA :
-               //               put(m.getFqn(), m.getData());
-               break;
-            case PUT_DATA_ERASE :
-               //               removeData(m.getFqn());
-               //               put(m.getFqn(), m.getData());
-               break;
-            case PUT_KEY_VALUE :
-               //               put(m.getFqn(), m.getKey(), m.getValue());
-               break;
-            case REMOVE_DATA :
-               //               removeData(m.getFqn());
-               break;
-            case REMOVE_KEY_VALUE :
-               //               remove(m.getFqn(), m.getKey());
-               break;
-            case REMOVE_NODE :
-               //               remove(m.getFqn());
-               break;
-            case MOVE :
-               // involve moving all children too
-               //               move(m.getFqn(), m.getFqn2());
-               break;
-            default :
-               throw new CacheException("Unknown modification " + m.getType());
+            switch (m.getType())
+            {
+               case PUT_DATA :
+                  break;
+               case PUT_KEY_VALUE :
+                  if (m.getKey().equals(JBossCacheStorage.ITEM_DATA))
+                  {
+                     PropertyData propertyData = (PropertyData)m.getValue();
+                     InternalQName propertyName = propertyData.getQPath().getName();
+
+                     if (propertyName.equals(Constants.JCR_LOCKISDEEP) || propertyName.equals(Constants.JCR_LOCKOWNER))
+                     {
+                     }
+                  }
+                  break;
+               case REMOVE_DATA :
+                  break;
+               case REMOVE_KEY_VALUE :
+                  break;
+               case REMOVE_NODE :
+                  break;
+               case MOVE :
+                  break;
+               default :
+                  throw new CacheException("Unknown modification " + m.getType());
+            }
          }
       }
    }
 
+   private void processLock()
+   {
+      //      String nodeIdentifier = data.getParentIdentifier();
+      //      if (lockManager.hasPendingLocks(nodeIdentifier))
+      //      {
+      //         lockManager.internalLock(nodeIdentifier);
+      //      }
+      //      else
+      //      {
+      //
+      //      }
+   }
+
+   private void processUnLock()
+   {
+
+   }
+
+   /**
+    * 
+    */
+   private class LockChanges
+   {
+      PropertyData lockIsDeepData;
+
+      PropertyData lockOwnerData;
+
+   }
+
 }



More information about the exo-jcr-commits mailing list