From 588452cd46404d78721aab6f93a97453cd3cb8df Mon Sep 17 00:00:00 2001 From: aleigh Date: Mon, 20 Jun 2022 18:15:12 -0700 Subject: [PATCH] lc-eo-changestream: Added change number tracking --- .../main/java/lc/eo/changestream/ChangeStream.java | 13 +++++++++++++ .../java/lc/eo/changestream/ChangeStreamTest.java | 10 ++++++++++ 2 files changed, 23 insertions(+) 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 9770687d8..30558a8d1 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 d227e1bbc..e9fdef578 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()); + } } -- GitLab