Hello Matt

Thank you for your input.

In my case my input is an Open API (Rest API) specification. It seems they 
don’t serve as input to the tool you mentioned.

Regards,
Arne
--

Von: Matt Pavlovich <[email protected]>
Datum: Montag, 13. Oktober 2025 um 16:34
An: [email protected] <[email protected]>
Betreff: [[email protected]] Re: 
Rest with Binding xml or auto always depends on JAXB through 
RestBindingAdviceFactory PluginHelper.getRestBindingJaxbDataFormatFactory

Hi Arne-

I’ve worked in the model generation space a long time and found that the jaxb 
tools have the most comprehensive set of capabilities (I haven’t checked in on 
json-generation in a while though).

With jaxb-tools, you can generate model classes from xsd schema(s), have code 
modules that extend models from other projects without duplicate generation, 
and annotate with the Jackson JSON bindings — so the single model class can be 
rendered XML or JSON.

Additionally, it was recently added to allow jaxb generation to _not_ generate 
the XML annotations, so the tools can be used to generate modular models that 
are Java-only or JSON-only.

jaxb-tools project:
https://github.com/highsource/jaxb-tools

Annotation plugin (to add Jackson JSON bindings)
https://github.com/highsource/jaxb-tools?tab=readme-ov-file#jaxb-annotate-plugin

Hope this helps!
Thanks,
Matt Pavlovich

Disclaimer: I am one of the maintainers that helped take over the project after 
Alexei passed away.

> On Oct 13, 2025, at 9:25 AM, Bedürftig, Arne 
> <[email protected]> wrote:
>
> Hi
>
> Thank you for the quick response. Are there any plans to change that? How is 
> this xmlDataFormat configuration option meant to be used, if I cannot use 
> anything else but JAXB?
>
> My use-case:
>
> I generate the models with Swagger Code generator and the Java lang 
> generator. The one that works best only includes JSON annotations. JAXB 
> doesn’t serialize those models without further effort, which is why I wanted 
> to try JacksonXML.
>
> I would like to stick with generated models and use auto-binding if possible.
>
> Do you suggest continuing with JAXB in Rest or to turn off binding in 
> implement serialization myself?
>
> --
>
> Von: Claus Ibsen <[email protected]>
> Datum: Montag, 13. Oktober 2025 um 16:16
> An: [email protected] <[email protected]>
> Betreff: [[email protected]] Re: 
> Rest with Binding xml or auto always depends on JAXB through 
> RestBindingAdviceFactory PluginHelper.getRestBindingJaxbDataFormatFactory
>
> Hi
>
> You cannot use jacksonXml for XML data binding.
> That is JAXB, so don't change it.
>
>
> On Mon, Oct 13, 2025 at 4:13 PM Bedürftig, Arne
> <[email protected]> wrote:
>
>> Hello,
>>
>> I want to use jacksonXml as the xmlDateFormat for my Rest bindings.
>>
>> restConfiguration()
>>                .bindingMode(RestBindingMode.json_xml) // or auto
>>                .jsonDataFormat("jackson")
>>                .xmlDataFormat("jacksonXml“)
>>
>> Note, I am also using Spring Boot and have the following dependency added.
>>
>> <dependency>
>>    <groupId>org.apache.camel.springboot</groupId>
>>    <artifactId>camel-jacksonxml-starter</artifactId>
>> </dependency>
>>
>> camel-jaxb is not on the classpath.
>>
>> When I start my application, I get this:
>>
>> Caused by: java.lang.IllegalArgumentException: Cannot find
>> RestBindingJaxbDataFormatFactory on classpath. Add camel-jaxb to classpath.
>> at
>> org.apache.camel.impl.engine.SimpleCamelContext.createRestBindingJaxbDataFormatFactory(SimpleCamelContext.java:635)
>> ~[camel-base-engine-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.impl.engine.DefaultCamelContextExtension.lazyInitAndAdd(DefaultCamelContextExtension.java:1133)
>> ~[camel-base-engine-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.impl.engine.DefaultCamelContextExtension.lambda$lazyAddContextPlugin$0(DefaultCamelContextExtension.java:1129)
>> ~[camel-base-engine-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.impl.engine.DefaultContextPluginManager.getContextPlugin(DefaultContextPluginManager.java:43)
>> ~[camel-base-engine-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.impl.engine.DefaultCamelContextExtension.getContextPlugin(DefaultCamelContextExtension.java:1104)
>> ~[camel-base-engine-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.support.PluginHelper.getRestBindingJaxbDataFormatFactory(PluginHelper.java:451)
>> ~[camel-support-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.support.PluginHelper.getRestBindingJaxbDataFormatFactory(PluginHelper.java:443)
>> ~[camel-support-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.support.processor.RestBindingAdviceFactory.build(RestBindingAdviceFactory.java:115)
>> ~[camel-support-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.reifier.rest.RestBindingReifier.createRestBindingAdvice(RestBindingReifier.java:90)
>> ~[camel-core-reifier-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:335)
>> ~[camel-core-reifier-4.14.1.jar:4.14.1]
>>
>> When I add camel-jaxb, then I get this:
>>
>> Caused by: java.lang.ClassCastException: class
>> org.apache.camel.component.jacksonxml.JacksonXMLDataFormat cannot be cast
>> to class org.apache.camel.converter.jaxb.JaxbDataFormat
>> (org.apache.camel.component.jacksonxml.JacksonXMLDataFormat and
>> org.apache.camel.converter.jaxb.JaxbDataFormat are in unnamed module of
>> loader 'app')
>> at
>> org.apache.camel.converter.jaxb.JaxbDataFormatConfigurer.configure(JaxbDataFormatConfigurer.java:21)
>> ~[camel-jaxb-4.14.1.jar:4.14.1]
>> at
>> org.apache.camel.support.PropertyBindingSupport.setSimplePropertyViaConfigurer(PropertyBindingSupport.java:806)
>> ~[camel-support-4.14.1.jar:4.14.1]
>>
>> Looking at the code, it seems like even though jacksonXml has been defined
>> as the data format, it will still try to load the JaxbDataFormat via the
>> RestBindingAdviceFactory.
>>
>> if (jaxb != null) {
>>    // to setup JAXB we need to use camel-jaxb
>>
>> PluginHelper.getRestBindingJaxbDataFormatFactory(camelContext).setupJaxb(camelContext,
>> config,
>>        bc.getType(), bc.getTypeClass(),
>>        bc.getOutType(), bc.getOutTypeClass(),
>>        jaxb, outJaxb);
>> }
>>
>> The variable jaxb is not null, because "jaxb =
>> camelContext.createDataFormat(name);“ and it will be of type
>> JacksonXMLDataFormat.
>>
>> Am I missing a configuration, or is Jackson XML not meant to work with
>> Rest?
>>
>> Thank you in advance.
>>
>> Regards,
>> Arne B.
>> --
>>
>>
>> ------------------------------------------------------------------------------
>> Informationen (einschließlich Pflichtangaben und Datenschutzerklärungen)
>> zu einzelnen, innerhalb der EU tätigen Gesellschaften und
>> Zweigniederlassungen der CITTI-Gruppe finden Sie unter
>> http://www.citti.de/html/pflichtangaben.html. Diese E-Mail enthält
>> vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht
>> der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben,
>> informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail.
>> Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist
>> nicht gestattet.
>>
>> Please refer to http://www.citti.de/html/pflichtangaben.html for
>> information (including mandatory corporate particulars and data protection
>> declarations) on selected CITTI branches and group companies registered or
>> incorporated in the European Union. This e-mail may contain confidential
>> and/or privileged information. If you are not the intended recipient (or
>> have received this e-mail in error) please notify the sender immediately
>> and delete this e-mail. Any unauthorized copying, disclosure or
>> distribution of the material in this e-mail is strictly forbidden.
>>
>> ------------------------------------------------------------------------------
>>
>
>
> --
> Claus Ibsen
> ------------------------------------------------------------------------------
> Informationen (einschließlich Pflichtangaben und Datenschutzerklärungen) zu 
> einzelnen, innerhalb der EU tätigen Gesellschaften und Zweigniederlassungen 
> der CITTI-Gruppe finden Sie unter 
> http://www.citti.de/html/pflichtangaben.html. Diese E-Mail enthält 
> vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht der 
> richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, 
> informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. 
> Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist 
> nicht gestattet.
>
> Please refer to http://www.citti.de/html/pflichtangaben.html for information 
> (including mandatory corporate particulars and data protection declarations) 
> on selected CITTI branches and group companies registered or incorporated in 
> the European Union. This e-mail may contain confidential and/or privileged 
> information. If you are not the intended recipient (or have received this 
> e-mail in error) please notify the sender immediately and delete this e-mail. 
> Any unauthorized copying, disclosure or distribution of the material in this 
> e-mail is strictly forbidden.
> ------------------------------------------------------------------------------

------------------------------------------------------------------------------
Informationen (einschließlich Pflichtangaben und Datenschutzerklärungen) zu 
einzelnen, innerhalb der EU tätigen Gesellschaften und Zweigniederlassungen der 
CITTI-Gruppe finden Sie unter http://www.citti.de/html/pflichtangaben.html. 
Diese E-Mail enthält vertrauliche und/ oder rechtlich geschützte Informationen. 
Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten 
haben, informieren Sie bitte sofort den Absender und vernichten Sie diese 
E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail 
ist nicht gestattet.

Please refer to http://www.citti.de/html/pflichtangaben.html for information 
(including mandatory corporate particulars and data protection declarations) on 
selected CITTI branches and group companies registered or incorporated in the 
European Union. This e-mail may contain confidential and/or privileged 
information. If you are not the intended recipient (or have received this 
e-mail in error) please notify the sender immediately and delete this e-mail. 
Any unauthorized copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.
------------------------------------------------------------------------------

Reply via email to