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


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