Parent folder filter - Parent folder filter - Alfresco - Alfresco Events SDK for Out-of-Process Events - Alfresco/Alfresco-Events-SDK-for-Out-of-Process-Events/6.3/Alfresco-Events-SDK-for-Out-of-Process-Events/Install/Implementing-custom-event-filters/Parent-folder-filter - 6.3 - 6.3

Alfresco Events SDK for Out-of-Process Events

Platform
Alfresco
Product
Alfresco Events SDK for Out-of-Process Events
Release
6.3
License
ft:lastPublication
2025-09-04T22:27:16.404000
ft:locale
en-US

The following event filter checks if a passed in node ID is equal to a desired parent folder node ID. This event filter can be used to check if a file or folder is located in a specific folder. To create a custom event filter you need to create a class that extends the org.alfresco.event.sdk.handling.filter.AbstractEventFilter class and implement the test method:

package org.alfresco.tutorial.events;

import org.alfresco.event.sdk.handling.filter.AbstractEventFilter;
import org.alfresco.event.sdk.model.v1.model.DataAttributes;
import org.alfresco.event.sdk.model.v1.model.NodeResource;
import org.alfresco.event.sdk.model.v1.model.RepoEvent;
import org.alfresco.event.sdk.model.v1.model.Resource;

import java.util.Objects;

/**
 * Filter that can be used when a node needs to be in a specific folder.
 */
public class ParentFolderFilter extends AbstractEventFilter {
    // The node ID for the folder we want to check against 
    private final String parentId;

    // Private ctor, make sure ID is not null
    private ParentFolderFilter(final String parentId) {
        this.parentId = Objects.requireNonNull(parentId);
    }

    // When using the filter, pass in the folder node ID we want to check against
    public static ParentFolderFilter of(final String parentId) {
        return new ParentFolderFilter(parentId);
    }

    // The actual test: 
    // get the node resource we are testing (such as a file node), 
    // then get its primary parent folder ID and check if it matches desired folder Node ID
    public boolean test(RepoEvent<DataAttributes<Resource>> event) {
        NodeResource resource = (NodeResource) event.getData().getResource();
        boolean parentFound = resource.getPrimaryHierarchy().get(0).equals(parentId);
        return isNodeEvent(event) && parentFound;
    }
}

This event filter can now be used in an event handler class as follows (in this case together with another filter):

@Component
public class ContentUploadedEventHandler implements OnNodeCreatedEventHandler {
    private String folderID = "5f355d16-f824-4173-bf4b-b1ec37ef5549";

    ...
    
    public EventFilter getEventFilter() {
        // Check if uploaded file is located in desired folder
        return IsFileFilter.get()
                .and(ParentFolderFilter.of(folderID));
    }