package org.springframework.data.simpledb.core.entity; import java.io.Serializable; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import org.springframework.util.Assert; public abstract class AbstractSimpleFieldWrapper<T, ID extends Serializable> extends AbstractFieldWrapper<T, ID> { protected AbstractSimpleFieldWrapper(Field field, EntityWrapper<T, ID> parentWrapper, boolean isNewParent) { super(field, parentWrapper, isNewParent); } @Override public final Map<String, String> serialize(String prefix) { final Map<String, String> result = new HashMap<String, String>(); result.put(prefix.isEmpty() ? getFieldName() : prefix + "." + getFieldName(), serializeValue()); return result; } public abstract String serializeValue(); @Override public final Object deserialize(final Map<String, String> attributes) { Assert.isTrue(attributes.size() == 1); String attributeValue = attributes.values().iterator().next(); Assert.notNull(attributeValue); return deserializeValue(attributeValue); } public abstract Object deserializeValue(final String value); @Override public final void createInstance() { // Only applies to NestedEntities } }