Hi, Claus. I have done what I hope was a fairly full tracing through the code of camel-core, and I can now say that I appreciate your concern about adding things to core! I also took a closer look at the Saga and Kamelet components, and that helped to correct a misconception that I had -- components are not solely for implementing things like transport implementations into Camel, and that it is (arguably) a more suitable mechanism for adding anything that does not have a strict and solid reason for existing in core. So I will implement this EIP as a component, and not inside of core. I created a markdown file with my notes when I traced through core. If you, or anyone else, might be interested, I can attach it to a reply here.
Thanks, Steve On Wed, Nov 24, 2021 at 10:20 AM Claus Ibsen <claus.ib...@gmail.com> wrote: > Hi > > Adding EIPs or changes to the DSL is not a Camel end user task, and is > not documented thoroughly. > Adding new EIPs happens more rarely and there is maybe a little > hesitation to add because when its in the DSL it stays for a long > time. > Also the DSL can become bloated - there are some mistakes from Camel > v1 and v2 that we have today. > > That said to add a new EIP there are 2 ways > > - The EIP is implemented fully in the core, so all its code are in core. > - The EIP is implemeted in a component and are located in camel-xxx in > the components folder. Examples are circuit breakers, saga, kamelet > and maybe others I forgot. > > So first you need to find out if its the former or the latter. However > for both cases, the the DSL model are in the core and there is a fair > bit of code to write to add a new model. > Therefore its a good idea to find a simple EIP and see where its used > in the code - can be ConvertBodyDefinition (are in core). Or if its > outside then maybe KameletDefinition which is the latest EIP added. > > The reifer is the "guy" that sits between the model (DSL) and the > processor (implementation), so all 3 are separated in their own JARs. > > And on top of that then there is also the new YAML DSL, so adding a > new EIP can require some coding there too, but that can be done > afterwards. > At first is to get the regular Java and XML DSLs to work. The XML DSL > is source generated with a maven plugin, and it can "have weird > problems" if the DSL model is wrong. > So if you have a very complex EIP then it can be tricky sometimes. > > > > On Mon, Nov 22, 2021 at 10:16 PM Steve973 <steve...@gmail.com> wrote: > > > > Hi, all. I am working on a new version of the Dynamic Router processor > > that implements the pattern spec much more closely, and I have the > initial > > implementation complete, but I want to test it (among other ways) by > using > > it in the DSL. I haven't seen any documentation on how to do this, or > any > > tutorials. Have I missed something? Could anyone give some kind of > > overview? I could probably use a different processor and trace up > through > > the classes to see what all is involved, but I don't want to miss > anything, > > and this would be great documentation to have. If it would be helpful > for > > other contributors, I would not mind putting it together for inclusion in > > the overall documentation. > > > > Thanks, > > Steve > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 >