in src/main/java/org/apache/sling/validation/impl/ValidationModelRetrieverImpl.java [73:106]
public ValidationModel getValidationModel(@NotNull String resourceType, String resourcePath, boolean considerResourceSuperTypeModels) {
// first get model for exactly the requested resource type
ValidationModel baseModel = getModel(resourceType, resourcePath);
String currentResourceType = resourceType;
if (considerResourceSuperTypeModels) {
Collection<ValidationModel> modelsToMerge = new ArrayList<ValidationModel>();
ResourceResolver resourceResolver = null;
try {
resourceResolver = resourceResolverFactory.getServiceResourceResolver(null);
while ((currentResourceType = resourceResolver.getParentResourceType(currentResourceType)) != null) {
LOG.debug("Retrieving validation models for resource super type {}...", currentResourceType);
ValidationModel modelToMerge = getModel(currentResourceType, resourcePath);
if (modelToMerge != null) {
if (baseModel == null) {
baseModel = modelToMerge;
} else {
modelsToMerge.add(modelToMerge);
}
}
}
if (!modelsToMerge.isEmpty()) {
return new MergedValidationModel(baseModel, modelsToMerge.toArray(new ValidationModel[modelsToMerge
.size()]));
}
} catch (LoginException e) {
throw new IllegalStateException("Could not get service resource resolver", e);
} finally {
if (resourceResolver != null) {
resourceResolver.close();
}
}
}
return baseModel;
}