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