Closed
Description
It puts it in the new document, then reads that document into readEntity, then sets it again in readEntity.
public <T> T decodeEntityBase(String id, String source, long cas, Class<T> entityClass,
TransactionResultHolder txResultHolder) {
final CouchbaseDocument converted = new CouchbaseDocument(id);
converted.setId(id);
CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(entityClass);
if (cas != 0 && persistentEntity.getVersionProperty() != null) {
converted.put(persistentEntity.getVersionProperty().getName(), cas);
}
T readEntity = converter.read(entityClass, (CouchbaseDocument) translationService.decode(source, converted));
final ConvertingPropertyAccessor<T> accessor = getPropertyAccessor(readEntity);
if (persistentEntity.getVersionProperty() != null) {
accessor.setProperty(persistentEntity.getVersionProperty(), cas);
}
if (persistentEntity.transactionResultProperty() != null) {
accessor.setProperty(persistentEntity.transactionResultProperty(), System.identityHashCode(txResultHolder));
}
N1qlJoinResolver.handleProperties(persistentEntity, accessor, getReactiveTemplate(), id);
return accessor.getBean();
}