/** {@inheritDoc} */ public boolean handleEvent( final ResourceResolver resolver, final String resourceType, final String eventTopics, final String nodePath, final String[] resourceChangedAttributes, final String[] resourceAddedAttributes, final String[] resourceRemovedAttributes, final Enum<EventTopicsType> eventTopicsType) throws Exception { final boolean isDelete = (eventTopicsType == EventTopicsType.DELETED) ? true : false; if (isDelete) { // Check to see if the root is the index root node or not final String componentName = IndexUtil.getComponentName(resolver, nodePath); if (componentName != null && componentName.endsWith(IndexUtil.INDEX_FOLDER)) { return false; } } else if (resourceType == null) { return false; } else if (checkResourceType(resolver, nodePath, resourceType, addedResourceTypes) && eventTopics.equals(SlingConstants.TOPIC_RESOURCE_ADDED)) { // A target resource type has been added to the repository. } else if (checkResourceType(resolver, nodePath, resourceType, changedResourceTypes) && eventTopics.equals(SlingConstants.TOPIC_RESOURCE_CHANGED)) { // A target attribute may have been modified. if (!(checkAttributes(resourceChangedAttributes, targetModifiedAttributes) || checkAttributes(resourceAddedAttributes, targetAddedRemovedAttributes) || checkAttributes(resourceRemovedAttributes, targetAddedRemovedAttributes))) { // This attribute does not trigger an index update. return false; } } else { return false; } indexExec(resolver, nodePath, eventTopicsType); return true; }