Class DelayedAddAndDeleteAggregateSnapshotDelegate

    • Constructor Detail

      • DelayedAddAndDeleteAggregateSnapshotDelegate

        public DelayedAddAndDeleteAggregateSnapshotDelegate​(AggregateSnapshotRepository delegateRepository)
    • Method Detail

      • loadSnapshot

        public <ID,​AGGREGATE_IMPL_TYPE> Optional<AggregateSnapshot<ID,​AGGREGATE_IMPL_TYPE>> loadSnapshot​(AggregateType aggregateType,
                                                                                                                     ID aggregateId,
                                                                                                                     Class<AGGREGATE_IMPL_TYPE> aggregateImplType)
        Specified by:
        loadSnapshot in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the identifier for the aggregate instance
        aggregateImplType - the concrete aggregate implementation type
        Returns:
        the aggregate snapshot wrapped in an Optional if a snapshot was found, otherwise Optional.empty()
      • loadSnapshot

        public <ID,​AGGREGATE_IMPL_TYPE> Optional<AggregateSnapshot<ID,​AGGREGATE_IMPL_TYPE>> loadSnapshot​(AggregateType aggregateType,
                                                                                                                     ID aggregateId,
                                                                                                                     EventOrder withLastIncludedEventOrderLessThanOrEqualTo,
                                                                                                                     Class<AGGREGATE_IMPL_TYPE> aggregateImplType)
        Specified by:
        loadSnapshot in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the identifier for the aggregate instance
        withLastIncludedEventOrderLessThanOrEqualTo - the snapshot returned must have AggregateSnapshot.eventOrderOfLastIncludedEvent that is less than or equal to this value
        aggregateImplType - the concrete aggregate implementation type
        Returns:
        the aggregate snapshot wrapped in an Optional if a snapshot was found, otherwise Optional.empty()
      • aggregateUpdated

        public <ID,​AGGREGATE_IMPL_TYPE> void aggregateUpdated​(AGGREGATE_IMPL_TYPE aggregate,
                                                                    AggregateEventStream<ID> persistedEvents)
        Description copied from interface: AggregateSnapshotRepository
        Callback from an Aggregate Repository to notify that the aggregate has been updated
        Specified by:
        aggregateUpdated in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregate - the aggregate instance after the changes (in the form of events) has been marked as committed within the aggregate
        persistedEvents - the aggregate changes (in the form of events) after they've been persisted
      • deleteAllSnapshots

        public <AGGREGATE_IMPL_TYPE> void deleteAllSnapshots​(Class<AGGREGATE_IMPL_TYPE> ofAggregateImplementationType)
        Description copied from interface: AggregateSnapshotRepository
        Delete all snapshots for the given aggregate implementation type
        Specified by:
        deleteAllSnapshots in interface AggregateSnapshotRepository
        Type Parameters:
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        ofAggregateImplementationType - the concrete aggregate implementation type that we want to delete all snapshots for
      • deleteSnapshots

        public <ID,​AGGREGATE_IMPL_TYPE> void deleteSnapshots​(AggregateType aggregateType,
                                                                   ID aggregateId,
                                                                   Class<AGGREGATE_IMPL_TYPE> withAggregateImplementationType)
        Description copied from interface: AggregateSnapshotRepository
        Delete all snapshots for the given aggregate instance with the given aggregate implementation type
        Specified by:
        deleteSnapshots in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the id of the aggregate that we want to delete all snapshots for
        withAggregateImplementationType - the concrete aggregate implementation type that we want to delete all snapshots for
      • deleteSnapshots

        public <ID,​AGGREGATE_IMPL_TYPE> void deleteSnapshots​(AggregateType aggregateType,
                                                                   ID aggregateId,
                                                                   Class<AGGREGATE_IMPL_TYPE> withAggregateImplementationType,
                                                                   List<EventOrder> snapshotEventOrdersToDelete)
        Description copied from interface: AggregateSnapshotRepository
        Delete all snapshots with a given AggregateSnapshot.eventOrderOfLastIncludedEvent for the given aggregate instance, with the given aggregate implementation type
        Specified by:
        deleteSnapshots in interface AggregateSnapshotRepository
        Type Parameters:
        ID - the aggregate ID type
        AGGREGATE_IMPL_TYPE - the concrete aggregate implementation type
        Parameters:
        aggregateType - the aggregate type (determining the aggregate's event stream name)
        aggregateId - the id of the aggregate that we want to delete all snapshots for
        withAggregateImplementationType - the concrete aggregate implementation type that we want to delete all snapshots for
        snapshotEventOrdersToDelete - The list of AggregateSnapshot.eventOrderOfLastIncludedEvent 's that should be deleted