[exo-jcr-commits] exo-jcr SVN: r4687 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: dataflow/session and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Jul 28 09:07:42 EDT 2011
Author: tolusha
Date: 2011-07-28 09:07:41 -0400 (Thu, 28 Jul 2011)
New Revision: 4687
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/SessionDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
Log:
EXOJCR-1452: fix bugs
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 2011-07-28 09:07:13 UTC (rev 4686)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-07-28 13:07:41 UTC (rev 4687)
@@ -3627,10 +3627,15 @@
Collections.sort(storedNodes, new NodeDataOrderComparator());
int size = storedNodes.size();
+
+ fromOrderNum =
+ size == 0 ? fromOrderNum + limit : Math.max(fromOrderNum + limit, storedNodes.get(size - 1)
+ .getOrderNumber() + 1);
+
+
+ // skip some nodes
if (size != 0)
{
- fromOrderNum = storedNodes.get(size - 1).getOrderNumber() + 1;
-
while (skip > 0 && storedNodes.size() > 0)
{
storedNodes.remove(0);
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2011-07-28 09:07:13 UTC (rev 4686)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2011-07-28 13:07:41 UTC (rev 4687)
@@ -985,31 +985,20 @@
{
NodeData data = (NodeData)state.getData();
+ // we have only last states, so remove nodes first
+ descendants.remove(data.getIdentifier());
+
if ((state.isAdded() || state.isRenamed()) && !hasNext)
{
descendants.put(data.getIdentifier(), data);
}
- else if (state.isDeleted())
+ else if (state.isMixinChanged() || state.isUpdated())
{
- descendants.remove(data.getIdentifier());
- }
- else if (state.isMixinChanged())
- {
- NodeData removedData = descendants.remove(data.getIdentifier());
- if (removedData != null)
+ if (minOrderNum <= data.getOrderNumber() && data.getOrderNumber() <= maxOrderNum)
{
descendants.put(data.getIdentifier(), data);
}
}
- else if (state.isUpdated())
- {
- NodeData removedData = descendants.remove(data.getIdentifier());
- if (removedData != null && minOrderNum <= data.getOrderNumber()
- && data.getOrderNumber() <= maxOrderNum)
- {
- descendants.put(data.getIdentifier(), data);
- }
- }
}
childs.clear();
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java 2011-07-28 09:07:13 UTC (rev 4686)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java 2011-07-28 13:07:41 UTC (rev 4687)
@@ -132,22 +132,14 @@
{
childs.remove(data);
}
- else if (state.isMixinChanged())
+ else if (state.isMixinChanged() || state.isUpdated())
{
- boolean isExists = childs.remove(state.getData());
- if (isExists)
+ childs.remove(state.getData());
+ if (minOrderNum <= data.getOrderNumber() && data.getOrderNumber() <= maxOrderNum)
{
childs.add(data);
}
}
- else if (state.isUpdated())
- {
- boolean isExists = childs.remove(state.getData());
- if (isExists && minOrderNum <= data.getOrderNumber() && data.getOrderNumber() <= maxOrderNum)
- {
- childs.add(data);
- }
- }
}
}
}
More information about the exo-jcr-commits
mailing list