diff --git a/src/main/java/io/ebean/common/AbstractBeanCollection.java b/src/main/java/io/ebean/common/AbstractBeanCollection.java index 8f6e4bf2c..456993b6d 100644 --- a/src/main/java/io/ebean/common/AbstractBeanCollection.java +++ b/src/main/java/io/ebean/common/AbstractBeanCollection.java @@ -47,8 +47,7 @@ abstract class AbstractBeanCollection implements BeanCollection { protected ModifyHolder modifyHolder; protected ModifyListenMode modifyListenMode; - protected boolean modifyAddListening; - protected boolean modifyRemoveListening; + protected boolean modifyListening; /** @@ -148,9 +147,7 @@ abstract class AbstractBeanCollection implements BeanCollection { public void setModifyListening(ModifyListenMode mode) { this.modifyListenMode = mode; - this.modifyAddListening = ModifyListenMode.ALL.equals(mode); - this.modifyRemoveListening = modifyAddListening || ModifyListenMode.REMOVALS.equals(mode); - this.modifyListening = modifyRemoveListening || modifyAddListening; + this.modifyListening = mode != null && ModifyListenMode.NONE != mode; if (modifyListening) { // lose any existing modifications modifyHolder = null; @@ -173,19 +170,15 @@ abstract class AbstractBeanCollection implements BeanCollection { @Override public void modifyAddition(E bean) { - if (modifyAddListening) { + if (modifyListening) { getModifyHolder().modifyAddition(bean); - } else if (modifyRemoveListening) { - getModifyHolder().undoDeletion(bean); } } @Override public void modifyRemoval(Object bean) { - if (modifyRemoveListening) { + if (modifyListening) { getModifyHolder().modifyRemoval(bean); - } else if (modifyAddListening) { - getModifyHolder().undoAddition(bean); } } diff --git a/src/main/java/io/ebean/common/ModifyHolder.java b/src/main/java/io/ebean/common/ModifyHolder.java index e618ac0bc..1e4008c32 100644 --- a/src/main/java/io/ebean/common/ModifyHolder.java +++ b/src/main/java/io/ebean/common/ModifyHolder.java @@ -44,10 +44,10 @@ class ModifyHolder implements Serializable { } } - boolean undoDeletion(E bean) { + private boolean undoDeletion(E bean) { return (bean != null) && modifyDeletions.remove(bean); } - + void modifyAddition(E bean) { if (bean != null) { // If it is to delete then just remove the deletion @@ -58,10 +58,10 @@ class ModifyHolder implements Serializable { } } - boolean undoAddition(Object bean) { + private boolean undoAddition(Object bean) { return (bean != null) && modifyAdditions.remove(bean); } - + @SuppressWarnings("unchecked") void modifyRemoval(Object bean) { if (bean != null) {