@Override public Map<String, AttributeValue> convert(Object object) { if (object == null) { return null; } Class<Object> clazz = (Class<Object>)object.getClass(); Map<String, AttributeValue> result = new HashMap<String, AttributeValue>(); for (final Bean<Object,Object> bean : StandardBeanProperties.of(clazz).map().values()) { Object getterResult = bean.reflect().get(object); if (getterResult != null) { AttributeValue value = convert(bean.type().getter(), getterResult); if (value != null) { result.put(bean.properties().attributeName(), value); } } } return result; }
private TableBuilder(Class<T> clazz, Beans<T> beans, RuleFactory<Object> rules) { super(clazz, beans.properties()); for (final Bean<T,Object> bean : beans.map().values()) { try { with(new FieldBuilder<T,Object>(clazz, bean, rules.getRule(bean.type())).build()); } catch (final RuntimeException e) { throw new DynamoDBMappingException(String.format( "%s[%s] could not be mapped for type %s", clazz.getSimpleName(), bean.properties().attributeName(), bean.type() ), e); } } }
@Override public <T> T unconvert( Class<T> clazz, Map<String, AttributeValue> value) { T result = createObject(clazz); if (value == null || value.isEmpty()) { return result; } for (final Bean<T,Object> bean : StandardBeanProperties.of(clazz).map().values()) { AttributeValue av = value.get(bean.properties().attributeName()); if (av != null) { ArgumentUnmarshaller unmarshaller = getUnmarshaller(bean.type().getter(), bean.type().setter()); Object unmarshalled = unmarshall(unmarshaller, bean.type().setter(), av); bean.reflect().set(result, unmarshalled); } } return result; }
@Override public Map<String, AttributeValue> convert(Object object) { if (object == null) { return null; } Class<Object> clazz = (Class<Object>)object.getClass(); Map<String, AttributeValue> result = new HashMap<String, AttributeValue>(); for (final Bean<Object,Object> bean : StandardBeanProperties.of(clazz).map().values()) { Object getterResult = bean.reflect().get(object); if (getterResult != null) { AttributeValue value = convert(bean.type().getter(), getterResult); if (value != null) { result.put(bean.properties().attributeName(), value); } } } return result; }
@Override public <T> T unconvert( Class<T> clazz, Map<String, AttributeValue> value) { T result = createObject(clazz); if (value == null || value.isEmpty()) { return result; } for (final Bean<T,Object> bean : StandardBeanProperties.of(clazz).map().values()) { AttributeValue av = value.get(bean.properties().attributeName()); if (av != null) { ArgumentUnmarshaller unmarshaller = getUnmarshaller(bean.type().getter(), bean.type().setter()); Object unmarshalled = unmarshall(unmarshaller, bean.type().setter(), av); bean.reflect().set(result, unmarshalled); } } return result; }
private TableBuilder(Class<T> clazz, Beans<T> beans, RuleFactory<Object> rules) { super(clazz, beans.properties()); for (final Bean<T,Object> bean : beans.map().values()) { try { with(new FieldBuilder<T,Object>(clazz, bean, rules.getRule(bean.type())).build()); } catch (final RuntimeException e) { throw new DynamoDBMappingException(String.format( "%s[%s] could not be mapped for type %s", clazz.getSimpleName(), bean.properties().attributeName(), bean.type() ), e); } } }
final Method getter() { return bean.type().getter(); } final boolean isPrimaryKey() {
private Field(final Class<T> type, final Bean<T,V> bean) { if (bean.type().typeConverter() == null) { this.converter = StandardTypeConverters.factory().getConverter(String.class, bean.type().targetType()); } else { this.converter = bean.type().<String>typeConverter(); } this.bean = bean; } private final String get(final T object) {
final Method getter() { return bean.type().getter(); } final boolean isPrimaryKey() {
private Field(final Class<T> type, final Bean<T,V> bean) { if (bean.type().typeConverter() == null) { this.converter = StandardTypeConverters.factory().getConverter(String.class, bean.type().targetType()); } else { this.converter = bean.type().<String>typeConverter(); } this.bean = bean; } private final String get(final T object) {