Skip to content

Added missing clientRequestToken to TransactWriteItemsEnhancedRequest #1891

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 12, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public static TransactWriteItemsOperation create(TransactWriteItemsEnhancedReque
public TransactWriteItemsRequest generateRequest(DynamoDbEnhancedClientExtension extension) {
return TransactWriteItemsRequest.builder()
.transactItems(this.request.transactWriteItems())
.clientRequestToken(this.request.clientRequestToken())
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,11 @@ public final class TransactWriteItemsEnhancedRequest {

private final List<TransactWriteItem> transactWriteItems;

private String clientRequestToken;

private TransactWriteItemsEnhancedRequest(Builder builder) {
this.transactWriteItems = getItemsFromSupplier(builder.itemSupplierList);
this.clientRequestToken = builder.clientRequestToken;
}

/**
Expand All @@ -63,6 +66,13 @@ public static Builder builder() {
return new Builder();
}

/**
* Gets the ClientRequestToken of this enhanced request.
*/
public String clientRequestToken() {
return clientRequestToken;
}

/**
* Returns the list of {@link TransactWriteItem} that represents all actions in the request.
*/
Expand Down Expand Up @@ -97,6 +107,8 @@ public int hashCode() {
public static final class Builder {
private List<Supplier<TransactWriteItem>> itemSupplierList = new ArrayList<>();

private String clientRequestToken = null;

private Builder() {
}

Expand Down Expand Up @@ -250,6 +262,17 @@ public <T> Builder addUpdateItem(MappedTableResource<T> mappedTableResource, T i
.build());
}

/**
* Sets the clientRequestToken in this builder.
*
* @param clientRequestToken the clientRequestToken going to be used for build
* @return a builder of this type
*/
public Builder clientRequestToken(String clientRequestToken) {
this.clientRequestToken = clientRequestToken;
return this;
}

/**
* Builds a {@link TransactWriteItemsEnhancedRequest} from the values stored in this builder.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,34 @@
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertEquals;
import static software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItem.createUniqueFakeItem;
import static software.amazon.awssdk.enhanced.dynamodb.internal.AttributeValues.stringValue;

import com.sun.org.apache.xpath.internal.ExtensionsProvider;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClientExtension;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
import software.amazon.awssdk.enhanced.dynamodb.Expression;
import software.amazon.awssdk.enhanced.dynamodb.Key;
import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItem;
import software.amazon.awssdk.enhanced.dynamodb.internal.client.ExtensionResolver;
import software.amazon.awssdk.enhanced.dynamodb.internal.operations.TransactWriteItemsOperation;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.Delete;
import software.amazon.awssdk.services.dynamodb.model.Put;
import software.amazon.awssdk.services.dynamodb.model.TransactWriteItem;
import software.amazon.awssdk.services.dynamodb.model.TransactWriteItemsRequest;

@RunWith(MockitoJUnitRunner.class)
public class TransactWriteItemsEnhancedRequestTest {
Expand Down Expand Up @@ -167,6 +174,17 @@ public void builder_maximal_builder_style() {
assertThat(builtObject.transactWriteItems().get(3).conditionCheck().key().get("id").s(), is(fakeItem.getId()));
}

@Test
public void setClientRequestTokenTest() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit, the naming pattern for most of our unit tests is something like: given_when_then,

so maybe builder_passRequestToken_shouldWork?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was trying to figure out a name in this pattern but I failed so I just used the current simple one lol. Will change it.

String token = UUID.randomUUID().toString();
TransactWriteItemsEnhancedRequest enhancedRequest = TransactWriteItemsEnhancedRequest.builder()
.clientRequestToken(token)
.build();
DynamoDbEnhancedClientExtension extension = ExtensionResolver.resolveExtensions(ExtensionResolver.defaultExtensions());
TransactWriteItemsRequest request = TransactWriteItemsOperation.create(enhancedRequest).generateRequest(extension);
assertEquals(token, request.clientRequestToken());
}

private List<TransactWriteItem> getTransactWriteItems(FakeItem fakeItem) {
final Map<String, AttributeValue> fakeItemMap = FakeItem.getTableSchema().itemToMap(fakeItem, true);

Expand Down