1 /* 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"). 5 * You may not use this file except in compliance with the License. 6 * A copy of the License is located at 7 * 8 * http://aws.amazon.com/apache2.0 9 * 10 * or in the "license" file accompanying this file. This file is distributed 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 * express or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package software.amazon.awssdk.enhanced.dynamodb.mapper.annotations; 17 18 import java.lang.annotation.ElementType; 19 import java.lang.annotation.Retention; 20 import java.lang.annotation.RetentionPolicy; 21 import java.lang.annotation.Target; 22 import software.amazon.awssdk.annotations.SdkPublicApi; 23 import software.amazon.awssdk.enhanced.dynamodb.internal.mapper.BeanTableSchemaAttributeTags; 24 25 /** 26 * Denotes an optional sort key for a global or local secondary index. 27 * 28 * <p>You must also specify at least one index name. For global secondary indices, this must match an index name specified in 29 * a {@link DynamoDbSecondaryPartitionKey}. Any index names specified that do not have an associated 30 * {@link DynamoDbSecondaryPartitionKey} are treated as local secondary indexes. 31 * 32 * <p>The index name will be used if a table is created from this bean. For data-oriented operations like reads and writes, this 33 * name does not need to match the service-side name of the index. 34 */ 35 @SdkPublicApi 36 @Target({ElementType.METHOD}) 37 @Retention(RetentionPolicy.RUNTIME) 38 @BeanTableSchemaAttributeTag(BeanTableSchemaAttributeTags.class) 39 public @interface DynamoDbSecondarySortKey { 40 /** 41 * The names of one or more local or global secondary indices that this sort key should participate in. 42 * 43 * <p>For global secondary indices, this must match an index name specified in a {@link DynamoDbSecondaryPartitionKey}. Any 44 * index names specified that do not have an associated {@link DynamoDbSecondaryPartitionKey} are treated as local 45 * secondary indexes. 46 */ indexNames()47 String[] indexNames(); 48 } 49