Federico Mariani created CAMEL-23960:
----------------------------------------
Summary: camel-openai: unresolvable outputClass is silently
ignored instead of failing
Key: CAMEL-23960
URL: https://issues.apache.org/jira/browse/CAMEL-23960
Project: Camel
Issue Type: Bug
Components: camel-openai
Affects Versions: 4.21.0
Reporter: Federico Mariani
Attachments: OpenAIOutputClassUnresolvableTest.java
In {{OpenAIProducer.processInternal}}:
{code:java}
if (ObjectHelper.isNotEmpty(outputClass)) {
Class<?> responseClass =
getEndpoint().getCamelContext().getClassResolver().resolveClass(outputClass);
if (responseClass != null) {
paramsBuilder.responseFormat(responseClass);
}
}
{code}
If the class cannot be resolved (typo in the FQCN, missing dependency), the
structured-output configuration is silently skipped: the request is sent
without {{response_format}} and the user receives unstructured output with no
error or warning. An unresolvable {{outputClass}} is always a configuration
error and should fail fast — exactly like the invalid-{{jsonSchema}} case a few
lines below, which throws {{IllegalArgumentException}}.
Reproducer attached ({{OpenAIOutputClassUnresolvableTest}}); it asserts
fail-fast behavior and fails on current main.
h3. Suggested fix
Throw {{IllegalArgumentException("outputClass '...' cannot be resolved")}} when
{{resolveClass}} returns null. Ideally resolve once in {{doStart}} (the option
is endpoint-level) so misconfiguration fails at route startup; a per-header
{{CamelOpenAIOutputClass}} value should fail per exchange. Note the header
metadata declares {{javaType = "Class"}} while the producer resolves it as a
String FQCN — the metadata should be corrected to String at the same time.
_This issue was drafted by Claude Code on behalf of Federico Mariani_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)