BATCH-1566: fix dirty flag on ExecutionContext
This commit is contained in:
@@ -125,12 +125,13 @@ public class ExecutionContext implements Serializable {
|
||||
public void put(String key, Object value) {
|
||||
if (value != null) {
|
||||
Assert.isInstanceOf(Serializable.class, value, "Value: [ " + value + "must be serializable.");
|
||||
map.put(key, value);
|
||||
Object result = map.put(key, value);
|
||||
dirty = result==null || result!=null && !result.equals(value);
|
||||
}
|
||||
else {
|
||||
map.remove(key);
|
||||
Object result = map.remove(key);
|
||||
dirty = result!=null;
|
||||
}
|
||||
dirty = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -89,6 +89,25 @@ public class ExecutionContextTests {
|
||||
assertFalse(context.isDirty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotDirtyWithDuplicate() {
|
||||
context.putString("1", "test");
|
||||
assertTrue(context.isDirty());
|
||||
context.clearDirtyFlag();
|
||||
context.putString("1", "test");
|
||||
assertFalse(context.isDirty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotDirtyWithRemoveMissing() {
|
||||
context.putString("1", "test");
|
||||
assertTrue(context.isDirty());
|
||||
context.putString("1", null); // remove an item that was present
|
||||
assertTrue(context.isDirty());
|
||||
context.putString("1", null); // remove a non-existent item
|
||||
assertFalse(context.isDirty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContains() {
|
||||
context.putString("1", "testString");
|
||||
|
||||
Reference in New Issue
Block a user