[exo-jcr-commits] exo-jcr SVN: r956 - jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Dec 9 04:06:55 EST 2009


Author: areshetnyak
Date: 2009-12-09 04:06:55 -0500 (Wed, 09 Dec 2009)
New Revision: 956

Modified:
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorage.java
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java
   jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java
Log:
EXOJCR-293 : Store the nodes id in attribute of node LOCKS. Theis is need for optimization the method getLocksData in JBossCacheStorageConnection.

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorage.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorage.java	2009-12-09 08:55:06 UTC (rev 955)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorage.java	2009-12-09 09:06:55 UTC (rev 956)
@@ -59,6 +59,8 @@
    public static final String USER_ID = "$userId".intern();
 
    public static final String LOCK_DATA = "$lock".intern();
+   
+   public static final String LOCK_NODE_ID = "$lockId".intern();
 
    protected final Node<Serializable, Object> nodesRoot;
 

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java	2009-12-09 08:55:06 UTC (rev 955)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java	2009-12-09 09:06:55 UTC (rev 956)
@@ -1312,7 +1312,21 @@
     */
    public List<LockData> getLocksData() throws RepositoryException
    {
-      Set<Node<Serializable, Object>> lockSet = locksRoot.getChildren()/*getNodes(locksRoot)*/; 
+//      Set<Node<Serializable, Object>> lockSet = getNodes(locksRoot);
+      
+      // TODO Store the id of nodes in attributes of node $Locks. EXOJCR-293
+      Set<Node<Serializable, Object>> lockSet = new HashSet<Node<Serializable,Object>>();
+      
+      for (Serializable nodeId : locksRoot.getKeys()) 
+      {
+         Node<Serializable, Object> node = locksRoot.getChild(makeNodeFqn((String) nodeId));
+         
+         if (node != null)
+         {
+            lockSet.add(node);
+         }
+      }
+      
       List<LockData> locksData = new ArrayList<LockData>();
       for (Node<Serializable, Object> node : lockSet)
       {
@@ -1348,7 +1362,7 @@
       
       for (Node<Serializable, Object> childNode : childNodes) 
       {
-         if (childNode.getChildrenNames().size() == 0)
+         if (childNode.isLeaf())
          {
             resultSet.add(childNode);
          } else 
@@ -1371,6 +1385,10 @@
       }
       // addChild will add if absent or return old if present
       Node<Serializable, Object> node = locksRoot.addChild(makeNodeFqn(lockData.getNodeIdentifier()));
+      
+      //TODO Need for optimization getLocksData. EXOJCR-293
+      locksRoot.put(lockData.getNodeIdentifier(), JBossCacheStorage.LOCK_NODE_ID);
+      
       // this will prevent from deleting by eviction.
       node.setResident(true);
 
@@ -1411,6 +1429,9 @@
          throw new RepositoryException("Item ID to clear lock can't be null!");
       }
       locksRoot.removeChild(makeNodeFqn(identifier));
+      
+      //TODO Need for optimization getLocksData. EXOJCR-293
+      locksRoot.remove(identifier);
    }
    
    /**

Modified: jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java	2009-12-09 08:55:06 UTC (rev 955)
+++ jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoader.java	2009-12-09 09:06:55 UTC (rev 956)
@@ -254,6 +254,10 @@
     */
    private void doUpdate(Modification m, JDBCStorageConnection conn) throws IllegalStateException, RepositoryException
    {
+      // TODO We not persist locks. EXOJCR-293
+      if (m.getFqn().get(0).equals(JBossCacheStorage.LOCKS)) 
+         return;
+      
       Fqn fqn = IdTreeHelper.buildFqn(m.getFqn());
 
       if (fqn.size() == 2 && m.getValue() instanceof TransientItemData)
@@ -490,6 +494,9 @@
     */
    public boolean exists(Fqn fqn) throws Exception
    {
+      if (fqn.get(0).equals(JBossCacheStorage.LOCKS) && IdTreeHelper.isSubFqn(fqn))
+         return false;
+      
       Fqn name = (fqn.size() > 1 ? IdTreeHelper.buildFqn(fqn) : fqn);
 
       boolean exists;
@@ -654,8 +661,8 @@
       // return child nodes names
 
       //to sub Fqn (example /$LOCKS/5/4/3) 
-      //      if (IdTreeHelper.isSubFqn(fqn))
-      //         return null;
+      if (IdTreeHelper.isSubFqn(fqn))
+         return null;
 
       Fqn name = (fqn.size() >= 2 ? IdTreeHelper.buildFqn(fqn) : fqn);
 



More information about the exo-jcr-commits mailing list