From d8f4bd0d3642f33e1f92ab11f9ddc0c978c12c3b Mon Sep 17 00:00:00 2001 From: Timothy Date: Thu, 31 May 2018 16:53:18 +0200 Subject: [PATCH] #226 ReflectionEntityCoercion does not use the transformValueFor{Retrieval,Storage} --- .../gaelyk/datastore/ReflectionEntityCoercion.groovy | 7 +++++-- .../groovyx/gaelyk/extensions/DatastoreExtensions.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) mode change 100644 => 100755 core/src/main/groovyx/gaelyk/datastore/ReflectionEntityCoercion.groovy mode change 100644 => 100755 core/src/main/groovyx/gaelyk/extensions/DatastoreExtensions.java diff --git a/core/src/main/groovyx/gaelyk/datastore/ReflectionEntityCoercion.groovy b/core/src/main/groovyx/gaelyk/datastore/ReflectionEntityCoercion.groovy old mode 100644 new mode 100755 index 9c36b79a..a1193a84 --- a/core/src/main/groovyx/gaelyk/datastore/ReflectionEntityCoercion.groovy +++ b/core/src/main/groovyx/gaelyk/datastore/ReflectionEntityCoercion.groovy @@ -26,6 +26,9 @@ import com.google.appengine.api.datastore.Entities import com.google.appengine.api.datastore.Entity import com.google.appengine.api.datastore.EntityNotFoundException +import static groovyx.gaelyk.extensions.DatastoreExtensions.transformValueForRetrieval +import static groovyx.gaelyk.extensions.DatastoreExtensions.transformValueForStorage + /** * Utility class handling the POGO to Entity coercion, and Entity to POGO coercion as well. * @@ -175,7 +178,7 @@ class ReflectionEntityCoercion { props.each { String propName, PropertyDescriptor m -> if (propName != key && propName != parent) { if (!props[propName].ignore() && !props[propName].version() && !props[propName].parent()) { - def val = p.metaClass.getProperty(p, propName) + def val = transformValueForStorage(p.metaClass.getProperty(p, propName)) if (props[propName].unindexed()) { entity.setUnindexedProperty(propName, val) } else { @@ -212,7 +215,7 @@ class ReflectionEntityCoercion { entityProps.each { String k, v -> if (o.metaClass.hasProperty(o, k)) { try { - o[k] = v + o[k] = transformValueForRetrieval(v) } catch(ReadOnlyPropertyException rope){ // cannot set read only property! } diff --git a/core/src/main/groovyx/gaelyk/extensions/DatastoreExtensions.java b/core/src/main/groovyx/gaelyk/extensions/DatastoreExtensions.java old mode 100644 new mode 100755 index 92bfa6cb..d9b4ed23 --- a/core/src/main/groovyx/gaelyk/extensions/DatastoreExtensions.java +++ b/core/src/main/groovyx/gaelyk/extensions/DatastoreExtensions.java @@ -145,7 +145,7 @@ public static Object get(Entity entity, String name) { return transformValueForRetrieval(entity.getProperty(name)); } - static Object transformValueForRetrieval(Object value) { + public static Object transformValueForRetrieval(Object value) { return value instanceof Text ? ((Text) value).getValue() : value; }