[ 
https://issues.apache.org/jira/browse/CAMEL-23981?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-23981.
---------------------------------
    Resolution: Fixed

> camel-yaml-dsl - springTransactionErrorHandler constructs 
> JtaTransactionErrorHandlerDefinition instead of 
> SpringTransactionErrorHandlerDefinition
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-23981
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23981
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-yaml-dsl
>    Affects Versions: 4.21.0
>            Reporter: Federico Mariani
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.22.0
>
>
> In {{ErrorHandlerDeserializer}} 
> ({{dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/ErrorHandlerDeserializer.java}},
>  lines 112-114) both keys fall into the same switch case:
> {code:java}
> case "jtaTransactionErrorHandler":
> case "springTransactionErrorHandler":
>     factory = asType(val, JtaTransactionErrorHandlerDefinition.class);
>     break;
> {code}
> However the {{@YamlProperty}} annotation on the same class (lines 68-70) 
> declares {{springTransactionErrorHandler}} as 
> {{object:org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition}},
>  that class exists in camel-core-model, and camel-spring registers its 
> error-handler reifier for exactly that class 
> ({{SpringTransactionPolicy.java:54}}).
> {{ErrorHandlerReifier.reifier()}} looks up reifiers by *exact* definition 
> class ({{ERROR_HANDLERS.get(definition.getClass())}}) and the core fallback 
> only covers deadLetterChannel/default/no/ref. Consequences of the YAML DSL 
> producing the JTA definition:
> * Spring application without camel-jta: startup fails with 
> {{IllegalStateException: Unsupported definition}} (only camel-spring 
> registered a reifier, but for the Spring definition class).
> * camel-jta present: silently uses JTA transaction semantics instead of the 
> Spring transaction manager the user asked for.
> The case merge was introduced by CAMEL-20568 ({{c0228d4f12c6}}) with no 
> comment justifying it, and there is no YAML test covering 
> {{springTransactionErrorHandler}}.
> Fix: split the case and construct {{SpringTransactionErrorHandlerDefinition}} 
> for the {{springTransactionErrorHandler}} key; add a YAML test.
> _Filed by Claude Code on behalf of Croway._



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

Reply via email to