Example usage for com.amazonaws.services.dynamodbv2.xspec ExpressionSpecBuilder attribute_exists

List of usage examples for com.amazonaws.services.dynamodbv2.xspec ExpressionSpecBuilder attribute_exists

Introduction

In this page you can find the example usage for com.amazonaws.services.dynamodbv2.xspec ExpressionSpecBuilder attribute_exists.

Prototype

public static <T> FunctionCondition attribute_exists(String path) 

Source Link

Document

Returns a <a href= "http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html#ConditionExpressionReference.Functions" >function condition</a> (that evaluates to true if the attribute at the specified path exists) for building condition expression.

Usage

From source file:com.github.fge.jsonpatch.RemoveOperation.java

License:LGPL

@Override
public void applyToBuilder(ExpressionSpecBuilder builder) {
    String attributePath = pathGenerator.apply(path);
    builder.addUpdate(ExpressionSpecBuilder.remove(attributePath));
    //because it is an error to remove a path that does not exist
    //add an attribute_exists() condition
    builder.withCondition(ExpressionSpecBuilder.attribute_exists(pathGenerator.apply(path)));
}

From source file:com.github.fge.jsonpatch.ReplaceOperation.java

License:LGPL

@Override
public void applyToBuilder(ExpressionSpecBuilder builder) {
    //add the set operation
    super.applyToBuilder(builder);
    //because it is an error to replace a path that does not exist
    //add an attribute_exists() condition
    builder.withCondition(ExpressionSpecBuilder.attribute_exists(pathGenerator.apply(path)));
}

From source file:jp.classmethod.aws.dynamodb.DynamoDbRepository.java

License:Open Source License

@Override
public E update(K key, JsonPatch patch, boolean increment, long version) {
    final PrimaryKey pk = createKeys(key);
    Preconditions.checkNotNull(patch, "patch must not be null");
    Preconditions.checkArgument(version >= -1);

    ExpressionSpecBuilder builder = patch.get();

    //add a condition on item existence
    builder.withCondition(ExpressionSpecBuilder.attribute_exists(hashKeyName));
    //add update expression for incrementing the version
    if (increment && versionProperty != null) {
        builder.addUpdate(ExpressionSpecBuilder.N(versionProperty)
                .set(ExpressionSpecBuilder.N(versionProperty).plus(1L)));
    }//www .j  a  v  a  2  s.c  o  m
    //add version condition
    if (version >= 0) {
        Preconditions.checkState(versionProperty != null);
        builder.withCondition(ExpressionSpecBuilder.N(versionProperty).eq(version));
    }

    UpdateItemExpressionSpec spec = builder.buildForUpdate();
    Preconditions.checkArgument(false == Strings.isNullOrEmpty(spec.getUpdateExpression()),
            "patch may not be empty"); // TODO add mechanism to JSON patch to allow iterating over list of ops
    try {
        UpdateItemOutcome updateItemOutcome = table.updateItem(new UpdateItemSpec().withExpressionSpec(spec)
                .withPrimaryKey(pk).withReturnValues(ReturnValue.ALL_NEW));
        return convertItemToDomain(updateItemOutcome.getItem());
    } catch (AmazonClientException e) {
        throw processUpdateItemException(key, e);
    }
}