@Override public <T extends Aggregate<T>> CompletableFuture<EntityWithMetadata<T>> find(Class<T> clasz, String entityId, FindOptions findOptions) { return find(clasz, entityId, Optional.ofNullable(findOptions)); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> save(Class<T> clasz, List<Event> events, SaveOptions saveOptions) { return save(clasz, events, Optional.ofNullable(saveOptions)); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> update(Class<T> clasz, EntityIdAndVersion entityIdAndVersion, List<Event> events) { return update(clasz, entityIdAndVersion, events, Optional.empty()); }
public EventuateAggregateStore build() { validateKeyAndSecret(eventuateCredentials.getApiKeyId(), eventuateCredentials.getApiKeySecret()); validateSpace(eventuateCredentials.getSpace()); if (this.vertx == null) { this.vertx = vertx(); } AggregateCrud aggregateCrud = new EventuateRESTClient(vertx, eventuateCredentials, makeDefaultUrl()); AggregateEvents aggregateEvents = new EventuateSTOMPClient(vertx, eventuateCredentials, makeDefaultUrl()); SnapshotManager snapshotManager = new SnapshotManagerImpl(); return new EventuateAggregateStoreImpl(aggregateCrud, aggregateEvents, snapshotManager, missingApplyEventMethodStrategy); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> save(Class<T> clasz, List<Event> events, Optional<SaveOptions> saveOptions) { Optional<String> serializedMetadata = saveOptions.flatMap(so -> withSchemaMetadata(clasz, so.getEventMetadata())).map(JSonMapper::toJson); List<EventTypeAndData> serializedEvents = events.stream().map(event -> toEventTypeAndData(event, serializedMetadata)).collect(Collectors.toList()); CompletableFuture<EntityIdVersionAndEventIds> outcome = aggregateCrud.save(clasz.getName(), serializedEvents, AggregateCrudMapping.toAggregateCrudSaveOptions(saveOptions)); if (activityLogger.isDebugEnabled()) return CompletableFutureUtil.tap(outcome, (result, throwable) -> { if (throwable == null) activityLogger.debug("Saved entity: {} {} {}", clasz.getName(), result.getEntityId(), AggregateCrudMapping.toSerializedEventsWithIds(serializedEvents, result.getEventIds())); else activityLogger.error(String.format("Save entity failed: %s", clasz.getName()), throwable); }).thenApply(EntityIdVersionAndEventIds::toEntityIdAndVersion); else return outcome.thenApply(EntityIdVersionAndEventIds::toEntityIdAndVersion); }
public EventuateAggregateStore build() { validateKeyAndSecret(eventuateCredentials.getApiKeyId(), eventuateCredentials.getApiKeySecret()); validateSpace(eventuateCredentials.getSpace()); if (this.vertx == null) { this.vertx = vertx(); } AggregateCrud aggregateCrud = new EventuateRESTClient(vertx, eventuateCredentials, makeDefaultUrl()); AggregateEvents aggregateEvents = new EventuateSTOMPClient(vertx, eventuateCredentials, makeDefaultUrl()); SnapshotManager snapshotManager = new SnapshotManagerImpl(); return new EventuateAggregateStoreImpl(aggregateCrud, aggregateEvents, snapshotManager, missingApplyEventMethodStrategy); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> save(Class<T> clasz, List<Event> events, Optional<SaveOptions> saveOptions) { Optional<String> serializedMetadata = saveOptions.flatMap(so -> withSchemaMetadata(clasz, so.getEventMetadata())).map(JSonMapper::toJson); List<EventTypeAndData> serializedEvents = events.stream().map(event -> toEventTypeAndData(event, serializedMetadata)).collect(Collectors.toList()); CompletableFuture<EntityIdVersionAndEventIds> outcome = aggregateCrud.save(clasz.getName(), serializedEvents, AggregateCrudMapping.toAggregateCrudSaveOptions(saveOptions)); if (activityLogger.isDebugEnabled()) return CompletableFutureUtil.tap(outcome, (result, throwable) -> { if (throwable == null) activityLogger.debug("Saved entity: {} {} {}", clasz.getName(), result.getEntityId(), AggregateCrudMapping.toSerializedEventsWithIds(serializedEvents, result.getEventIds())); else activityLogger.error(String.format("Save entity failed: %s", clasz.getName()), throwable); }).thenApply(EntityIdVersionAndEventIds::toEntityIdAndVersion); else return outcome.thenApply(EntityIdVersionAndEventIds::toEntityIdAndVersion); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityWithMetadata<T>> find(Class<T> clasz, String entityId) { return find(clasz, entityId, Optional.empty()); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> update(Class<T> clasz, EntityIdAndVersion entityIdAndVersion, List<Event> events) { return update(clasz, entityIdAndVersion, events, Optional.empty()); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> save(Class<T> clasz, List<Event> events, SaveOptions saveOptions) { return save(clasz, events, Optional.ofNullable(saveOptions)); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityWithMetadata<T>> find(Class<T> clasz, String entityId, FindOptions findOptions) { return find(clasz, entityId, Optional.ofNullable(findOptions)); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> update(Class<T> clasz, EntityIdAndVersion entityIdAndVersion, List<Event> events, UpdateOptions updateOptions) { return update(clasz, entityIdAndVersion, events, Optional.ofNullable(updateOptions)); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> save(Class<T> clasz, List<Event> events) { return save(clasz, events, Optional.empty()); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityWithMetadata<T>> find(Class<T> clasz, String entityId) { return find(clasz, entityId, Optional.empty()); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> update(Class<T> clasz, EntityIdAndVersion entityIdAndVersion, List<Event> events, UpdateOptions updateOptions) { return update(clasz, entityIdAndVersion, events, Optional.ofNullable(updateOptions)); }
@Override public <T extends Aggregate<T>> CompletableFuture<EntityIdAndVersion> save(Class<T> clasz, List<Event> events) { return save(clasz, events, Optional.empty()); }