[
https://issues.apache.org/jira/browse/CAMEL-10795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15871682#comment-15871682
]
Roland Huss commented on CAMEL-10795:
-------------------------------------
I think, too, that one specific check a time with a single result makes sense.
Think it make sense to use delegated object for the validation / check.
w.r.t to naming, maybe its better to use a not-so-specific name like
{{Validator}} (for me I always associated validation of configuration, however
this is a bit more like checking also connections). Maybe {{Checker}},
{{Verifier}} or {{Tester}} ?
So maybe something along the lines
{code:java}
interface Verifier {
// actual action
verify(Map<String, String> options);
enum Scope {
// only check connectivity, if make sense for the component
connect,
// only check parameters correctness
validate
}
enum Status {
OK,
ERROR,
UNSUPPORTED
}
interface Result {
Status getStatus();
Scope getScope();
// Still to think about generic meta data ...
Map<String, String> getErrorDetails();
Map<String, String> getParameterErrors();
....
}
}
interface Component {
Verifier getVerifier(Verifier.Scope scope)
}
{code}
> PingCheck API
> -------------
>
> Key: CAMEL-10795
> URL: https://issues.apache.org/jira/browse/CAMEL-10795
> Project: Camel
> Issue Type: New Feature
> Components: camel-core
> Reporter: Claus Ibsen
> Fix For: 2.19.0
>
>
> Related to CAMEL-10026 about Health Check API
> We need some way for Camel components to be able to more easily validate if
> they can connect to their remote system.
> And for that the user must configure the Camel component/endpoint accordingly
> with details such as username/password/tokens/ other beans etc.
> How this is done varies from Camel component to component, but most of them
> uses endpoint options.
> So we may want to introduce some interface (whether the name Pingable is a
> good name is up for discussion)
> {code}
> interface Pingable {
> PingResult ping(Map<String, String> config);
> boolean canPing(Map<String, String> config);
> }
> class PingResult {
> private boolean isSuccess();
> private String errorMessage();
> }
> {code}
> This API is just a little suggestion.
> The parameters should ideally be type less, eg Map<String, String> as the
> user configures this in endpoint uris, XML DSL etc. and therefore we should
> be able to do this without having to use Java code per see.
> Also we may want to have canPing as a method to check if the component can
> accept the ping or not. In some cases it may not be able to do the ping.
> For example camel-http component would just require the following information
> in the Map<String, String>
> httpUri=http://myserver/foo/bar
> Where httpUri is the name of the option accordingly to the table at
> https://github.com/apache/camel/blob/master/components/camel-http/src/main/docs/http-component.adoc
> And then it depends on each Camel component how they do the ping check, the
> http component may do a HTTP HEAD or a HTTP GET etc and check the HTTP
> response code etc.
> Notice this is not intended entirely for runtime health check, but for
> validating/testing Camel components can work with the user given
> configuration to connect to the remote system.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)