[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