/* * Copyright 2014-2016 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. */ package com.amazonaws.services.dynamodbv2.document.quickstart; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.amazonaws.services.dynamodbv2.document.GetItemOutcome; import com.amazonaws.services.dynamodbv2.document.Item; import com.amazonaws.services.dynamodbv2.document.Table; import com.amazonaws.services.dynamodbv2.document.spec.GetItemSpec; import com.amazonaws.services.dynamodbv2.document.utils.AbstractQuickStart; import com.amazonaws.services.dynamodbv2.document.utils.NameMap; /** * Sample code to get item outcome from DynamoDB table. */ public class C_GetItemOutComeTest extends AbstractQuickStart { @Before public void before() { new B_PutItemTest().howToPutItems(); } @Test public void howToGetItemOutcomes() { Table table = dynamo.getTable(TABLE_NAME); for (int i=1; i <= 10; i++) { GetItemOutcome outcome = table.getItemOutcome( HASH_KEY_NAME, "foo", RANGE_KEY_NAME, i); Item item = outcome.getItem(); System.out.println("========== item " + i + " =========="); System.out.println(item); byte[] binary = item.getBinary("binary"); System.out.println("binary: " + Arrays.toString(binary)); Set<byte[]> binarySet = item.getBinarySet("binarySet"); for (byte[] ba: binarySet) { System.out.println("binary set element: " + Arrays.toString(ba)); } boolean bTrue = item.getBoolean("booleanTrue"); System.out.println("booleanTrue: " + bTrue); int intval = item.getInt("intAttr"); System.out.println("intAttr: " + intval); List<Object> listval = item.getList("listAtr"); System.out.println("listAtr: " + listval); Map<String,Object> mapval = item.getMap("mapAttr"); System.out.println("mapAttr: " + mapval); Object nullval = item.get("nullAttr"); System.out.println("nullAttr: " + nullval); BigDecimal numval = item.getNumber("numberAttr"); System.out.println("numberAttr: " + numval); String strval = item.getString("stringAttr"); System.out.println("stringAttr: " + strval); Set<String> strset = item.getStringSet("stringSetAttr"); System.out.println("stringSetAttr: " + strset); // "Outcome" allows access to the low level result System.out.println("low level result: " + outcome.getGetItemResult()); } } @Test public void howToUseProjectionExpression() { Table table = dynamo.getTable(TABLE_NAME); for (int i=1; i <= 10; i++) { GetItemOutcome outcome = table.getItemOutcome( HASH_KEY_NAME, "foo", RANGE_KEY_NAME, i, // Here is the projection expression to select 3 attributes // to be returned. // This expression requires attribute name substitution for // "binary" which is a reserved word in DynamoDB "#binary, intAttr, stringAttr", new NameMap().with("#binary", "binary")); Item item = outcome.getItem(); System.out.println("========== item " + i + " =========="); System.out.println(item); byte[] binary = item.getBinary("binary"); System.out.println("binary: " + Arrays.toString(binary)); int intval = item.getInt("intAttr"); System.out.println("intAttr: " + intval); Set<String> strset = item.getStringSet("stringSetAttr"); System.out.println("stringSetAttr: " + strset); // "Outcome" allows access to the low level result System.out.println("low level result: " + outcome.getGetItemResult()); } } @Test public void howToUseGetItemSpec() { Table table = dynamo.getTable(TABLE_NAME); for (int i=1; i <= 10; i++) { GetItemOutcome outcome = table.getItemOutcome(new GetItemSpec() .withPrimaryKey(HASH_KEY_NAME, "foo", RANGE_KEY_NAME, i) .withProjectionExpression("#binary, intAttr, stringAttr") .withNameMap(new NameMap().with("#binary", "binary"))); Item item = outcome.getItem(); System.out.println("========== item " + i + " =========="); System.out.println(item); byte[] binary = item.getBinary("binary"); System.out.println("binary: " + Arrays.toString(binary)); int intval = item.getInt("intAttr"); System.out.println("intAttr: " + intval); Set<String> strset = item.getStringSet("stringSetAttr"); System.out.println("stringSetAttr: " + strset); // "Outcome" allows access to the low level result System.out.println("low level result: " + outcome.getGetItemResult()); } } @Test public void getNonExistentItem() { Table table = dynamo.getTable(TABLE_NAME); GetItemOutcome outcome = table.getItemOutcome( HASH_KEY_NAME, "bar", RANGE_KEY_NAME, 99); Item item = outcome.getItem(); Assert.assertNull(item); // "Outcome" allows access to the low level result System.out.println("low level result: " + outcome.getGetItemResult()); } }