[
https://issues.apache.org/jira/browse/CAMEL-7999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-7999.
--------------------------------
Resolution: Fixed
> Camel Toolbox - Easy information about all Camel components and the release
> for tooling
> ---------------------------------------------------------------------------------------
>
> Key: CAMEL-7999
> URL: https://issues.apache.org/jira/browse/CAMEL-7999
> Project: Camel
> Issue Type: New Feature
> Components: camel-core, jmx, tooling
> Reporter: Claus Ibsen
> Assignee: Claus Ibsen
> Fix For: 2.15.0
>
>
> A Camel release contains many components, and we have the ability to let
> components document which options they offer.
> Though there is currently a few shortcomings that can be improved
> - the component json schema is currently runtime generated, which requires to
> load the component and create an instance of it. Instead we should build-time
> generate it, which we do today with the camel apt compiler plugin. *DONE*
> - we should include documentation about the option from the javadoc, that
> allows end users to fully document a component using plain java getter/settr
> with javadocs, and add those @UriParam annotations for the apt compiler to
> detect and leverage *DONE*
> - add a module that embeds all these json schema files in a single module,
> and also other information, such as the xml schemas, and what else can be
> handy. Then there is a single module as a one stop shop for tooling and
> whatnot to gather information about a Camel release. There is a new
> camel-catalog module that contains this now. *DONE*
> - allow at runtime to explain an endpoint uri what the options in use are, eg
> as we got the json schema, we can add mbeans that can explain those options,
> than we can use in tooling, JMX, karaf commands etc. And also IDE editors etc
> *DONE*
> - add JMX/Java API to explain a EIP and also get a tabular data with a list
> of all EIPs and their data. *DONE*
> - enrich the dsl xml to inject javadoc for the eips into the xml schema, so
> we have documented in the xsd directly that any tooling can use. We have a
> old ticket about this. But the apt compiler plugin can detect the @JAXB
> annotations in the model and extract the javadoc, and generate a json schema
> with, and then we can load those and enrich into the generated xsd, or enrich
> into the jaxb model generator, or something.
> - migrate more Camel components to include javadoc as documentation for their
> options *DONE* for all camel-core. Other components will be migrated over
> time.
> - figure out how to specify a default value in the json schema. Unfortunately
> the apt plugin cannot grab that from the source code. So the only solution I
> can think of now is to add an attribute to the @UriParam where you can
> specify that, eg this is also what I have seen others do. There is now a
> defaultValue attribute on UriParam to be used. *DONE*
> - add component summary to component json file so we have a description of
> what the component does *DONE*
> - add attribute to @UriEndpoint to link it to the component class, so we can
> include the class name of the component in the json schema, which allows
> Camel to link from component class -> schema. eg the point is that if people
> define a component as "activemq" we do not know its the jms schema that has
> its documentation. Though we can infer this by the component class name. And
> alternative is for a component to have an api to return its original schema
> name etc. So activemq can say "jms" etc. We can resolve this by iterating the
> component data, and find the FQN of the components. *DONE*
> - add @UriComponent annotation to component class which allows end users to
> provide meta-data about the component. Currently we grab a summary of what
> the component does from the maven pom.xml. Though this annotation prepares us
> for being able to scan the component class as well for which option it
> provides, so we can have out of the box documentation for that also. We
> detect getter/setter pairs as component options, and the apt plugin generates
> those in the schema. Use @Metadata to configure the options. *DONE*
> - add JMX/Java API to explain a component and also get a tabular data with a
> list of all components and that data. *DONE*
> - improve karaf commands to use the component information to show that also
> *DONE*
> - add name of karaf feature of the component, eg its 99% came-xxx, but there
> may be some exceptions. We can likely add a property to the maven plugin that
> generates component.properties to include the karaf feature name as the
> artifactId by default. But allow to set a property in the pom.xml in case
> there is another name, or no karaf feature
> - add support for @UriPath in apt plugin *DONE*
> - javadoc documentation is not acessible from components which extend other
> components (eg javadoc from source code of parent components). For example
> camel-ftp extending file in camel-core etc. Added description to @UriParam to
> be used for this purpose. *DONE*
> - add support for associating label(s) to a endpoint so we can group the
> various Camel components. A bit like this page:
> http://camel.apache.org/component-list-grouped.html *DONE*
> - rename @Label to something more generic like @Metadata or something, so we
> can introduce new attributes for new stuff. For example a link which refers
> to the project website, or an icon to refer to an icon that symbol the
> component, etc. *DONE*
> - we now support components + eip with json schema and documentation and jmx
> + commands out of the box. We should look into adding the same for languages
> and data formats. Then we have all of them covered.*DONE*
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)