Azure / Azure/azure-documentdb-java
Update using PoJo setters result in a "NullPointerException"
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Java
- Estrelas
- 51
- Forks
- 52
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
Hi
the todo tutorial show an "updateTodo" sample with the following comment:
// You can update the document as a JSON document directly.
// For more complex operations - you could de-serialize the document in
// to a POJO, update the POJO, and then re-serialize the POJO back in to
// a document.
I want to update my pojo using the java object (not the documentdb "Document" setters)
When I do that,
Document myDoc = getDocumentById(myId);
// De-serialize the document in to a TodoItem.
MyObject my = gson.fromJson(myDoc .toString(), MyObject.class);
LOG.debug("update object {}", my);
my.setName("IWantToUsePojoPlease");
Document updDocument = new Document(gson.toJson(my));
updDocument.setResourceId(myDoc.getResourceId());
updDocument.setId(myDoc.getId());
updDocument.set("entityType", ENTITY_TYPE);
try {
// Persist/replace the updated document.
updDocument = getDC().replaceDocument(updDocument, null).getResource();
I got the following error:
java.lang.NullPointerException
at com.microsoft.azure.documentdb.DocumentClient.trimBeginingAndEndingSlashes(DocumentClient.java:2160)
at com.microsoft.azure.documentdb.DocumentClient.joinPath(DocumentClient.java:2148)
at com.microsoft.azure.documentdb.DocumentClient.replaceDocument(DocumentClient.java:503)
I think this is a bug. Maybe the new Document instance loose the "_self"(SELF_LINK) reference and that's why the replace doesn't work. How could we keep this link ? Is it possible to fix this issue and add a second update sample using PoJo ?
If possible, I would like to avoid an update that will use Document.set(FIELD,VALUE) method but use PoJo (business) setters.
Regards
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece com DocumentClient.replaceDocument e as localizações do stack trace DocumentClient.java:2148 e :2160; em seguida, compare o Document original com o novo Document criado a partir do POJO. Verifique o exemplo updateTodo do tutorial de todo e determine como a substituição baseada em POJO deve preservar a referência de documento necessária. Está concluído quando a atualização não gerar mais a NullPointerException relatada e o exemplo explicar o workflow compatível.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- java
- Domínio
- databases
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100