Interface AsyncApiControlPlane
- All Known Implementing Classes:
AsyncApiControlPlaneImpl
HttpState can route PUT/GET /mockserver/asyncapi
without depending on the mockserver-async module.
The implementation lives in org.mockserver.async.controlplane.AsyncApiControlPlaneImpl
(mockserver-async) and is registered at server startup via
AsyncApiControlPlaneRegistry.register(AsyncApiControlPlane).
This follows the same singleton-registry pattern used by GrpcHealthRegistry,
WasmStore, and DriftStore:
a lightweight interface/holder in core, implementation in an optional module, HttpState
routes to the holder, and the holder gracefully returns "not available" when no
implementation is registered.
-
Method Summary
Modifier and TypeMethodDescriptiongenerateHttpExpectations(String requestBody) Generate HTTP mock expectations from an AsyncAPI spec so that example messages can be served over plain HTTP (oneGETexpectation per channel returning a schema-aware example payload), without standing up a live message broker.com.fasterxml.jackson.databind.JsonNodeLoad an AsyncAPI spec and start mocking (publishing and/or subscribing).voidreset()Reset all async mocking state — stop publishers/subscribers, clear recorded messages.com.fasterxml.jackson.databind.JsonNodestatus()Return the current status: loaded spec info, active channels, publishers, subscribers, and recorded messages.Verify that recorded messages match the given criteria.
-
Method Details
-
load
Load an AsyncAPI spec and start mocking (publishing and/or subscribing).- Parameters:
requestBody- the raw request body — either a plain AsyncAPI spec (JSON/YAML) or a JSON wrapper{"spec": "...", "brokerConfig": {...}}- Returns:
- a JSON status node describing what was loaded and started
-
status
com.fasterxml.jackson.databind.JsonNode status()Return the current status: loaded spec info, active channels, publishers, subscribers, and recorded messages.- Returns:
- a JSON status node
-
reset
void reset()Reset all async mocking state — stop publishers/subscribers, clear recorded messages. Called fromHttpState.reset(). -
verify
Verify that recorded messages match the given criteria.The verification request is a JSON string with fields:
channel(required) — the channel/topic to checkpayloadSubstring(optional) — payload must contain this substringpayloadJsonPath(optional) — a dot-notation JSON path to extractexpectedValue(optional) — the expected value at the JSON pathcount(optional) — object withatLeast,atMost, orexactlyfields; defaults toatLeast: 1
- Parameters:
verificationJson- the JSON verification request- Returns:
nullor empty string if the verification passes; a human-readable failure description if it does not- Throws:
IllegalArgumentException- if the request is malformed
-
generateHttpExpectations
Generate HTTP mock expectations from an AsyncAPI spec so that example messages can be served over plain HTTP (oneGETexpectation per channel returning a schema-aware example payload), without standing up a live message broker.This is the import analogue of
load(String): instead of publishing example messages to a broker, it returns expectations the caller can register on the HTTP mock. Implemented in mockserver-async (which has access tomockserver-coretypes), the result is returned as a JSON array string in the standard MockServer expectation format, so thatHttpStatecan deserialize and add it without a compile-time dependency on the async module's parser.- Parameters:
requestBody- the raw request body — a plain AsyncAPI spec (JSON/YAML) or a JSON wrapper{"spec": "...", "channelPathPrefix": "..."}- Returns:
- a JSON array string of MockServer expectations (one per channel)
- Throws:
IllegalArgumentException- if the spec is missing or cannot be parsed
-