Change theme
Help
Press space for more information.
Show links for this issue (Shortcut: i, l)
Copy issue ID
Previous Issue (Shortcut: k)
Next Issue (Shortcut: j)
Sign in to use full features.
Vote: I am impacted
Notification menu
Refresh (Shortcut: Shift+r)
Go home (Shortcut: u)
Pending code changes (auto-populated)
View issue level access limits(Press Alt + Right arrow for more information)
Unintended behavior
View staffing
Description
Version used: 1.0.0-alpha01
Devices/Android versions reproduced on: N/A
putAll(Map) javadoc states:
> Any non-valid types will be logged and ignored. Valid types are: Boolean, Integer, Long, Double, String, and array versions of
> each of those types.
However, the implementation does not log and ignore invalid types, it throws an exception:
} else {
throw new IllegalArgumentException(
String.format("Key %s has invalid type %s", key, valueType));
}
Additionally the note about `null` values is misleading (or wrong):
> Any {@code null} values will also be ignored.
But if the value is null, it actually explicitly puts null (which would overwrite the value if one previously existed):
if (value == null) {
mValues.put(key, null);
continue;
}
With the javadoc explaining that it will be ignored, I expect it not to remove a previously valid value from the map -- but current implementation will.
Data data = new Data.Builder()
.putString("Hello", "World")
.putAll(Collections.singletonMap("Hello", null))
.build();
// fails because ["Hello"] has been replaced with null => defaults to "none"
assertThat(data.getString("Hello", "none")).isEqualTo("World");