[services-geojson] NullPointerException in Feature.addXxxProperty() or getXxxProperty() methods

Aberta
#1,527 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
45/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
java
Domínio
backend

Direção de pesquisa

Comece em Feature.GsonTypeAdapter.read(), que é alcançado por meio de FeatureCollection.fromJson(), e examine como um campo properties nulo chega a Feature.addStringProperty() e aos métodos add/get relacionados. Verifique se o exemplo de JSON de FeatureCollection fornecido não causa mais uma NullPointerException quando uma propriedade é adicionada.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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");
}
Linguagem predominante
Java
Estrelas
438
Forks
117
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de mapbox/mapbox-java

Todas as issues de mapbox/mapbox-java

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.