Esempio n. 1
0
  /** {@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;
  }