in src/main/java/org/apache/sling/jcr/resource/internal/JcrListenerBaseConfig.java [79:111]
public void register(final @NotNull EventListener listener, final @NotNull ObserverConfiguration config) throws RepositoryException {
final ObservationManager mgr = this.session.getWorkspace().getObservationManager();
if (mgr instanceof JackrabbitObservationManager) {
final OakEventFilter filter = FilterFactory.wrap(new JackrabbitEventFilter());
// paths
setFilterPaths(filter, config);
// exclude paths
final Set<String> excludePaths = config.getExcludedPaths().toStringSet();
if (!excludePaths.isEmpty()) {
filter.setExcludedPaths(excludePaths.toArray(new String[0]));
}
filter.setIsDeep(true);
// external
filter.setNoExternal(!config.includeExternal());
// types
filter.setEventTypes(getTypes(config));
// nt:file handling
filter.withNodeTypeAggregate(new String[]{"nt:file"}, new String[]{"", "jcr:content"});
// ancestors remove
filter.withIncludeAncestorsRemove();
((JackrabbitObservationManager) mgr).addEventListener(listener, filter);
} else {
throw new RepositoryException("Observation manager is not a JackrabbitObservationManager");
}
}