public void addRuleClasses(boolean failIfSqaleNotFound, boolean failIfNoExplicitKey, Iterable<Class> ruleClasses) {
new RulesDefinitionAnnotationLoader().load(repository, Iterables.toArray(ruleClasses, Class.class));
List<NewRule> newRules = Lists.newArrayList();
for (Class<?> ruleClass : ruleClasses) {
NewRule rule = newRule(ruleClass, failIfNoExplicitKey);
externalDescriptionLoader.addHtmlDescription(rule);
rule.setTemplate(AnnotationUtils.getAnnotation(ruleClass, RuleTemplate.class) != null);
if (!isSqaleAnnotated(ruleClass) && failIfSqaleNotFound) {
throw new IllegalArgumentException("No SqaleSubCharacteristic annotation was found on " + ruleClass);
}
try {
setupSqaleModel(rule, ruleClass);
} catch (RuntimeException e) {
throw new IllegalArgumentException("Could not setup SQALE model on " + ruleClass, e);
}
newRules.add(rule);
}
setupExternalNames(newRules);
}