private void configureListener()

in src/main/java/org/apache/sling/scripting/core/impl/ScriptCacheInvalidator.java [116:147]


    private void configureListener() {
        this.scriptCache.clear();
        if (extensions.isEmpty()) {
            if (resourceChangeListener != null) {
                resourceChangeListener.unregister();
                resourceChangeListener = null;
            }
        } else {
            final List<String> globPatterns = new ArrayList<>(extensions.size());
            for (final String extension : extensions) {
                globPatterns.add("glob:**/*.".concat(extension));
            }
            final String[] paths = globPatterns.toArray(new String[globPatterns.size()]);
            if (resourceChangeListener != null) {
                final Dictionary<String, Object> resourceChangeListenerProperties =
                        resourceChangeListener.getReference().getProperties();
                if (!Arrays.equals(
                        paths, (String[]) resourceChangeListenerProperties.get(ResourceChangeListener.PATHS))) {
                    resourceChangeListenerProperties.put(ResourceChangeListener.PATHS, paths);
                    resourceChangeListener.setProperties(resourceChangeListenerProperties);
                }
            } else {
                final Dictionary<String, Object> resourceChangeListenerProperties = new Hashtable<>();
                resourceChangeListenerProperties.put(ResourceChangeListener.PATHS, paths);
                resourceChangeListenerProperties.put(ResourceChangeListener.CHANGES, new String[] {
                    ResourceChange.ChangeType.CHANGED.name(), ResourceChange.ChangeType.REMOVED.name()
                });
                resourceChangeListener = bundleContext.registerService(
                        ResourceChangeListener.class, this, resourceChangeListenerProperties);
            }
        }
    }