in src/main/java/org/apache/sling/validation/impl/ValidationServiceImpl.java [247:273]
private void validateChildren(@NotNull Resource resource, @NotNull String relativePath, @NotNull Collection<ChildResource> childResources, @NotNull CompositeValidationResult result, @NotNull ResourceBundle defaultResourceBundle) {
// validate children resources, if any
for (ChildResource childResource : childResources) {
// if a pattern is set we validate all children matching that pattern
Pattern pattern = childResource.getNamePattern();
if (pattern != null) {
boolean foundMatch = false;
for (Resource child : resource.getChildren()) {
Matcher matcher = pattern.matcher(child.getName());
if (matcher.matches()) {
validateChildResource(child, relativePath, childResource, result, defaultResourceBundle);
foundMatch = true;
}
}
if (!foundMatch && childResource.isRequired()) {
result.addFailure(relativePath, configuration.defaultSeverity(), defaultResourceBundle, I18N_KEY_MISSING_REQUIRED_CHILD_RESOURCE_MATCHING_PATTERN, pattern.toString());
}
} else {
Resource expectedResource = resource.getChild(childResource.getName());
if (expectedResource != null) {
validateChildResource(expectedResource, relativePath, childResource, result, defaultResourceBundle);
} else if (childResource.isRequired()) {
result.addFailure(relativePath, configuration.defaultSeverity(), defaultResourceBundle, I18N_KEY_MISSING_REQUIRED_CHILD_RESOURCE_WITH_NAME, childResource.getName());
}
}
}
}