Claus Ibsen created CAMEL-24565:
-----------------------------------

             Summary: camel-console: Authoritative typed response records so 
dev console OpenAPI response schemas are not empty
                 Key: CAMEL-24565
                 URL: https://issues.apache.org/jira/browse/CAMEL-24565
             Project: Camel
          Issue Type: New Feature
          Components: camel-core
            Reporter: Claus Ibsen


Follow-up to CAMEL-24564 (https://github.com/apache/camel/pull/25885). The 
generated OpenAPI spec currently declares every dev console's 200 response as 
"content": {"application/json": {}} -- an empty schema, no contract for what 
actually comes back.

This adds a real per-console response contract, declared statically in the Java 
source as a nested `public record Response(...)` next to doCallJson(), so it is 
visible to any future editor (human or AI) touching that method, and is read by 
the OpenAPI generator to produce a JSON Schema.

Decision: the record must be authoritative -- doCallJson() actually constructs 
and returns it (converted to JsonObject via a new generic reflective mapper), 
not just a parallel declarative doc that could drift from the real output.

New infrastructure needed (none of this exists today):
- Runtime: org.apache.camel.util.json.JsonRecordSupport in 
tooling/camel-util-json -- generic record -> JsonObject reflective converter.
- Build-time: a static buildResponseSchema(Class) method in 
GenerateDevConsoleMojo (tooling/maven/camel-package-maven-plugin) -- generic 
record-class -> JSON Schema reflective generator, reading @Metadata 
descriptions off record components.
- DevConsoleModel (camel-tooling-model) gains a responseSchema field (raw 
JsonObject), read/written by JsonMapper, consumed by 
DevConsoleOpenApiHelper.buildPathItem() to populate the response content schema 
instead of the empty placeholder.

Pilot scope (5 consoles, ordered by increasing complexity): 
CircuitBreakerDevConsole, InflightConsole, TypeConverterConsole, 
HealthDevConsole, ContextDevConsole. The remaining ~50 dev consoles keep the 
empty placeholder until a follow-up continues the rollout.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to