/* * Copyright 2011-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. * You may obtain a copy of the License at: * * http://aws.amazon.com/apache2.0 * * 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.datamodeling; import com.amazonaws.services.dynamodbv2.datamodeling.StandardTypeConverters.Scalar; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.math.BigInteger; import java.util.Arrays; /** * Annotation for marking a property as an optimistic locking version attribute. * *
* @DynamoDBVersioned * public Long getRecordVersionNumber() ** *
Alternately, the convinience annotation {@link DynamoDBVersionAttribute} * may be used if combining with an attribute name on a field/getter.
* *Only nullable, integral numeric types (e.g. Integer, Long) can be used as * version properties. On a save() operation, the {@link DynamoDBMapper} will * attempt to increment the version property and assert that the service's value * matches the client's.
* *New objects will be assigned a version of 1 when saved.
* *Note that for batchWrite, and by extension batchSave and batchDelete, * no version checks are performed, as required by the * {@link com.amazonaws.services.dynamodbv2.AmazonDynamoDB#batchWriteItem(BatchWriteItemRequest)} * API.
* *May be used as a meta-annotation.
* * @see com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBVersionAttribute */ @DynamoDB @DynamoDBAutoGenerated(generator=DynamoDBVersioned.Generator.class) @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE}) public @interface DynamoDBVersioned { /** * Version auto-generator. */ static final class Generator