DefaultCommandBuilderExtractor

Builds a command from its route's request. Each identity fact comes from where the route's RouteIdentityBinding says (path variable, static tenant, header), decided by IdentityResolver; the space (Wow-Space-Id, then any space header alias) is taken only for a spaced aggregate, so any other aggregate's command carries the default space whatever the request sends.

Since 9.3.0 (V3), a command body whose @TenantId or @OwnerId contradicts the tenant or owner the route fixes (static tenant, {tenantId}, {ownerId}, or {id} of an aggregate owned by its ID) is rejected with an IllegalArgumentException (IllegalArgument, 400), as is a Command-Tenant-Id / Command-Owner-Id header that does.

Functions

Link copied to clipboard
open override fun extract(aggregateRouteMetadata: AggregateRouteMetadata<*>, commandBody: Any, request: ServerRequest): Mono<CommandBuilder>