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);
- }
- }
}
}
}
Show replies by date