@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedPojoUpdateHandlerSingle<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final TParams params) { Preconditions.checkNotNull(aggregate); return execute(aggregate.state(), params); } }
private void returnsAggregateWithEmptyStateOn( final EventReadResult readEventsResult) { when(eventRepository.read(any(), anyInt(), anyInt())).thenReturn(readEventsResult); ImmutableAggregate<TestState, TestEvent> aggregate = repository.load(AGGREGATE_ID_1); verify(eventRepository).read(eq(AGGREGATE_ID_1), eq(0), anyInt()); verifyNoMoreInteractions(eventRepository); Assert.assertNotNull(aggregate); Assert.assertEquals(aggregate.state().getValue(), "empty"); Assert.assertEquals(-1, aggregate.sourceVersion()); }
break; case ANY_EXISTING: if (aggregate.sourceVersion() == Aggregate.VERSION_NOT_CREATED) { throw new UnexpectedVersionException( aggregate.sourceVersion(), effectiveExpectedVersion); if (aggregate.sourceVersion() != effectiveExpectedVersion.getExpectedVersion()) { throw new UnexpectedVersionException( aggregate.sourceVersion(), effectiveExpectedVersion); if (aggregate.sourceVersion() != Aggregate.VERSION_NOT_CREATED && !idempotentCreate) { throw new UnexpectedVersionException( aggregate.sourceVersion(), effectiveExpectedVersion);
break; case ANY_EXISTING: if (aggregate.sourceVersion() == Aggregate.VERSION_NOT_CREATED) { throw new UnexpectedVersionException( aggregate.sourceVersion(), effectiveExpectedVersion); if (aggregate.sourceVersion() != effectiveExpectedVersion.getExpectedVersion()) { throw new UnexpectedVersionException( aggregate.sourceVersion(), effectiveExpectedVersion); if (aggregate.sourceVersion() != Aggregate.VERSION_NOT_CREATED && !idempotentCreate) { throw new UnexpectedVersionException( aggregate.sourceVersion(), effectiveExpectedVersion);
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedPojoUpdateHandler<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final Object params) { Preconditions.checkNotNull(aggregate); return ImmutableList.of(executeSingle(aggregate.state())); } }
logger.debug( "Current state of aggregate is {}", aggregate.sourceVersion() == Aggregate.VERSION_NOT_CREATED ? "<not created>" : "version " + aggregate.sourceVersion()); } else { logger.debug("Aggregate state not loaded"); && aggregate.sourceVersion() != Aggregate.VERSION_NOT_CREATED) { logger.debug("Bailing out early as already created (and idempotent create set)"); return new CommandResult<>( aggregateId, aggregate.sourceVersion(), aggregate.sourceVersion(), ImmutableList.of()); return new CommandResult<>( aggregateId, aggregate != null ? aggregate.sourceVersion() : null, aggregate != null ? aggregate.sourceVersion() : null, events); if (aggregate.sourceVersion() != Aggregate.VERSION_NOT_CREATED) { updateExpectedVersion = ExpectedVersion.exactly(aggregate.sourceVersion()); } else { updateExpectedVersion = ExpectedVersion.notCreated();
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedPojoUpdateHandler<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final Object params) { Preconditions.checkNotNull(aggregate); return ImmutableList.of(executeSingle(aggregate.state())); } }
logger.debug( "Current state of aggregate is {}", aggregate.sourceVersion() == Aggregate.VERSION_NOT_CREATED ? "<not created>" : "version " + aggregate.sourceVersion()); } else { logger.debug("Aggregate state not loaded"); && aggregate.sourceVersion() != Aggregate.VERSION_NOT_CREATED) { logger.debug("Bailing out early as already created (and idempotent create set)"); return new CommandResult<>( aggregateId, aggregate.sourceVersion(), aggregate.sourceVersion(), ImmutableList.of()); return new CommandResult<>( aggregateId, aggregate != null ? aggregate.sourceVersion() : null, aggregate != null ? aggregate.sourceVersion() : null, events); if (aggregate.sourceVersion() != Aggregate.VERSION_NOT_CREATED) { updateExpectedVersion = ExpectedVersion.exactly(aggregate.sourceVersion()); } else { updateExpectedVersion = ExpectedVersion.notCreated();
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedPojoUpdateHandlerSingle<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final Object params) { Preconditions.checkNotNull(aggregate); return execute(aggregate.state()); } }
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedUpdateHandler<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final TParams params) { Preconditions.checkNotNull(aggregate); return ImmutableList.of(executeSingle(aggregate.state(), params)); } }
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedUpdateHandlerSingle<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final Object params) { Preconditions.checkNotNull(aggregate); return execute(aggregate.state()); } }
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedUpdateHandlerAggregate<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }
@Override default List<? extends TEvent> execute( final ImmutableAggregate<TState, TEvent> aggregate, final TParams params) { Preconditions.checkNotNull(aggregate); return ImmutableList.of(executeSingle(aggregate.state(), params)); } }
@NotNull @Override public <TParam> ImmutableAggregate<TState, TEvent> fold( @NotNull final ParameterizedUpdateHandler<TState, TParam, TEvent> handler, @NotNull final Stream<TParam> params) { return foldLeft( params, (ImmutableAggregate<TState, TEvent>) this, (state, param) -> state.apply(handler, param)); }