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)

Reply via email to