[exo-jcr-commits] exo-jcr SVN: r1270 - in jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/core/query/lucene and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Jan 4 07:11:29 EST 2010


Author: skabashnyuk
Date: 2010-01-04 07:11:29 -0500 (Mon, 04 Jan 2010)
New Revision: 1270

Modified:
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexUpdateMonitor.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java
Log:
EXOJCR-331 : Added locks

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexUpdateMonitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexUpdateMonitor.java	2010-01-04 11:33:34 UTC (rev 1269)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexUpdateMonitor.java	2010-01-04 12:11:29 UTC (rev 1270)
@@ -69,32 +69,57 @@
 
    }
 
-   public boolean lock(String name, LockType lockType) throws InterruptedException
+   /**
+    * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#getUpdateInProgress()
+    */
+   public boolean getUpdateInProgress()
    {
-      LockManager lm = ((CacheSPI<Serializable, Object>)cache).getComponentRegistry().getComponent(LockManager.class);
-      return lm.lock(Fqn.fromRelativeFqn(PARAMETER_ROOT, Fqn.fromString(name)), lockType, Integer.MAX_VALUE);
+      Object value = cache.get(PARAMETER_ROOT, PARAMETER_NAME);
+      return value != null ? (Boolean)value : false;
    }
 
-   public void unlock(String name)
+   /**
+    *  Returns true if the node is locked (either for reading or writing) by anyone, and false otherwise.
+    * @param name
+    * @return
+    */
+   public boolean isLocked(String name)
    {
       LockManager lm = ((CacheSPI<Serializable, Object>)cache).getComponentRegistry().getComponent(LockManager.class);
-      lm.unlock(Fqn.fromRelativeFqn(PARAMETER_ROOT, Fqn.fromString(name)), cache.getInvocationContext()
-         .getGlobalTransaction());
+      return lm.isLocked(Fqn.fromRelativeFqn(PARAMETER_ROOT, Fqn.fromString(name)));
    }
 
-   public boolean isLocked(String name)
+   /**
+    *  Acquires a lock of type lockType, for a given owner
+    * @param name
+    * @param lockType
+    * @return
+    * @throws InterruptedException
+    */
+   public boolean lock(String name, LockType lockType)
    {
+
       LockManager lm = ((CacheSPI<Serializable, Object>)cache).getComponentRegistry().getComponent(LockManager.class);
-      return lm.isLocked(Fqn.fromRelativeFqn(PARAMETER_ROOT, Fqn.fromString(name)));
+      try
+      {
+         return lm.lock(Fqn.fromRelativeFqn(PARAMETER_ROOT, Fqn.fromString(name)), lockType, Integer.MAX_VALUE);
+      }
+      catch (InterruptedException e)
+      {
+         // TODO Auto-generated catch block
+         e.printStackTrace();
+      }
+      return false;
    }
 
    /**
-    * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#getUpdateInProgress()
+    * Sets {@link IndexerIoMode} to indexInfos;
+    * @param ioMode
+    * @throws IOException 
     */
-   public boolean getUpdateInProgress()
+   public void setIoMode(IndexerIoMode ioMode) throws IOException
    {
-      Object value = cache.get(PARAMETER_ROOT, PARAMETER_NAME);
-      return value != null ? (Boolean)value : false;
+      this.ioMode = ioMode;
    }
 
    /**
@@ -107,7 +132,7 @@
          throw new IllegalStateException("Unable to set updateInProgress value in IndexerIoMode.READ_ONLY mode");
       }
 
-      log.info("setUpdateInProgress=" + updateInProgress);
+      //      log.info("setUpdateInProgress=" + updateInProgress);
       TransactionManager tm = ((CacheSPI<Serializable, Object>)cache).getTransactionManager();
       try
       {
@@ -145,12 +170,13 @@
    }
 
    /**
-    * Sets {@link IndexerIoMode} to indexInfos;
-    * @param ioMode
-    * @throws IOException 
+    * Releases the lock passed in
+    * @param name
     */
-   public void setIoMode(IndexerIoMode ioMode) throws IOException
+   public void unlock(String name)
    {
-      this.ioMode = ioMode;
+      LockManager lm = ((CacheSPI<Serializable, Object>)cache).getComponentRegistry().getComponent(LockManager.class);
+      lm.unlock(Fqn.fromRelativeFqn(PARAMETER_ROOT, Fqn.fromString(name)), cache.getInvocationContext()
+         .getGlobalTransaction());
    }
 }

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java	2010-01-04 11:33:34 UTC (rev 1269)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DefaultIndexUpdateMonitor.java	2010-01-04 12:11:29 UTC (rev 1270)
@@ -19,6 +19,7 @@
 package org.exoplatform.services.jcr.impl.core.query.lucene;
 
 import org.exoplatform.services.jcr.impl.core.query.IndexerIoMode;
+import org.jboss.cache.lock.LockType;
 
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -70,4 +71,27 @@
       this.ioMode = ioMode;
    }
 
+   /**
+    * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#unlock(java.lang.String)
+    */
+   public void unlock(String name)
+   {
+   }
+
+   /**
+    * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#lock(java.lang.String, org.jboss.cache.lock.LockType)
+    */
+   public boolean lock(String name, LockType lockType)
+   {
+      return false;
+   }
+
+   /**
+    * @see org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor#isLocked(java.lang.String)
+    */
+   public boolean isLocked(String name)
+   {
+      return false;
+   }
+
 }

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java	2010-01-04 11:33:34 UTC (rev 1269)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/IndexUpdateMonitor.java	2010-01-04 12:11:29 UTC (rev 1270)
@@ -19,6 +19,7 @@
 package org.exoplatform.services.jcr.impl.core.query.lucene;
 
 import org.exoplatform.services.jcr.impl.core.query.IndexerIoMode;
+import org.jboss.cache.lock.LockType;
 
 import java.io.IOException;
 
@@ -46,4 +47,26 @@
     */
    public void setIoMode(IndexerIoMode ioMode) throws IOException;
 
+   /**
+    *  Returns true if the node is locked (either for reading or writing) by anyone, and false otherwise.
+    * @param name
+    * @return
+    */
+   public boolean isLocked(String name);
+
+   /**
+    *  Acquires a lock of type lockType, for a given owner
+    * @param name
+    * @param lockType
+    * @return
+    * @throws InterruptedException
+    */
+   public boolean lock(String name, LockType lockType);
+
+   /**
+    * Releases the lock passed in
+    * @param name
+    */
+   public void unlock(String name);
+
 }
\ No newline at end of file

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java	2010-01-04 11:33:34 UTC (rev 1269)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/lab/cluster/prepare/TestIndexUpdateMonitor.java	2010-01-04 12:11:29 UTC (rev 1270)
@@ -22,6 +22,7 @@
 
 import org.exoplatform.services.jcr.impl.core.query.IndexerIoMode;
 import org.exoplatform.services.jcr.impl.core.query.jbosscache.JbossCacheIndexUpdateMonitor;
+import org.exoplatform.services.jcr.impl.core.query.lucene.IndexUpdateMonitor;
 import org.exoplatform.services.log.ExoLogger;
 import org.exoplatform.services.log.Log;
 import org.jboss.cache.Cache;
@@ -47,7 +48,7 @@
     */
    private final Log log = ExoLogger.getLogger(TestIndexUpdateMonitor.class);
 
-   private JbossCacheIndexUpdateMonitor indexUpdateMonitor;
+   private IndexUpdateMonitor indexUpdateMonitor;
 
    private Cache<Serializable, Object> cache;
 
@@ -157,32 +158,23 @@
       /**
        * @param indexUpdateMonitor
        */
-      public LockChecker(JbossCacheIndexUpdateMonitor indexUpdateMonitor, String lockName)
+      public LockChecker(IndexUpdateMonitor indexUpdateMonitor, String lockName)
       {
          super();
          this.indexUpdateMonitor = indexUpdateMonitor;
          this.lockName = lockName;
       }
 
-      private final JbossCacheIndexUpdateMonitor indexUpdateMonitor;
+      private final IndexUpdateMonitor indexUpdateMonitor;
 
       /**
        * @see java.lang.Runnable#run()
        */
       public void run()
       {
-         // TODO Auto-generated method stub
-         try
-         {
-            waiting = true;
-            assertTrue(indexUpdateMonitor.lock(lockName, LockType.WRITE));
-            waiting = false;
-         }
-         catch (InterruptedException e)
-         {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-         }
+         waiting = true;
+         assertTrue(indexUpdateMonitor.lock(lockName, LockType.WRITE));
+         waiting = false;
       }
    }
 



More information about the exo-jcr-commits mailing list