Author: sergiykarpenko
Date: 2009-11-25 10:27:16 -0500 (Wed, 25 Nov 2009)
New Revision: 867
Modified:
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java
Log:
EXOJCR-199: remove perviousData from parent child list updated
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-11-25
15:24:48 UTC (rev 866)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java 2009-11-25
15:27:16 UTC (rev 867)
@@ -657,9 +657,25 @@
}
// remove node form old parent child list
- if (!prevParent
-
.removeChild(makeChildNodeFqn(prevData.getQPath().getEntries()[prevData.getQPath().getEntries().length
- 1])))
+ // TODO node may me renamed before (using update) so name in list of parent may
link to another node
+ // may be there is sence left node without linking in list of parent child nodes.
(check it in update)
+ Node<Serializable, Object> cNode =
+ prevParent
+
.getChild(makeChildNodeFqn(prevData.getQPath().getEntries()[prevData.getQPath().getEntries().length
- 1]));
+ if (cNode != null)
{
+ if (!((String)cNode.get(ITEM_ID)).equals(prevData.getIdentifier()))
+ {
+ LOG.warn(" Node was updated before " + prevData.getQPath());
+ }
+ else if (!prevParent.removeChild(cNode))
+ {
+ throw new RepositoryException("FATAL Node was not removed from list of
parent node "
+ + prevData.getQPath().getAsString() + ". Node " +
data.getQPath().getAsString());
+ }
+ }
+ else
+ {
throw new RepositoryException("FATAL Node doesn't listed in children
nodes of previous parent "
+ prevData.getQPath().getAsString() + ". Node " +
data.getQPath().getAsString());
}
Show replies by date