Expand my Community achievements bar.

Join us in celebrating the outstanding achievement of our AEM Community Member of the Year!
SOLVED

Event Listener always catching Event.PROPERTY_ before Event.NODE_ Events

Avatar

Level 5

Hi All,

When ever event is getting triggered -

EX - 

If i am doing operation Page move.

EventType is coming as = Event.PROPERTY_ADDED but it should check for as Event.NODE_MOVED. even though i am checking as a conditional statement it is always going to Event.PROPERTY (Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED) listener instead of  Event.NODE (Event.NODE_MOVED | Event.NODE_ADDED | Event.NODE_REMOVED listener.

 

Again, This is happing for Page Delete also.

 

Req - to Implement custom logic on each and every event Listener.

 

As we know whenever we trigger event on NODE AEM itself call's PROPERY events :::

Is there any way to identify the correct event or give precedence to NODE events instead of PROPERTY???

 

Using Event like this - 

private static final int EVENT_TYPES = Event.NODE_MOVED  | Event.NODE_ADDED | Event.NODE_REMOVED |
Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED;

 

Thanks in advance.

 

 

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Level 5

To prioritize NODE_* events over PROPERTY_* events in your AEM event listener:

  1. Check for Event.NODE_* events (like NODE_MOVED, NODE_ADDED, NODE_REMOVED) first in your listener logic.
  2. Process property events (like PROPERTY_ADDED, PROPERTY_CHANGED) only if no node event is found.
  3. Optionally, use separate listeners for node and property events to avoid conflicts.

Ensure the listener prioritizes node events by checking them first in your conditionals.

View solution in original post

4 Replies

Avatar

Community Advisor

Hi @lone_Ranger 

Could you please describe the use case here?

You are using JCR Events but there are other event types(Sling and OSGI) which can help.

https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/clarification-eventlistene... 

 



Arun Patidar

Avatar

Employee Advisor

When you want to work on page level, please check for the OSGI page events; they are sent alongside the resource events for that specific page.

 

And please be aware, that for delete the events can be unexpected;  for example if you delete a large subtree, you get the delete event only for the root-node/resource on which the delete was invoked.

Avatar

Correct answer by
Level 5

To prioritize NODE_* events over PROPERTY_* events in your AEM event listener:

  1. Check for Event.NODE_* events (like NODE_MOVED, NODE_ADDED, NODE_REMOVED) first in your listener logic.
  2. Process property events (like PROPERTY_ADDED, PROPERTY_CHANGED) only if no node event is found.
  3. Optionally, use separate listeners for node and property events to avoid conflicts.

Ensure the listener prioritizes node events by checking them first in your conditionals.