Skip to content

Commit 6a11ab8

Browse files
authored
Adds operation name labels for operations to identify calling op when required (aws#2846)
1 parent 227c639 commit 6a11ab8

29 files changed

+275
-48
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"category": "DynamoDB Enhanced Client",
3+
"contributor": "",
4+
"type": "feature",
5+
"description": "Adds operation type labels to each operation and propagates to the extension write context"
6+
}

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/DynamoDbExtensionContext.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.Map;
1919
import software.amazon.awssdk.annotations.SdkPublicApi;
20+
import software.amazon.awssdk.enhanced.dynamodb.internal.operations.OperationName;
2021
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
2122

2223
/**
@@ -57,6 +58,11 @@ default TableSchema<?> tableSchema() {
5758
*/
5859
@SdkPublicApi
5960
public interface BeforeWrite extends Context {
61+
62+
/**
63+
* @return The context under which the operation to be modified is taking place.
64+
*/
65+
OperationName operationName();
6066
}
6167

6268
/**

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/extensions/ChainExtension.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public WriteModification beforeWrite(DynamoDbExtensionContext.BeforeWrite contex
104104
.operationContext(context.operationContext())
105105
.tableMetadata(context.tableMetadata())
106106
.tableSchema(context.tableSchema())
107+
.operationName(context.operationName())
107108
.build();
108109

109110
WriteModification writeModification = extension.beforeWrite(beforeWrite);

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/extensions/DefaultDynamoDbExtensionContext.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import software.amazon.awssdk.enhanced.dynamodb.OperationContext;
2323
import software.amazon.awssdk.enhanced.dynamodb.TableMetadata;
2424
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;
25+
import software.amazon.awssdk.enhanced.dynamodb.internal.operations.OperationName;
2526
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
2627

2728
/**
@@ -35,12 +36,14 @@ public final class DefaultDynamoDbExtensionContext implements DynamoDbExtensionC
3536
private final OperationContext operationContext;
3637
private final TableMetadata tableMetadata;
3738
private final TableSchema<?> tableSchema;
39+
private final OperationName operationName;
3840

3941
private DefaultDynamoDbExtensionContext(Builder builder) {
4042
this.items = builder.items;
4143
this.operationContext = builder.operationContext;
4244
this.tableMetadata = builder.tableMetadata;
4345
this.tableSchema = builder.tableSchema;
46+
this.operationName = builder.operationName != null ? builder.operationName : OperationName.NONE;
4447
}
4548

4649
public static Builder builder() {
@@ -67,6 +70,11 @@ public TableSchema<?> tableSchema() {
6770
return tableSchema;
6871
}
6972

73+
@Override
74+
public OperationName operationName() {
75+
return operationName;
76+
}
77+
7078
@Override
7179
public boolean equals(Object o) {
7280
if (this == o) {
@@ -87,7 +95,10 @@ public boolean equals(Object o) {
8795
if (!Objects.equals(tableMetadata, that.tableMetadata)) {
8896
return false;
8997
}
90-
return Objects.equals(tableSchema, that.tableSchema);
98+
if (!Objects.equals(tableSchema, that.tableSchema)) {
99+
return false;
100+
}
101+
return Objects.equals(operationName, that.operationName);
91102
}
92103

93104
@Override
@@ -96,6 +107,7 @@ public int hashCode() {
96107
result = 31 * result + (operationContext != null ? operationContext.hashCode() : 0);
97108
result = 31 * result + (tableMetadata != null ? tableMetadata.hashCode() : 0);
98109
result = 31 * result + (tableSchema != null ? tableSchema.hashCode() : 0);
110+
result = 31 * result + (operationName != null ? operationName.hashCode() : 0);
99111
return result;
100112
}
101113

@@ -104,6 +116,7 @@ public static final class Builder {
104116
private OperationContext operationContext;
105117
private TableMetadata tableMetadata;
106118
private TableSchema<?> tableSchema;
119+
private OperationName operationName;
107120

108121
public Builder items(Map<String, AttributeValue> item) {
109122
this.items = item;
@@ -125,6 +138,11 @@ public Builder tableSchema(TableSchema<?> tableSchema) {
125138
return this;
126139
}
127140

141+
public Builder operationName(OperationName operationName) {
142+
this.operationName = operationName;
143+
return this;
144+
}
145+
128146
public DefaultDynamoDbExtensionContext build() {
129147
return new DefaultDynamoDbExtensionContext(this);
130148
}

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/BatchGetItemOperation.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ public static BatchGetItemOperation create(BatchGetItemEnhancedRequest request)
5050
return new BatchGetItemOperation(request);
5151
}
5252

53+
@Override
54+
public OperationName operationName() {
55+
return OperationName.BATCH_GET_ITEM;
56+
}
57+
5358
@Override
5459
public BatchGetItemRequest generateRequest(DynamoDbEnhancedClientExtension extension) {
5560
Map<String, KeysAndAttributes> requestItems = new HashMap<>();

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/BatchWriteItemOperation.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ public static BatchWriteItemOperation create(BatchWriteItemEnhancedRequest reque
4848
return new BatchWriteItemOperation(request);
4949
}
5050

51+
@Override
52+
public OperationName operationName() {
53+
return OperationName.BATCH_WRITE_ITEM;
54+
}
55+
5156
@Override
5257
public BatchWriteItemRequest generateRequest(DynamoDbEnhancedClientExtension extension) {
5358
Map<String, List<WriteRequest>> allRequestItems = new HashMap<>();

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/CommonOperation.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,9 @@ default CompletableFuture<ResultT> executeAsync(TableSchema<ItemT> tableSchema,
140140
CompletableFuture<ResponseT> response = asyncServiceCall(dynamoDbAsyncClient).apply(request);
141141
return response.thenApply(r -> transformResponse(r, tableSchema, context, extension));
142142
}
143+
144+
/**
145+
* The type, or name, of the operation.
146+
*/
147+
OperationName operationName();
143148
}

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/CreateTableOperation.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ public static <T> CreateTableOperation<T> create(CreateTableEnhancedRequest requ
5353
return new CreateTableOperation<>(request);
5454
}
5555

56+
@Override
57+
public OperationName operationName() {
58+
return OperationName.CREATE_TABLE;
59+
}
60+
5661
@Override
5762
public CreateTableRequest generateRequest(TableSchema<T> tableSchema,
5863
OperationContext operationContext,

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DatabaseOperation.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,10 @@ default CompletableFuture<ResultT> executeAsync(DynamoDbAsyncClient dynamoDbAsyn
103103
CompletableFuture<ResponseT> response = asyncServiceCall(dynamoDbAsyncClient).apply(request);
104104
return response.thenApply(r -> transformResponse(r, extension));
105105
}
106+
107+
108+
/**
109+
* The type, or name, of the operation.
110+
*/
111+
OperationName operationName();
106112
}

services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteItemOperation.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ public static <T> DeleteItemOperation<T> create(TransactDeleteItemEnhancedReques
6666
return new DeleteItemOperation<>(request);
6767
}
6868

69+
@Override
70+
public OperationName operationName() {
71+
return OperationName.DELETE_ITEM;
72+
}
73+
6974
@Override
7075
public DeleteItemRequest generateRequest(TableSchema<T> tableSchema,
7176
OperationContext operationContext,

0 commit comments

Comments
 (0)