[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