Dhiraj Bokde created CAMEL-7487:
-----------------------------------

             Summary: Create an archetype and code generation plugins to 
generate Camel Components that wrap some API
                 Key: CAMEL-7487
                 URL: https://issues.apache.org/jira/browse/CAMEL-7487
             Project: Camel
          Issue Type: Improvement
          Components: camel-core, tooling
    Affects Versions: 2.12.4
            Reporter: Dhiraj Bokde
            Assignee: Dhiraj Bokde
             Fix For: 2.12.4


The Facebook component took the approach of creating an API model for the 
Facebook4J API and mapping its methods and parameters to its URI endpoint using 
API independent code. This reduced the number of lines of code in the component 
significantly while still being able to expose every operation in the 
Facebook4J API.

This approach can be made generic, so that an API model can be created for any 
Java Class/Interface that needs to be wrapped by a Camel component. This model 
can either be manually written in a signature file similar to the output from 
the 'javap' command with a method per line with parameter names, or 
automatically generated by parsing Javadoc. 

The method and parameter names then can be mapped to the component's URI paths 
and URI parameters/options. The component could use a map of API name path 
prefixes to several APIs it supports/implements. 

An API-component archetype could generate boilerplate code that uses the 
code-generation plugins that can generate models. The component developer then 
just has to populate with code for actually creating the API proxies. Even 
integration tests can be generated (which use nulls for test values) for 
producer endpoints for the component, and the developer just needs to complete 
the skeleton test with actual values. The producer endpoint code can be easily 
copied and modified to write consumer tests. 

Components may want to customize consumer processing based on the consumer 
capabilities or features of the wrapped API/technology, which can be easily 
done by modifying the generated consumer code. 

This micro-framework for generating Camel components that use API models, will 
significantly reduce the amount of effort and time it takes to wrap any API and 
expose it as a Camel component. The framework is also useful in situations 
where an API is not readily available, but one can be written as a  Java POJO 
or Interface and then wrapped as an API component. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to