From ef1f6c800faa642bf573b16d580af42a5ea3d861 Mon Sep 17 00:00:00 2001 From: Paul Warren Date: Wed, 12 Sep 2018 20:53:36 -0700 Subject: [PATCH] refetch entity after content modification operations when entity is @Versioned --- .../rest/controllers/ContentEntityRestController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spring-content-rest/src/main/java/internal/org/springframework/content/rest/controllers/ContentEntityRestController.java b/spring-content-rest/src/main/java/internal/org/springframework/content/rest/controllers/ContentEntityRestController.java index e6010b898..180f3d205 100644 --- a/spring-content-rest/src/main/java/internal/org/springframework/content/rest/controllers/ContentEntityRestController.java +++ b/spring-content-rest/src/main/java/internal/org/springframework/content/rest/controllers/ContentEntityRestController.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; +import javax.persistence.Version; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -178,6 +179,11 @@ public void putContent(HttpServletRequest request, HttpServletResponse response, info.getImpementation().setContent(domainObj, request.getInputStream()); + // re-fetch to make sure we have the latest + if (BeanUtils.hasFieldWithAnnotation(domainObj, Version.class)) { + domainObj = findOne(repositories, info.getDomainObjectClass(), id); + } + save(repositories, domainObj); if (isNew) { @@ -232,6 +238,11 @@ public void deleteContent(HttpServletResponse response, @PathVariable String sto info.getImpementation().unsetContent(domainObj); + // re-fetch to make sure we have the latest + if (BeanUtils.hasFieldWithAnnotation(domainObj, Version.class)) { + domainObj = findOne(repositories, info.getDomainObjectClass(), id); + } + if (BeanUtils.hasFieldWithAnnotation(domainObj, MimeType.class)) { BeanUtils.setFieldWithAnnotation(domainObj, MimeType.class, null); }