/* * Copyright 2014-2023 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.internal; import com.amazonaws.AmazonWebServiceRequest; import com.amazonaws.services.dynamodbv2.document.AttributeUpdate; import com.amazonaws.services.dynamodbv2.document.Expected; import com.amazonaws.services.dynamodbv2.document.Item; import com.amazonaws.services.dynamodbv2.document.ItemUtils; import com.amazonaws.services.dynamodbv2.document.KeyAttribute; import com.amazonaws.services.dynamodbv2.document.PrimaryKey; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.AttributeValueUpdate; import com.amazonaws.services.dynamodbv2.model.Condition; import com.amazonaws.services.dynamodbv2.model.ExpectedAttributeValue; import com.amazonaws.util.ValidationUtils; import com.amazonaws.util.VersionInfoUtils; import java.math.BigDecimal; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; /** * Internal utilities. Not meant for general use. May change without notice. * * @deprecated Use {@link ItemUtils} instead. */ @Deprecated public enum InternalUtils { ; /** * Returns a non-null list of Item's given the low level * list of item information. */ public static List toItemList(List> items) { return ItemUtils.toItemList(items); } /** * Converts an Item into the low-level representation; * or null if the input is null. */ public static Map toAttributeValues(Item item) { return ItemUtils.toAttributeValues(item); } /** * Converts a map of string to simple objects into the low-level * representation; or null if the input is null. */ public static Map fromSimpleMap( Map map) { return ItemUtils.fromSimpleMap(map); } /** * Converts a list of AttributeUpdate into the low-level * representation; or null if the input is null. */ public static Map toAttributeValueUpdate( List attributesToUpdate) { return ItemUtils.toAttributeValueUpdate(attributesToUpdate); } /** * Converts a simple value into the low-level * representation. * * @param value the given value which can be one of the followings: *
    *
  • String
  • *
  • Set<String>
  • *
  • Number (including any subtypes and primitive types)
  • *
  • Set<Number>
  • *
  • byte[]
  • *
  • Set<byte[]>
  • *
  • ByteBuffer
  • *
  • Set<ByteBuffer>
  • *
  • Boolean or boolean
  • *
  • null
  • *
  • Map<String,T>, where T can be any type on this list but must not * induce any circular reference
  • *
  • List<T>, where T can be any type on this list but must not induce * any circular reference
  • *
* @return a non-null low level representation of the input object value * @throws UnsupportedOperationException if the input object type is not supported */ public static AttributeValue toAttributeValue(Object value) { return ItemUtils.toAttributeValue(value); } /** * Converts a list of low-level AttributeValue into a list of * simple values. Each value in the returned list can be one of the * followings: * *
    *
  • String
  • *
  • Set<String>
  • *
  • Number (including any subtypes and primitive types)
  • *
  • Set<Number>
  • *
  • byte[]
  • *
  • Set<byte[]>
  • *
  • ByteBuffer
  • *
  • Set<ByteBuffer>
  • *
  • Boolean or boolean
  • *
  • null
  • *
  • Map<String,T>, where T can be any type on this list but must not * induce any circular reference
  • *
  • List<T>, where T can be any type on this list but must not induce * any circular reference
  • *
*/ public static List toSimpleList(List attrValues) { return ItemUtils.toSimpleList(attrValues); } /** * Convenient method to convert a list of low-level * AttributeValue into a list of values of the same type T. * Each value in the returned list can be one of the followings: *
    *
  • String
  • *
  • Set<String>
  • *
  • Number (including any subtypes and primitive types)
  • *
  • Set<Number>
  • *
  • byte[]
  • *
  • Set<byte[]>
  • *
  • ByteBuffer
  • *
  • Set<ByteBuffer>
  • *
  • Boolean or boolean
  • *
  • null
  • *
  • Map<String,T>, where T can be any type on this list but must not * induce any circular reference
  • *
  • List<T>, where T can be any type on this list but must not induce * any circular reference
  • *
*/ public static List toSimpleListValue(List values) { return ItemUtils.toSimpleListValue(values); } public static Map toSimpleMapValue( Map values) { return ItemUtils.toSimpleMapValue(values); } /** * Returns the string representation of the given value; or null if the * value is null. For BigDecimal it will be the string * representation without an exponent field. */ public static String valToString(Object val) { return ItemUtils.valToString(val); } /** * Converts a low-level AttributeValue into a simple value, * which can be one of the followings: * *
    *
  • String
  • *
  • Set<String>
  • *
  • Number (including any subtypes and primitive types)
  • *
  • Set<Number>
  • *
  • byte[]
  • *
  • Set<byte[]>
  • *
  • ByteBuffer
  • *
  • Set<ByteBuffer>
  • *
  • Boolean or boolean
  • *
  • null
  • *
  • Map<String,T>, where T can be any type on this list but must not * induce any circular reference
  • *
  • List<T>, where T can be any type on this list but must not induce * any circular reference
  • *
* * @throws IllegalArgumentException if an empty AttributeValue value is specified */ static T toSimpleValue(AttributeValue value) { return ItemUtils.toSimpleValue(value); } /** * Returns the minimum of the two input integers taking null into account. * Returns null if both integers are null. Otherwise, a null Integer is * treated as infinity. */ public static Integer minimum(Integer one, Integer two) { return ItemUtils.minimum(one, two); } /** * Returns the low level representation of a collection of Expected. */ public static Map toExpectedAttributeValueMap( Collection expectedSet) { return ItemUtils.toExpectedAttributeValueMap(expectedSet); } /** * Returns the low level representation of a collection of Filter. */ public static Map toAttributeConditionMap(Collection> filters) { return ItemUtils.toAttributeConditionMap(filters); } /** * Converts the input array of values into an array of low level * representation of those values. * * A value in the input array can be one of the followings: * *
    *
  • String
  • *
  • Set<String>
  • *
  • Number (including any subtypes and primitive types)
  • *
  • Set<Number>
  • *
  • byte[]
  • *
  • Set<byte[]>
  • *
  • ByteBuffer
  • *
  • Set<ByteBuffer>
  • *
  • Boolean or boolean
  • *
  • null
  • *
  • Map<String,T>, where T can be any type on this list but must not * induce any circular reference
  • *
  • List<T>, where T can be any type on this list but must not induce * any circular reference
  • *
*/ public static AttributeValue[] toAttributeValues(Object[] values) { return ItemUtils.toAttributeValues(values); } /** * Converts the specified primary key into the low-level representation. */ public static Map toAttributeValueMap( Collection primaryKey) { return ItemUtils.toAttributeValueMap(primaryKey); } /** * Converts the specified primary key into the low-level representation. */ public static Map toAttributeValueMap( PrimaryKey primaryKey) { return ItemUtils.toAttributeValueMap(primaryKey); } /** * Converts the specified primary key into the low-level representation. */ public static Map toAttributeValueMap( KeyAttribute... primaryKey) { return ItemUtils.toAttributeValueMap(primaryKey); } /** * Converts a number into BigDecimal representation. */ public static BigDecimal toBigDecimal(Number n) { return ItemUtils.toBigDecimal(n); } public static Set toBigDecimalSet(Number... val) { return ItemUtils.toBigDecimalSet(val); } public static Set toBigDecimalSet(Set vals) { return ItemUtils.toBigDecimalSet(vals); } /** * Append the custom user-agent string. *

Note to maintainers, this is technically not deprecated and not present in {@link ItemUtils}. It is truly meant for * internal use only.

*/ public static X applyUserAgent(X request) { final String USER_AGENT = "dynamodb-table-api/" + VersionInfoUtils.getVersion(); request.getRequestClientOptions().appendUserAgent(USER_AGENT); return request; } public static void rejectNullValue(Object val) { ValidationUtils.assertNotNull(val, "val"); } public static void rejectNullInput(Object input) { ValidationUtils.assertNotNull(input, "val"); } public static void rejectEmptyInput(Object[] input) { ValidationUtils.assertNotEmpty(input, "input"); } public static void rejectNullOrEmptyInput(Object[] input) { rejectNullInput(input); rejectEmptyInput(input); } public static void checkInvalidAttrName(String attrName) { ItemUtils.checkInvalidAttrName(attrName); } public static void checkInvalidAttribute(String attrName, Object val) { ItemUtils.checkInvalidAttribute(attrName, val); } }