[ https://issues.apache.org/jira/browse/CAMEL-4256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13078877#comment-13078877 ]
Claus Ibsen commented on CAMEL-4256: ------------------------------------ A post on @dev with [DISCUSS] has the tendency to bring in more people, as it stand out on that mailing list, among the hundres of JIRA updates its posted on @dev as well. This is after all a topic on camel-core and the Component/Endpoint API which is a very important API in Camel. So I would prefer the great good of the Camel team is behind this. > 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