Author: sergiykarpenko
Date: 2009-11-25 11:29:28 -0500 (Wed, 25 Nov 2009)
New Revision: 869
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
16:18:09 UTC (rev 868)
+++
jcr/branches/1.12.0-JBC/component/core/src/main/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JBossCacheStorageConnection.java 2009-11-25
16:29:28 UTC (rev 869)
@@ -659,19 +659,29 @@
// remove node form old parent child list
// 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)
+ Fqn<String> prevPath =
+
makeChildNodeFqn(prevData.getQPath().getEntries()[prevData.getQPath().getEntries().length
- 1]);
+ Node<Serializable, Object> prevNameNode = prevParent.getChild(prevPath);
+ if (prevNameNode != null)
{
- if (!((String)cNode.get(ITEM_ID)).equals(prevData.getIdentifier()))
+ String prevNameNodeId = (String)prevNameNode.get(ITEM_ID);
+ if (prevNameNodeId != null)
{
- LOG.warn(" Node was updated before " + prevData.getQPath());
+ if (prevNameNodeId.equals(data.getIdentifier()))
+ {
+ // it's same-name siblings re-ordering, delete previous child
+ if (!prevParent.removeChild(prevPath))
+ {
+ if (!prevParent.removeChild(prevNameNode.getFqn().getLastElement()))
+ throw new RepositoryException("FATAL Node was not removed from
list of parent node "
+ + prevData.getQPath().getAsString() + ". Node " +
data.getQPath().getAsString());
+ }
+ } // else ok
}
- else if (!prevParent.removeChild(cNode.getFqn().getLastElement()))
+ else
{
- throw new RepositoryException("FATAL Node was not removed from list of
parent node "
- + prevData.getQPath().getAsString() + ". Node " +
data.getQPath().getAsString());
+ throw new RepositoryException("FATAL Child Node extists but ITEM_ID is
empty " + prevNameNode.getFqn()
+ + ". Rename of " + data.getQPath().getAsString());
}
}
else
Show replies by date