Hi,
I thought a bit more about the SLING-3278 HealthCheckExecutor service,
and a fluent interface might be useful:
interface HealthCheckExecutor {
/** Select all HealthChecks for execution */
HealthCheckContext all();
/** Select a single HealthCheck for execution */
HealthCheckContext for(HealthCheck hc);
/** Select HealthChecks by tag for execution */
HealthCheckContext forTags(String ...tags);
}
/** Context holds execution options and triggers the actual execution */
interface HealthCheckContext {
void withTimeout(int timeout, TimeUnits units);
void clearCache();
AggregatedResult getResult();
List<Result> getAllResults();
}
Which allows for writing things like
executor.all().getAllResults();
executor.for(hc).getResult();
executor
.forTags("foo", "-bar")
.withTimeout(5, TimeUnit.SECONDS)
.getResult();
// Clear cache before execution
executor.forTags("security").clearCache().getAllResults();
// Clear all cached Results
executor.all().clearCache();
AggregatedResult extends Result with a List<Result> getResults()
method. Its status is the highest of the aggregated statuses, and its
log is the concatenation of all individual logs.
WDYT?
-Bertrand