}
}
@Override
public ExecutionResult execute(String categoryKey, PolicyContext context) {
ExecutionResult result;
List<Policy> list = map.get(categoryKey);
if (list == null)
return new ExecutionResult(context, true, "No policies registered for " + categoryKey);
ElapsedTimer categoryTimer = new ElapsedTimer();
categoryTimer.startInterval();
for (Policy policy : list) {
ElapsedTimer policyTimer = new ElapsedTimer();
policyTimer.startInterval();
result = policy.execute(context);
policyTimer.stopInterval();
PERF_LOGGER.debug("time to execute policy {0} {1}", policy.getClass().getName(), policyTimer.getIntervalInMillis());
if (!result.getStatus()) {
LOGGER.debug("Policy category {} failed on policy {}", categoryKey, policy.getClass().getName());
return result;
}
}
categoryTimer.stopInterval();
PERF_LOGGER.debug("time to execute policy category {0} {1}", categoryKey, categoryTimer.getIntervalInMillis());
return new ExecutionResult(context, true, categoryKey + " passed.");
}