Here you can find the source of toSimpleList(List
AttributeValue
into a list of simple values.
public static List<Object> toSimpleList(List<AttributeValue> attrValues)
//package com.java2s; /*//from w ww. j a v a 2 s .c o m * Copyright 2014-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import static com.amazonaws.util.BinaryUtils.copyAllBytesFrom; import java.math.BigDecimal; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import com.amazonaws.services.dynamodbv2.model.AttributeValue; public class Main { /** * Converts a list of low-level <code>AttributeValue</code> into a list of * simple values. Each value in the returned list can be one of the * followings: * * <ul> * <li>String</li> * <li>Set<String></li> * <li>Number (including any subtypes and primitive types)</li> * <li>Set<Number></li> * <li>byte[]</li> * <li>Set<byte[]></li> * <li>ByteBuffer</li> * <li>Set<ByteBuffer></li> * <li>Boolean or boolean</li> * <li>null</li> * <li>Map<String,T>, where T can be any type on this list but must not * induce any circular reference</li> * <li>List<T>, where T can be any type on this list but must not induce * any circular reference</li> * </ul> */ public static List<Object> toSimpleList(List<AttributeValue> attrValues) { if (attrValues == null) return null; List<Object> result = new ArrayList<Object>(attrValues.size()); for (AttributeValue attrValue : attrValues) { Object value = toSimpleValue(attrValue); result.add(value); } return result; } /** * Converts a low-level <code>AttributeValue</code> into a simple value, * which can be one of the followings: * * <ul> * <li>String</li> * <li>Set<String></li> * <li>Number (including any subtypes and primitive types)</li> * <li>Set<Number></li> * <li>byte[]</li> * <li>Set<byte[]></li> * <li>ByteBuffer</li> * <li>Set<ByteBuffer></li> * <li>Boolean or boolean</li> * <li>null</li> * <li>Map<String,T>, where T can be any type on this list but must not * induce any circular reference</li> * <li>List<T>, where T can be any type on this list but must not induce * any circular reference</li> * </ul> * * @throws IllegalArgumentException * if an empty <code>AttributeValue</code> value is specified */ static <T> T toSimpleValue(AttributeValue value) { if (value == null) { return null; } if (Boolean.TRUE.equals(value.getNULL())) { return null; } else if (Boolean.FALSE.equals(value.getNULL())) { throw new UnsupportedOperationException("False-NULL is not supported in DynamoDB"); } else if (value.getBOOL() != null) { @SuppressWarnings("unchecked") T t = (T) value.getBOOL(); return t; } else if (value.getS() != null) { @SuppressWarnings("unchecked") T t = (T) value.getS(); return t; } else if (value.getN() != null) { @SuppressWarnings("unchecked") T t = (T) new BigDecimal(value.getN()); return t; } else if (value.getB() != null) { @SuppressWarnings("unchecked") T t = (T) copyAllBytesFrom(value.getB()); return t; } else if (value.getSS() != null) { @SuppressWarnings("unchecked") T t = (T) new LinkedHashSet<String>(value.getSS()); return t; } else if (value.getNS() != null) { Set<BigDecimal> set = new LinkedHashSet<BigDecimal>(value.getNS().size()); for (String s : value.getNS()) { set.add(new BigDecimal(s)); } @SuppressWarnings("unchecked") T t = (T) set; return t; } else if (value.getBS() != null) { Set<byte[]> set = new LinkedHashSet<byte[]>(value.getBS().size()); for (ByteBuffer bb : value.getBS()) { set.add(copyAllBytesFrom(bb)); } @SuppressWarnings("unchecked") T t = (T) set; return t; } else if (value.getL() != null) { @SuppressWarnings("unchecked") T t = (T) toSimpleList(value.getL()); return t; } else if (value.getM() != null) { @SuppressWarnings("unchecked") T t = (T) toSimpleMapValue(value.getM()); return t; } else { throw new IllegalArgumentException("Attribute value must not be empty: " + value); } } public static <T> Map<String, T> toSimpleMapValue(Map<String, AttributeValue> values) { if (values == null) { return null; } Map<String, T> result = new LinkedHashMap<String, T>(values.size()); for (Map.Entry<String, AttributeValue> entry : values.entrySet()) { T t = toSimpleValue(entry.getValue()); result.put(entry.getKey(), t); } return result; } }