[exo-jcr-commits] exo-jcr SVN: r3723 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Dec 24 02:24:21 EST 2010
Author: dkuleshov
Date: 2010-12-24 02:24:21 -0500 (Fri, 24 Dec 2010)
New Revision: 3723
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java
Log:
EXOJCR-1120: changes log traversing optimized
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java 2010-12-23 21:26:50 UTC (rev 3722)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java 2010-12-24 07:24:21 UTC (rev 3723)
@@ -204,16 +204,24 @@
private void traverseChangesByIdentifier(String identifier, List<ItemState> changesList)
{
- for (int i = 0, length = items.size(); i < length; i++)
+ ItemState item = getItemState(identifier);
+ if (item != null)
{
- ItemState item = items.get(i);
- if (item.getData().getIdentifier().equals(identifier))
+ changesList.add(item);
+ Map<String, ItemState> children = lastChildPropertyStates.get(identifier);
+ if (children != null)
{
- changesList.add(item);
+ // Add all the properties
+ changesList.addAll(children.values());
}
- else if (item.getData().getParentIdentifier().equals(identifier))
+ children = lastChildNodeStates.get(identifier);
+ if (children != null)
{
- traverseChangesByIdentifier(item.getData().getIdentifier(), changesList);
+ // Recursively call the method traverseChangesByIdentifier(String identifier, List<ItemState> changesList) for each sub node
+ for (ItemState child : children.values())
+ {
+ traverseChangesByIdentifier(child.getData().getIdentifier(), changesList);
+ }
}
}
}
@@ -226,17 +234,27 @@
*/
public void eraseEventFire(String identifier)
{
- for (int i = 0, length = items.size(); i < length; i++)
+ ItemState item = getItemState(identifier);
+ if (item != null)
{
- ItemState item = items.get(i);
- if (item.getData().getIdentifier().equals(identifier))
+ item.eraseEventFire();
+ Map<String, ItemState> children = lastChildPropertyStates.get(identifier);
+ if (children != null)
{
- // erase flag
- item.eraseEventFire();
+ // Call the method ItemState.eraseEventFire() on each properties
+ for (ItemState child : children.values())
+ {
+ child.eraseEventFire();
+ }
}
- else if (item.getData().getParentIdentifier().equals(identifier))
+ children = lastChildNodeStates.get(identifier);
+ if (children != null)
{
- eraseEventFire(item.getData().getIdentifier());
+ // Recursively call the method eraseEventFire(String identifier) for each sub node
+ for (ItemState child : children.values())
+ {
+ eraseEventFire(child.getData().getIdentifier());
+ }
}
}
}
More information about the exo-jcr-commits
mailing list