public final class ChainExtension extends Object implements DynamoDbEnhancedClientExtension
If you create a chain of three extensions: ChainMapperExtension.create(extension1, extension2, extension3);
When performing any kind of write operation (eg: PutItem, UpdateItem) the beforeWrite() method will be called in forward order: extension1 -> extension2 -> extension3
So the output of extension1 will be passed into extension2, and then the output of extension2 into extension3 and so on. For operations that read (eg: GetItem, UpdateItem) the afterRead() method will be called in reverse order: extension3 -> extension2 -> extension1
This is designed to create a layered pattern when dealing with multiple extensions. One thing to note is that UpdateItem acts as both a write operation and a read operation so the chain will be called both ways within a single operation.
Modifier and Type | Method and Description |
---|---|
ReadModification |
afterRead(DynamoDbExtensionContext.AfterRead context)
Implementation of the
DynamoDbEnhancedClientExtension interface that will call all the chained extensions
in reverse order, passing the results of each one to the next and coalescing the results into a single modification. |
WriteModification |
beforeWrite(DynamoDbExtensionContext.BeforeWrite context)
Implementation of the
DynamoDbEnhancedClientExtension interface that will call all the chained extensions
in forward order, passing the results of each one to the next and coalescing the results into a single modification. |
static ChainExtension |
create(DynamoDbEnhancedClientExtension... extensions)
Construct a new instance of
ChainExtension . |
static ChainExtension |
create(List<DynamoDbEnhancedClientExtension> extensions)
Construct a new instance of
ChainExtension . |
public static ChainExtension create(DynamoDbEnhancedClientExtension... extensions)
ChainExtension
.extensions
- A list of DynamoDbEnhancedClientExtension
to chain together.ChainExtension
object.public static ChainExtension create(List<DynamoDbEnhancedClientExtension> extensions)
ChainExtension
.extensions
- A list of DynamoDbEnhancedClientExtension
to chain together.ChainExtension
object.public WriteModification beforeWrite(DynamoDbExtensionContext.BeforeWrite context)
DynamoDbEnhancedClientExtension
interface that will call all the chained extensions
in forward order, passing the results of each one to the next and coalescing the results into a single modification.
Multiple conditional statements will be separated by the string " AND ". Expression values will be coalesced
unless they conflict in which case an exception will be thrown.beforeWrite
in interface DynamoDbEnhancedClientExtension
context
- A DynamoDbExtensionContext.BeforeWrite
contextWriteModification
representing the coalesced results of all the chained extensions.public ReadModification afterRead(DynamoDbExtensionContext.AfterRead context)
DynamoDbEnhancedClientExtension
interface that will call all the chained extensions
in reverse order, passing the results of each one to the next and coalescing the results into a single modification.afterRead
in interface DynamoDbEnhancedClientExtension
context
- A DynamoDbExtensionContext.AfterRead
contextReadModification
representing the final transformation of all the chained extensions.Copyright © 2021. All rights reserved.