Hi The -common JARs are not starters, and they should not be listed.
On Mon, Oct 18, 2021 at 7:45 AM David Jencks <david.a.jen...@gmail.com> wrote: > > Locally I got the ability to show unused starter json files working, and > fixed the obvious problems: > > avro-rpc was using avro > paho-mqtt5 was using paho > in 3.7.x, grape and joor were set up wrong. > > There are still some “starters” i’m not sure about: > > debezium-common > http-common > jetty-common > > In a previous commit I added empty json files for these on the theory that if > they were starters they should have instructions on how to use them, but they > don’t have corresponding main camel doc pages. Are these starters > automatically installed by the corresponding non-common starter artifacts > such as camel-debezium-mongodb-starter? If so, I can remove the empty json > files. If not, how should their usage be documented? > > I’m hoping to get my updated Antora extensions published in the next couple > of days, at which point we can upgrade Camel to use them. > > David Jencks > > > On Oct 13, 2021, at 8:14 PM, David Jencks <david.a.jen...@gmail.com> wrote: > > > > They are part of the camel-core-starter, although it’s hard to find the 2 > > options per language among the 147 options for the starter. This suggests > > that, for starters that encompass more than one component, it would be > > useful to only show the options relevant to that component on the > > components’ page. > > > > In any case I believe everything is working properly and I’ve merged all > > the 9 PRs. > > > > The core and non-core languages are currently in different tables on the > > spring-boot list page: I should be able to put them back into one table > > after upgrading antora-indexer. > > > > David Jencks > > > >> On Oct 12, 2021, at 11:03 PM, David Jencks <david.a.jen...@gmail.com > >> <mailto:david.a.jen...@gmail.com>> wrote: > >> > >> 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 > >>> <mailto: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> > >> > > > -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2