In Cosmos v2 API, I am able to get Resource from azure.docuemntdb.docuemnt.getResource() and from there _ts of the docuemnt, and also _ts is part of response headers. But in v4 api with readItem or replaceItem APIs, I am not seeing any option to get _ts value from CosmosItemResponse Object. Can anyone help me resolve this.
Note: I am facing this problem for java sdk v4 Async API. I tried using "x-ms-last-state-change-utc" but it's not the _ts timesamp of the updated document.
SAMPLE CODE:
public double updatePerson(Person p) {
Mono<CosmosItemResponse<Person>> responseFlux = container.readItem(p.getId(), new PartitionKey(p.getPersonId()), Person.class);
double responsePersonReplaced = 0;
Person responsePerson = responseFlux.log().flatMap(x-> {
Person iP = x.getItem();
iP.seteTag(x.getResponseHeaders().get("etag"));
return Mono.just(iP);
}).block();
p.seteTag(responsePerson.geteTag());
CosmosItemRequestOptions cosmosItemRequestOptions = new CosmosItemRequestOptions();
cosmosItemRequestOptions.setIfMatchETag(responsePerson.geteTag());
try {
Mono<CosmosItemResponse<Person>> repalcedFlux = container.replaceItem(p, p.getId(),new PartitionKey(p.getPersonId()), cosmosItemRequestOptions);
responsePersonReplaced = repalcedFlux.log().flatMap(x-> {
try {
return Mono.just(DateUtils.parseDate(x.getResponseHeaders().get("x-ms-last-state-change-utc"), "EEE, d MMM yyyy HH:mm:ss.SSS z").getTime());
} catch (ParseException e) {
e.printStackTrace();
return Mono.empty();
}
}).block();
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
}
return responsePersonReplaced;
}