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 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

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 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

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/

I hope that helps.

-- 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




Reply via email to