summaryrefslogtreecommitdiff
path: root/src/main/java/com/amazon/carbonado/raw
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2008-04-19 20:59:33 +0000
committerBrian S. O'Neill <bronee@gmail.com>2008-04-19 20:59:33 +0000
commit487a17e439cf7ae75113ef796d8ee22d2a02f547 (patch)
treec669ed879a517ecb7e545c70bf8006dd9c537e7d /src/main/java/com/amazon/carbonado/raw
parentd05cb470b1dbe5681039e2aafda331a964535348 (diff)
Support layout changes when property @Name changes.
Diffstat (limited to 'src/main/java/com/amazon/carbonado/raw')
-rw-r--r--src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java26
-rw-r--r--src/main/java/com/amazon/carbonado/raw/StorablePropertyInfo.java5
2 files changed, 25 insertions, 6 deletions
diff --git a/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java b/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java
index 7cf3468..edb54d8 100644
--- a/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java
+++ b/src/main/java/com/amazon/carbonado/raw/GenericEncodingStrategy.java
@@ -48,6 +48,7 @@ import com.amazon.carbonado.info.ChainedProperty;
import com.amazon.carbonado.info.Direction;
import com.amazon.carbonado.info.OrderedProperty;
import com.amazon.carbonado.info.StorableIndex;
+import com.amazon.carbonado.info.StorableInfo;
import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.info.StorablePropertyAdapter;
@@ -2347,18 +2348,31 @@ public class GenericEncodingStrategy<S extends Storable> {
doDrop: {
Class instanceVarClass = instanceVarType.toClass();
if (instanceVarClass != null) {
- Map<String, BeanProperty> props =
- BeanIntrospector.getAllProperties(instanceVarClass);
- BeanProperty prop = props.get(info.getPropertyName());
- if (prop != null) {
- if (prop.getType() == type.toClass()) {
+ Class propertyClass;
+ {
+ Class inferredType = StorableIntrospector.inferType(instanceVarClass);
+ if (inferredType != null) {
+ StorableInfo propInfo = StorableIntrospector.examine(inferredType);
+ Map<String, StorableProperty> props = propInfo.getAllProperties();
+ StorableProperty prop = props.get(info.getPropertyName());
+ propertyClass = prop == null ? null : prop.getType();
+ } else {
+ Map<String, BeanProperty> props =
+ BeanIntrospector.getAllProperties(instanceVarClass);
+ BeanProperty prop = props.get(info.getPropertyName());
+ propertyClass = prop == null ? null : prop.getType();
+ }
+ }
+
+ if (propertyClass != null) {
+ if (propertyClass == type.toClass()) {
break doDrop;
}
// Types differ, but if primitive types, perform conversion.
TypeDesc primType = type.toPrimitiveType();
if (primType != null) {
- TypeDesc propType = TypeDesc.forClass(prop.getType());
+ TypeDesc propType = TypeDesc.forClass(propertyClass);
TypeDesc primPropType = propType.toPrimitiveType();
if (primPropType != null) {
// Apply conversion and store property.
diff --git a/src/main/java/com/amazon/carbonado/raw/StorablePropertyInfo.java b/src/main/java/com/amazon/carbonado/raw/StorablePropertyInfo.java
index e3a18b1..18db76b 100644
--- a/src/main/java/com/amazon/carbonado/raw/StorablePropertyInfo.java
+++ b/src/main/java/com/amazon/carbonado/raw/StorablePropertyInfo.java
@@ -129,4 +129,9 @@ public class StorablePropertyInfo implements GenericPropertyInfo {
getWriteMethodName(), null, new TypeDesc[] {getPropertyType()});
}
}
+
+ @Override
+ public String toString() {
+ return mProp.toString();
+ }
}