Hi

Model driven makes sense.

I like velocity but I understand Zoran's comment.

Maybe we can imagine some pluggable: pojo describing model and binding.

Regards
JB

Le 25 juil. 2019 à 20:28, à 20:28, Zoran Regvart <zo...@regvart.com> a écrit:
>Hi Guillaume,
>since we're all piling up on you :) One more thing I'd like you to
>consider :)
>
>I find Velocity templates a bit brittle and hard to maintain, would
>you consider a Java code generator to create the Java source code?
>
>I've found JavaPoet[1] pretty nifty in this regard. I've used it for
>the OpenAPI to Rest DSL code generator we have[2].
>
>Thanks :)
>
>zoran
>
>[1] https://github.com/square/javapoet
>[2]
>https://github.com/apache/camel/tree/master/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger
>
>On Wed, Jul 24, 2019 at 4:45 PM Guillaume Nodet <gno...@apache.org>
>wrote:
>>
>> Hey everyone !
>>
>> The last weeks, I've spend quite some time working on a camel
>metamodel.
>> The idea is to invert the way things are built in camel so instead of
>> generating the metamodel from the classes, the metamodel would be
>> maintained manually and used to generate a bunch of things.
>>
>> This would bring the following benefits:
>>   - the metamodel would necessarily be up to date
>>   - generate the model classes (XyzDefinition classes) with an
>homogeneous
>> fluent api (similar to the new endpoint DSL)
>>   - get rid of some round tripping between java -> json -> java,
>copying
>> json files everywhere , so great simplification of the build process
>>   - the DSL allows type-safe + property placeholders / references
>everywhere
>>   - generate xml readers / parsers without relying on JAXB
>>   - brings extensibility of the DSL as it would be much easier to
>create
>> DSLs based on other languages from the metamodel (yaml for example)
>>
>> I've pushed a branch that shows my experiments.  It's not fully
>working
>> yet, but it gives a good idea. It's available at
>>   https://github.com/gnodet/camel/tree/model
>> I'm progressing a bit slowly as there are lots of step by step
>adjustements
>> to do in order to keep compatibility of the DSL.
>>
>> Currently the model is generated from the json files, but the idea is
>to
>> reverse this process and have the metamodel the real primary input
>for all
>> generation.
>> The model currently looks like:
>>   https://gist.github.com/gnodet/75457febcca9a893c3c1a2b8499189b2
>>
>> The current JAXB model will need to be moved into a separate module
>so that
>> it can be kept for compatibility without interfering with the new
>generated
>> java DSL.
>>
>> So, still quite some work left, but I wanted to bring it to the
>community
>> sooner rather than later, especially before I go on PTO for a few
>weeks
>> where I'll be mostly offline.
>> Happy to discuss anything or provide more infos.
>>
>> Cheers,
>> Guillaume Nodet
>
>
>
>--
>Zoran Regvart

Reply via email to