private boolean isDictionaryResource()

in src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java [290:330]


    private boolean isDictionaryResource(final ResourceResolver resolver, final ResourceChange change) {
        // language node changes happen quite frequently (https://issues.apache.org/jira/browse/SLING-2881)
        // therefore only consider changes either for sling:MessageEntry's
        // or for JSON dictionaries
        // get valuemap
        final Resource resource = resolver.getResource(change.getPath());
        if (resource == null) {
            log.trace("Could not get resource for '{}' for event {}", change.getPath(), change.getType());
            return false;
        }
        if (resource.getResourceType() == null) {
            return false;
        }
        if (resource.isResourceType(JcrResourceBundle.RT_MESSAGE_ENTRY)) {
            log.debug(
                    "Found new dictionary entry: New {} resource in '{}' detected",
                    JcrResourceBundle.RT_MESSAGE_ENTRY,
                    change.getPath());
            return true;
        }
        final ValueMap valueMap = resource.getValueMap();
        // FIXME: derivatives from mix:Message are not detected
        if (hasMixin(valueMap, JcrResourceBundle.MIXIN_MESSAGE)) {
            log.debug(
                    "Found new dictionary entry: New {} resource in '{}' detected",
                    JcrResourceBundle.MIXIN_MESSAGE,
                    change.getPath());
            return true;
        }
        if (change.getPath().endsWith(".json")) {
            // check for mixin
            if (hasMixin(valueMap, JcrResourceBundle.MIXIN_LANGUAGE)) {
                log.debug(
                        "Found new dictionary: New {} resource in '{}' detected",
                        JcrResourceBundle.MIXIN_LANGUAGE,
                        change.getPath());
                return true;
            }
        }
        return false;
    }