There’s at least one problem…. (also asked on zulip) Are camel-core-languages actually part of camel-spring-boot?
They are listed in the table in "list of starters" but with an artifactid of "camel-base" which isn't a starter. The current site doesn't have autoconfiguration info for them either. Since they are in the table, I added info to them for my PRs, but it's at least partly wrong, since it comes out as needing camel-core-languages-starter, which doesn't exist. cf. https://pr-644--camel.netlify.app/camel-spring-boot/latest/list.html#_camel_languages <https://pr-644--camel.netlify.app/camel-spring-boot/latest/list.html#_camel_languages>, https://pr-644--camel.netlify.app/components/latest/languages/header-language.html#_spring_boot_auto_configuration <https://pr-644--camel.netlify.app/components/latest/languages/header-language.html#_spring_boot_auto_configuration>. Since they say they are part of camel-core, I've used core.json to construct the autoconfig options table, but that doesn't look very relevant to me. Is there a starter needed for them? If so, which one? camel-core-starter seems like a possibility, is it correct? If no starter is needed, why are they in the spring-boot starters table? I hope to be able to merge everything tomorrow, it got too late tonight. David Jencks > On Oct 12, 2021, at 7:41 PM, David Jencks <david.a.jen...@gmail.com> wrote: > > The part of this work I’m ready for now is done, except for some > commit-squashing and dealing with check style errors :-) > > Preview at https://pr-644--camel.netlify.app > <https://pr-644--camel.netlify.app/> > > I seem to only be able to write AsciiDoc by now…. :-) Here’s a list of the > differences between table rows new/old: > > —— > = Differences between spring-boot list-old and list > > == latest (main) > > === In list, not list-old: > > * disruptor-vm-component > * splunk-hec-component > > * (3 bindy dataformats collapsed to one link, corresponding to the single > main bindy doc page) > > * csimple-language > > == 3.12.x > === In list, not list-old: > > * disruptor-vm-component > * splunk-hec-component > > * (3 bindy dataformats collapsed to one link, corresponding to the single > main bindy doc page) > > * csimple-language > > == 3.11.x > === In list, not list-old: > > * splunk-hec-component > * (3 bindy dataformats collapsed to one link, corresponding to the single > main bindy doc page) > * csimple-language > > Moved to separate table: > > * camel-spring-cloud > * camel-spring-cloud-consul > * camel-spring-cloud-netflix > * camel-spring-cloud-zookeeper > > == 3.7.x > === In list, not list-old: > * splunk-hec-component > * (3 bindy dataformats collapsed to one link, corresponding to the single > main bindy doc page) > * csimple-language > > > Moved to separate table: > > * camel-spring-cloud > * camel-spring-cloud-consul > * camel-spring-cloud-netflix > * camel-spring-cloud-zookeeper > > —— > > There are also some presentation differences in the tables, the new ones > follow the tables in main camel components more closely, e.g. > > <td class="tableblock halign-left valign-top"><p > class="tableblock">Stable</p></td> > >> > <td class="tableblock halign-left valign-top"><p > class="tableblock">Stable-deprecated</p></td> > > as the deprecation marker. > > Also quite a few core languages now list the starter as > > <td class="tableblock halign-left valign-top"><p > class="tableblock">camel-core-languages-starter</p></td> > rather than > <td class="tableblock halign-left valign-top"><p > class="tableblock">camel-base</p></td> > > Is this correct? > > There are 8 PRs: > (Camel) > Main spring boot jsonpath (allow me to squash and merge) > <https://github.com/apache/camel/pull/6261> > Camel 3.12.x spring boot jsonpath (please let me squash and merge) > <https://github.com/apache/camel/pull/6263> > Camel 3.11.x spring boot jsonpath (please let me squash and merge) > <https://github.com/apache/camel/pull/6264> > Camel 3.7.x spring boot jsonpath (please let me squash and merge) > <https://github.com/apache/camel/pull/6262> > (Camel-spring-boot) > Main jsonpath (please let me squash and merge) > <https://github.com/apache/camel-spring-boot/pull/388> > Camel spring boot 3.12.x jsonpath (please let me squash and merge) > <https://github.com/apache/camel-spring-boot/pull/387> > Camel spring boot 3.11.x jsonpath (please let me squash and merge) > <https://github.com/apache/camel-spring-boot/pull/386> > Camel spring boot 3.7.x jsonpath (please let me squash and merge) > <https://github.com/apache/camel-spring-boot/pull/385> > > If everything looks good I plan to squash each PR to 2 or 3 commits (code > changes and generated changes) and rebase/merge. I don’t think any playbook > changes are needed. > > I’m completing a big upgrade of the antora-indexer and jsonpath extensions, > and plan to finish that next. It will involve changing the syntax of most > uses of these extensions. After that I expect to be able to implement > automated checking for starters that aren’t linked to by main camel > components. I think there are about 5, but have no way to find them at this > point. > > > David Jencks > >> On Oct 12, 2021, at 12:01 AM, Claus Ibsen <claus.ib...@gmail.com >> <mailto:claus.ib...@gmail.com>> wrote: >> >> On Mon, Oct 11, 2021 at 8:07 AM David Jencks <david.a.jen...@gmail.com >> <mailto:david.a.jen...@gmail.com>> wrote: >>> >>> I’ve been working on generating the spring-boot autoconfig info from the >>> json files generated during the spring-boot build, and the spring boot >>> “list.adoc” tables using the indexer extension (like the components tables >>> are generated). >>> >>> My understanding of the spring-boot stuff is that: >>> >>> - any Camel component can be used in Spring >>> >>> - Some camel components/dataformats… can participate in spring-boot auto >>> configure. These components are identified as having a corresponding >>> camel-*-starter project in the spring-boot repo. >>> >>> - There are 3 kinds of these: >>> >>> 1. There’s (generated) java code and a generated json file >>> >>> 2. There’s generated java code but no generated json file (e.g. jasypt) >>> >>> 3. There’s no java code and no json file, just some properties files etc. >>> (e.g. aws-xray) >>> >>> I’m really not familiar with spring-boot or the philosophy behind it, but >>> my guess is that if there’s a spring-boot starter jar then spring will >>> create a singleton instance of something in the jar, and if there’s a json >>> file that will guide or describe configuring this instance with data from >>> somewhere. If this is roughly correct, then the 2nd and 3rd kinds >>> correspond to non-configurable instances. >>> >>> I’ve discovered that: >>> >>> - several components have starters that are not listed in the existing list >>> >> >> Oh which ones for example is that? >> >> For Camel on Spring Boot then we only support the -starter JARs. So if >> there is not a starter then its not supported. >> And yes some of the starters are just shallow and empty/almost empty. >> >> But it's our way to curate what we support and make sense to use on Spring >> Boot. >> >> For Camel on Karaf its the features.xml file that defines what we support >> there. >> And ditto for Quarkus with the extensions. >> >> >>> - quite a few components main adoc documentation do not include the >>> relevant autoconfig information (even if it’s “no options”) >>> Most of these are linked to from the “list” page, so I’d imagine it would >>> be pretty confusing to follow the link and find no information about >>> spring-boot. >>> >>> Evidently, the current process is not maintainable. >>> >>> The (new, jsonpath based) autoconfig doc generation is based on putting the >>> name of the appropriate json file in the main adoc file as a header >>> attribute. >>> >>> I think we can produce something more resilient by: >>> >>> - for kinds (2) and (3), put a no-options appropriately named json file in >>> the starter project under src/main/docs. This will not get added to the >>> starter jar, unlike the properly generated json files. >>> >>> - put the corresponding header attribute in the appropriate main adoc file >>> >>> Now we should be able to do a basic check, that the number of unique json >>> file names from header attributes is equal to the number of json files, >>> which should be equal to the number of starters. This should be possible to >>> do as part of the website build. >>> >>> This won’t check that for instance with a starter that serves many >>> components, all the components will refer to the starter information, but >>> it will detect most or all of the problems I’v found so far. >>> >>> The preview for https://github.com/apache/camel-website/pull/644 >>> <https://github.com/apache/camel-website/pull/644> shows how far I’ve >>> gotten with this: the appropriate page to look at is >>> https://pr-644--camel.netlify.app/camel-spring-boot/latest/list-2.html >>> <https://pr-644--camel.netlify.app/camel-spring-boot/latest/list-2.html> >>> This has, in addition to the tables of spring-boot autoconfigure-enabled >>> components, counts of json files used and existing (there are 5 unused), >>> and tables of non-spring-boot-enabled components/dataformats… >>> All the dataformats and languages are set up properly. There are 2 >>> components that aren’t spring-boot-enabled and a whole lot of “others" >>> >>> I think that actually failing the build when there are unused .json files >>> and also finding out which json files are unused will have to wait for an >>> upgrade to the antora-indexer… unfortunately this will require some syntax >>> changes. >>> >>> I’d like to polish these changes, replace the list page with the new one >>> (with the extra info removed), port this work to the other relevant >>> branches, and then pursue releasing the upgraded antora-indexer extension >>> and upgrading the syntax, and then work on making the checks work. >>> >>> Does this seem reasonable? >>> >> >> Yeah sure continue your great work and effort on improving the >> documentation for all the Camel projects on the website. >> >> >> >>> —— >>> >>> Another feature of the preview is that I found out how to make the option >>> names in all the jsonpath generated tables link to themselves and display a >>> marker on hover, just like section titles, so you can now easily copy the >>> link to an option and paste it somewhere. (the names have been links for a >>> while, but there was no practical way to find out what the link was!) >>> >>> E.g. … >>> https://pr-644--camel.netlify.app/components/latest/amqp-component.html#_endpoint_query_option_disableReplyTo >>> >>> <https://pr-644--camel.netlify.app/components/latest/amqp-component.html#_endpoint_query_option_disableReplyTo> >>> >>> David Jencks >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com <http://davsclaus.com/> @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2 >> <https://www.manning.com/ibsen2>