[exo-jcr-commits] exo-jcr SVN: r2462 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr: impl/core and 1 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Jun 3 11:50:49 EDT 2010
Author: sergiykarpenko
Date: 2010-06-03 11:50:48 -0400 (Thu, 03 Jun 2010)
New Revision: 2462
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPath.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPathEntry.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
Log:
EXOJCR-392: EXOJCR-392 and EXOJCR-766 changes reverted
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPath.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPath.java 2010-06-03 15:06:43 UTC (rev 2461)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPath.java 2010-06-03 15:50:48 UTC (rev 2462)
@@ -176,7 +176,7 @@
for (int i = 0; i < ancestorNames.length; i++)
{
- if (!names[i].equals(ancestorNames[i]))
+ if (!ancestorNames[i].equals(names[i]))
return false;
}
return true;
@@ -239,7 +239,7 @@
}
/**
- * @return last QPathEntry of this path
+ * @return last name of this path
*/
public InternalQName getName()
{
@@ -247,7 +247,7 @@
}
/**
- * @return index of last QPathEntry of this paths
+ * @return index
*/
public int getIndex()
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPathEntry.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPathEntry.java 2010-06-03 15:06:43 UTC (rev 2461)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/QPathEntry.java 2010-06-03 15:50:48 UTC (rev 2462)
@@ -158,18 +158,4 @@
return getAsString(true);
}
- @Override
- public boolean equals(Object o)
- {
- boolean result = super.equals(o);
-
- if (result == true && (o instanceof QPathEntry))
- {
- return result && (index == ((QPathEntry)o).getIndex());
- }
- else
- {
- return result;
- }
- }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2010-06-03 15:06:43 UTC (rev 2461)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2010-06-03 15:50:48 UTC (rev 2462)
@@ -2393,14 +2393,18 @@
NodeData nodeData = siblings.get(i);
if (srcInd == -1)
{
- if (nodeData.getQPath().getName().equals(srcPath.getName()))
+ if (nodeData.getQPath().getName().equals(srcPath.getName())
+ && (nodeData.getQPath().getIndex() == srcPath.getIndex() || srcPath.getIndex() == 0
+ && nodeData.getQPath().getIndex() == 1))
{
srcInd = i;
}
}
if (destPath != null && destInd == -1)
{
- if (nodeData.getQPath().getName().equals(destPath.getName()))
+ if (nodeData.getQPath().getName().equals(destPath.getName())
+ && (nodeData.getQPath().getIndex() == destPath.getIndex() || destPath.getIndex() == 0
+ && nodeData.getQPath().getIndex() == 1))
{
destInd = i;
if (srcInd != -1)
@@ -2462,7 +2466,7 @@
NodeData sdata = siblings.get(j);
// calculating same name index
- if (sdata.getQPath().getName().getAsString().equals(srcPath.getName().getAsString()))
+ if (sdata.getQPath().getName().equals(srcPath.getName()))
++sameNameIndex;
// skeep unchanged
@@ -2471,8 +2475,7 @@
NodeData newData = sdata;
// change same name index
- if (sdata.getQPath().getName().getAsString().equals(srcPath.getName().getAsString())
- && sdata.getQPath().getIndex() != sameNameIndex)
+ if (sdata.getQPath().getName().equals(srcPath.getName()) && sdata.getQPath().getIndex() != sameNameIndex)
{
// update with new index
QPath siblingPath =
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2010-06-03 15:06:43 UTC (rev 2461)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2010-06-03 15:50:48 UTC (rev 2462)
@@ -25,7 +25,6 @@
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.dataflow.ItemStateChangesLog;
import org.exoplatform.services.jcr.dataflow.persistent.WorkspaceStorageCache;
-import org.exoplatform.services.jcr.datamodel.IllegalPathException;
import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.datamodel.NodeData;
@@ -903,9 +902,15 @@
.getIdentifier());
// remove from CHILD_NODES as parent
- cache.removeNode(makeChildListFqn(childNodes, item.getIdentifier()));
+ Fqn<String> parentFqn = makeChildListFqn(childNodes, item.getIdentifier());
+ Node<Serializable, Object> parent = cache.getNode(parentFqn);
+ if (parent != null && parent.isLeaf())
+ {
+ cache.removeNode(parentFqn);
+ }
// remove from CHILD_NODES_LIST as parent
+
cache.removeNode(makeChildListFqn(childNodesList, item.getIdentifier()));
// remove from CHILD_PROPS as parent
@@ -1009,87 +1014,11 @@
int prevNodeIndex = prevNode.getQPath().getEntries()[prevNode.getQPath().getEntries().length - 1].getIndex();
if (nodeIndex != prevNodeIndex)
{
- // its a samename reordering
- updateTreePath(prevNode.getQPath(), node.getQPath(), null); // don't change ACL, it's same parent
+ updateTreePath(node.getIdentifier(), node.getQPath(), null); // don't change ACL, it's same parent
}
}
/**
- * Check all items in cache - is it descendant of prevRootPath, and update path according newRootPath.
- *
- * @param prevRootPath
- * @param newRootPath
- * @param acl
- */
- protected void updateTreePath(final QPath prevRootPath, final QPath newRootPath, final AccessControlList acl)
- {
- boolean inheritACL = acl != null;
-
- // check all ITEMS in cache
- Node<Serializable, Object> items = cache.getNode(itemsRoot);
- Set<Object> childrenNames = items.getChildrenNames();
- Iterator<Object> namesIt = childrenNames.iterator();
-
- while (namesIt.hasNext())
- {
- String id = (String)namesIt.next();
- ItemData data = (ItemData)cache.get(makeItemFqn(id), ITEM_DATA);
-
- // check is this descendant of prevRootPath
- QPath nodeQPath = data.getQPath();
- if (nodeQPath.isDescendantOf(prevRootPath))
- {
-
- //make relative path
- QPathEntry[] relativePath = null;
- try
- {
- relativePath = nodeQPath.getRelPath(nodeQPath.getDepth() - prevRootPath.getDepth());
- }
- catch (IllegalPathException e)
- {
- // Do nothing. Never happens.
- }
-
- // make new path - no matter node or property
- QPath newPath = QPath.makeChildPath(newRootPath, relativePath);
-
- if (data.isNode())
- {
- // update node
-
- NodeData prevNode = (NodeData)data;
-
- TransientNodeData newNode =
- new TransientNodeData(newPath, prevNode.getIdentifier(), prevNode.getPersistedVersion(), prevNode
- .getPrimaryTypeName(), prevNode.getMixinTypeNames(), prevNode.getOrderNumber(), prevNode
- .getParentIdentifier(), inheritACL ? acl : prevNode.getACL()); // TODO check ACL
- // update this node
- cache.put(makeItemFqn(newNode.getIdentifier()), ITEM_DATA, newNode);
- }
- else
- {
- //update property
-
- PropertyData prevProp = (PropertyData)data;
-
- if (inheritACL
- && (prevProp.getQPath().getName().equals(Constants.EXO_PERMISSIONS) || prevProp.getQPath().getName()
- .equals(Constants.EXO_OWNER)))
- {
- inheritACL = false;
- }
-
- TransientPropertyData newProp =
- new TransientPropertyData(newPath, prevProp.getIdentifier(), prevProp.getPersistedVersion(), prevProp
- .getType(), prevProp.getParentIdentifier(), prevProp.isMultiValued(), prevProp.getValues());
- cache.put(makeItemFqn(newProp.getIdentifier()), ITEM_DATA, newProp);
- }
- }
- }
- }
-
- /**
* Update Nodes tree with new path.
*
* @param parentId String - root node id of JCR subtree.
More information about the exo-jcr-commits
mailing list