Azure / Azure/azure-documentdb-java
Update using PoJo setters result in a "NullPointerException"
- Lingua principale
- Java
- Stelle
- 51
- Fork
- 52
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Hi
the [todo tutorial](https://azure.microsoft.com/en-us/documentation/articles/documentdb-java-application/#UseService) 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
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia da DocumentClient.replaceDocument e dalle posizioni dello stack trace DocumentClient.java:2148 e :2160, quindi confronta il Document originale con il nuovo Document creato dal POJO. Controlla l’esempio updateTodo del tutorial todo e determina in che modo la sostituzione basata su POJO dovrebbe preservare il riferimento al documento richiesto. Il lavoro è completo quando l’aggiornamento non solleva più la NullPointerException segnalata e l’esempio spiega il workflow supportato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- databases
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100