public ValidationModel getValidationModel()

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;
    }