Fix issue where FeatureFlags were triggering listeners for non-changes.

fork-5.53.8
Greyson Parrelli 2020-11-16 11:27:58 -05:00
rodzic f1e5206f56
commit 51d47adf57
2 zmienionych plików z 8 dodań i 1 usunięć

Wyświetl plik

@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.TimeUnit;
@ -388,7 +389,7 @@ public final class FeatureFlags {
changes.put(key, Change.REMOVED);
} else if (newValue != oldValue && newValue instanceof Boolean) {
changes.put(key, (boolean) newValue ? Change.ENABLED : Change.DISABLED);
} else if (newValue != oldValue) {
} else if (!Objects.equals(oldValue, newValue)) {
changes.put(key, Change.CHANGED);
}
}

Wyświetl plik

@ -390,6 +390,8 @@ public class FeatureFlagsTest extends BaseUnitTest {
put("d", false);
put("g", 5);
put("h", 5);
put("i", new String("parker")); // Need to use new String to avoid interning string constants
put("j", "gwen");
}};
Map<String, Object> newMap = new HashMap<String, Object>() {{
@ -399,6 +401,8 @@ public class FeatureFlagsTest extends BaseUnitTest {
put("e", true);
put("f", false);
put("h", 7);
put("i", new String("parker")); // Need to use new String to avoid interning string constants
put("j", "stacy");
}};
Map<String, Change> changes = FeatureFlags.computeChanges(oldMap, newMap);
@ -410,6 +414,8 @@ public class FeatureFlagsTest extends BaseUnitTest {
assertEquals(Change.ENABLED, changes.get("e"));
assertEquals(Change.DISABLED, changes.get("f"));
assertEquals(Change.CHANGED, changes.get("h"));
assertFalse(changes.containsKey("i"));
assertEquals(Change.CHANGED, changes.get("j"));
}
private static <V> Set<V> setOf(V... values) {