I finally clicked the links you kindly provided…. > On Apr 23, 2020, at 7:47 AM, Peter Palaga <ppal...@redhat.com> wrote: > > On 23/04/2020 16:10, Claus Ibsen wrote: >> On Wed, Apr 22, 2020 at 9:39 PM David Jencks <david.a.jen...@gmail.com> >> wrote: >>> >>> I looked through the non-core parts of the website and see that the >>> subprojects generally have one or more “index tables” similar to the index >>> tables for the “main” components component (and now the 3.2.x version of >>> “components”). >>> >>> I think it would be nice if these all had the same format and method of >>> generation as the main ones. Looking briefly at the code, it’s not very >>> clear to me how the information gets from human effort into the table. In >>> order to use the “index extension” as in the “main” tables, the necessary >>> information has to be available as asciidoc attributes in the pages to be >>> included. It’s possible to do various bits of asciidoc magic so that these >>> pages might not be the ones in the component component, but rather wrappers >>> around them, but it would certainly be simpler if the info could be in the >>> current pages. >>> >>> For the main camel components, IIUC the workflow is like this: >>> >>> 1. A developer annotations the actual java class >>> 2. Something extracts these annotations and constructs a <component>.json >>> file from the information. > > It is not only annotations, it is also JavaDoc of certain classes and some > parts of pom.xml It is the GenerateMojo that assembles the json files > https://github.com/apache/camel/blob/master/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java#L34-L62 > > <https://github.com/apache/camel/blob/master/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java#L34-L62> > It calls other mojos, not sure which particular one does that. > >>> 3. In the camel maven packaging plugin UpdateReadmeMojo, this information >>> is extracted from the .json file and translated into suitable header >>> attributes. >>> >>> Here’s what I think I’ve discovered about the subprojects…. >>> >>> - Camel K: no components table, but there’s a traits list/table that could >>> perhaps benefit from the same sort of treatment. >>> >>> - Camel Karaf: There’s a table of components that seems to be extracted >>> from the feature file. >>> — How is this feature file maintained or generated? >> Manaully. >>> — The existing table seems to have a second line under each component name >>> such as 'activemq:destinationType:destinationName’ I can’t quite imagine >>> what this is. (this shows up in quarkus and spring-boot-starter tables also) >>> >> Its Camel endpoint syntax for using the component (eg syntax in >> @UriEndpoint) eg how the component are used in endpoint uris in your >> Camel routes >>> - Camel Kafka Connector: I don’t see any index tables >>> >>> - Camel Quarkus: Index tables “just like” in main components. I haven’t >>> identified where the information for these comes from. > > First the PrepareCatalogQuarkusMojo generates the json files for Camel > Quarkus Catalog > https://github.com/apache/camel-quarkus/blob/master/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java > > <https://github.com/apache/camel-quarkus/blob/master/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/PrepareCatalogQuarkusMojo.java> > > The Catalog metadata is then used by UpdateDocExtensionsListMojo > https://github.com/apache/camel-quarkus/blob/master/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java > > <https://github.com/apache/camel-quarkus/blob/master/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateDocExtensionsListMojo.java> > to generate the adoc page. > We currently have per-extension adoc pages rather rarely, esp. when there is > some additional config option or important difference between the given > Camel Quarkus extension and the underlying Camel component, e.g. > https://camel.apache.org/camel-quarkus/latest/extensions/ahc.html > <https://camel.apache.org/camel-quarkus/latest/extensions/ahc.html> > > I am considering to have semi-generated extension pages for all extensions. > It would be handy to have a landing page for the links on > https://code.quarkus.io/ <https://code.quarkus.io/>
I wonder if it would be clearer to have a quarkus page for each extension that included the plain-camel component page and either said, “this is just the same as plain camel” or “here are the differences to plain camel”? I found it a little confusing to go to the plain camel component page from the quarkus component. This would also let us generate the index table using my antora extension. > > I hope that helps. Very much, thanks! David Jencks > > -- P > >> If you mean this table: >> https://github.com/apache/camel-quarkus/blob/master/extensions/readme.adoc >> There is a maven plugin that generates this table from the list of >> extensions it has (components) and enrich that with data from >> camel-catalog from camel v3. > > > > >>> >>> - Camel Spring Boot Starters: Index tables “just like” in main >>> components. I haven’t identified where the information for these comes >>> from. >>> >> If you mean this table: >> https://github.com/apache/camel-spring-boot/blob/master/components-starter/README.adoc >> There is a maven plugin that generates this table from the list of >> component starters it has (components) and enrich that with data from >> camel-catalog from camel v3. >>> >>> Could experts on these subprojects explain the data flow? >>> —— >>> >>> From my current point of view, everything would be simplest if the >>> information about which “extensions” apply to a given >>> component/language/data-format could be in the json file describing it; >>> IIUC one way for it to get there would be to add the information to the >>> base java class. I’d think this information might be more generally >>> useful, studying a component you could see, "hmm this is available in karaf >>> but not quarkus”. For instance, there could be a little table in each >>> component page showing which subprojects it applies to or is available in. >>> I don’t know how reliable maintaining this by hand would be or if >>> maintenance could plausibly be automated. >>> >> Yeah we have talked about this before about an uber camel-catalog that >> has such details from all the sub projects. But each own project has >> only its own information. >> There is a JIRA ticket about having a webpage on the site that lists >> the components and [x] for supported runtimes (sub projects). >>> Thanks, >>> David Jencks