All methods like addStringProperty(), addNumberProperty(), getStringProperty()… don’t guard against a null properties field.
The “guard” is at a higher level, as using Feature static factory methods ensure that the properties field is never null.
However Feature.GsonTypeAdapter.read() directly calls the Feature constructor which doesn’t prevent a null properties field. So for example, if someone calls FeatureCollection.fromJson() which contains a feature that has a null properties field, it will be decoded by the GsonAdapter and then calling addStringProperty() on this feature will crash.
Small code sample to demonstrate that
public void addPropertyCrash() {
final String json = "{" +
"\"type\": \"FeatureCollection\"," +
"\"features\": [" +
"{" +
"\"type\": \"Feature\"," +
"\"properties\": null," +
"\"geometry\": null" +
"}" +
"]" +
"}";
FeatureCollection actual = FeatureCollection.fromJson(json);
actual.features().get(0).addStringProperty("key", "value");
}
All methods like
addStringProperty(),addNumberProperty(),getStringProperty()… don’t guard against a null properties field.The “guard” is at a higher level, as using Feature static factory methods ensure that the properties field is never null.
However
Feature.GsonTypeAdapter.read()directly calls the Feature constructor which doesn’t prevent a null properties field. So for example, if someone callsFeatureCollection.fromJson()which contains a feature that has a null properties field, it will be decoded by the GsonAdapter and then callingaddStringProperty()on this feature will crash.Small code sample to demonstrate that