From eafdc4771ebf5f88bd71362df4e9815cec754b5c Mon Sep 17 00:00:00 2001 From: Willie Wheeler Date: Tue, 14 Jan 2014 09:59:37 +0100 Subject: [PATCH] DATAREST-130 - Support nulling out properties when doing HTTP PUTs. --- .../rest/core/support/DomainObjectMerger.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/support/DomainObjectMerger.java b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/support/DomainObjectMerger.java index 79ab65e56..ed2e5e6e1 100644 --- a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/support/DomainObjectMerger.java +++ b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/support/DomainObjectMerger.java @@ -63,11 +63,16 @@ public class DomainObjectMerger { * @see org.springframework.data.mapping.SimplePropertyHandler#doWithPersistentProperty(org.springframework.data.mapping.PersistentProperty) */ @Override - public void doWithPersistentProperty(PersistentProperty property) { - - Object fromVal = fromWrapper.getProperty(property); - if (null != fromVal && !fromVal.equals(targetWrapper.getProperty(property))) { - targetWrapper.setProperty(property, fromVal); + public void doWithPersistentProperty(PersistentProperty persistentProperty) { + Object fromVal = fromWrapper.getProperty(persistentProperty); + + // Support PUTting null property values per DATAREST-130. + boolean mergeProperty = + !entity.isIdProperty(persistentProperty) + && (fromVal == null || !fromVal.equals(targetWrapper.getProperty(persistentProperty))); + + if (mergeProperty) { + targetWrapper.setProperty(persistentProperty, fromVal); } } });