diff --git a/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java b/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java index 9770687d8edb2db1283f40f3de4165bf7dce9f18..30558a8d15ecf5c3d94dde5444b2a1de4220a709 100644 --- a/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java +++ b/lc-eo-changestream/src/main/java/lc/eo/changestream/ChangeStream.java @@ -9,11 +9,24 @@ import java.io.Serializable; import java.util.HashSet; public class ChangeStream implements EditTracker { + private int changeNumber; private final HashSet objectsDirty = new HashSet<>(); private final HashSet loopsDirty = new HashSet<>(); private final HashSet objectsRemoved = new HashSet<>(); private final HashSet objectsAdded = new HashSet<>(); + public void commit() { + objectsDirty.clear(); + loopsDirty.clear(); + objectsRemoved.clear(); + objectsAdded.clear(); + changeNumber++; + } + + public int getChangeNumber() { + return changeNumber; + } + @Override public void attributeUpdate(EO eo, String key, Serializable oldValue, Serializable newValue, EOListener listener) { if (objectsAdded.contains(eo)) return; diff --git a/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java b/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java index d227e1bbc7c6b2bf7e70cc790604a062c07ba84c..e9fdef578229ef1512be5020172e365b0a0333ff 100644 --- a/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java +++ b/lc-eo-changestream/src/test/java/lc/eo/changestream/ChangeStreamTest.java @@ -15,4 +15,14 @@ public class ChangeStreamTest { assertEquals(0, cs.getObjectsDirty().size()); assertEquals(1, cs.getObjectsAdded().size()); } + + @Test + public void testChangeNumber() { + ChangeStream cs = new ChangeStream(); + EO base = new EO(); + base.setEditTracker(cs); + assertEquals(0, cs.getChangeNumber()); + cs.commit(); + assertEquals(1, cs.getChangeNumber()); + } }