I can easily remove the empty starter json files, but if e.g. 
camel-debezium-common-starter isn’t a starter, what is it?  Removing the 3 
starter projects from camel-spring-boot results in integration test failures.  
Does some other process install these as dependencies as appropriate?  Are they 
actually unnecessary but something needs more tweaking?

David Jencks

> On Oct 18, 2021, at 12:17 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> 
> 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 
> <mailto: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> <mailto: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/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>
>>>>  
>>>> <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> <mailto: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/> <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 
>>>>> <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 
>>>>> <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 
>>>>> <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 
>>>>> <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 
>>>>> <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 
>>>>> <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 
>>>>> <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 
>>>>> <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> <mailto: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> <mailto: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> 
>>>>>>> <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>
>>>>>>>  
>>>>>>> <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><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/> <http://davsclaus.com/ 
>>>>>> <http://davsclaus.com/>> @davsclaus
>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 
>>>>>> <https://www.manning.com/ibsen2> <https://www.manning.com/ibsen2 
>>>>>> <https://www.manning.com/ibsen2>>
>>>> 
>>> 
>> 
> 
> 
> -- 
> Claus Ibsen
> -----------------
> http://davsclaus.com <http://davsclaus.com/> @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2 
> <https://www.manning.com/ibsen2>

Reply via email to