Azure / Azure/azure-documentdb-java

Update using PoJo setters result in a "NullPointerException"

Aperta
#24 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.