Class ChainExtension

  • All Implemented Interfaces:
    DynamoDbEnhancedClientExtension

    public final class ChainExtension
    extends Object
    implements DynamoDbEnhancedClientExtension
    A meta-extension that allows multiple extensions to be chained in a specified order to act as a single composite extension. The order in which extensions will be used depends on the operation, for write operations they will be called in forward order, for read operations they will be called in reverse order. For example :-

    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.