throws StringSubstitutionException {
if (!isValid(groups)) {
throw new StringSubstitutionException(_strings.get("missingGroupIdentifiers"));
}
for (String groupId : groups) {
Group group = findGroupById(groupId);
if (group == null) {
_logger.log(Level.WARNING, _strings.get("missingGroup", groupId));
continue;
}
doSubstitution(group);