[ 
https://issues.apache.org/jira/browse/CAMEL-4256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13078324#comment-13078324
 ] 

Keith Babo commented on CAMEL-4256:
-----------------------------------

The approach to start with a default, map-based implementation across 
components and then updating each component to have a bean-based configuration 
object seems reasonable to me.  The idea of annotating configuration fields to 
declare whether they are consumer or provider oriented is nice for producing 
URIs based on the context they are used (using UriFormat) and also documenting 
the intent of each field.  If I understand the approach correctly, it should be 
possible to use something like ConfigurationHelper to provide a single 
implementation of turning a config object into a URI string (i.e. each 
component won't have to implement toURIString() individually) and the rules for 
how parameters are represented (e.g. query parameters are listed in 
alphabetical order) would be consistent across all components.  Did I get that 
right?

> Adding a EndpointConfiguration interface
> ----------------------------------------
>
>                 Key: CAMEL-4256
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4256
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-core
>    Affects Versions: 2.8.0
>            Reporter: Hadrian Zbarcea
>            Assignee: Hadrian Zbarcea
>             Fix For: 2.9.0, 3.0.0
>
>         Attachments: camel-4256.patch
>
>
> One of the key missing pieces from the API is the explicit concept of 
> EndpointConfiguration. We use URIs for that, ant that's great, but we don't 
> have it in the API. Some components do have an informal version though.
> I am proposing adding an EndpointConfiguration interface:
> {code}
> public interface EndpointConfiguration {
>   void fromUri(String uri);
>   String toUri();
> }
> {code}
> and maybe other methods, we could also use URI instead of string for 
> pre-parsing. Same as with other concepts the default implementation would be 
> in impl and components would extend that and add fields for configuration 
> parameters. 
> This would solve problems related to URI uniqueness to a good extent as 
> toUri() should always place parameters in the same order. The Endpoint 
> interface would change though.
> The main advantage would be that we can annotate parameters and use 
> javax.validation to specify if a field is @ProducerOnly, @ConsumerOnly for 
> example, which may exclude them from toUri() (yes, there are some impacts, 
> the id uri would be different than the config uric). We could annotate them 
> with @Secret to indicate that at least the value should not appear in clear 
> in the uri, etc. We could also add an @Default("value"), allowing us to 
> exclude from the uri fields set on the default value (even if the filed was 
> explicitly set) and so on.
> This would also make static validation possible unit testing configuration 
> would be vastly simplified and we could improve coverage. We can do it in an 
> incremental way without a big impact on existing components (especially 
> outside camel) via changes in DefaultEndpoint. I am working on a prototype, 
> but feedback is highly appreciated.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to