Skip to content

AbstractTemplateSupport.decodeEntityBase() saves version property twice (?) #1263

Closed
@mikereiche

Description

@mikereiche

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();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: declinedA suggestion or change that we don't feel we should currently apply

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions