Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Page activation event handling

Avatar

Level 2

Hi,

I am trying to invoke event handler after page activation. Event handler is invoking for all activation's(like image,file and page) but I need to invoke handler when I activate pages from specific paths. I am using OSGI annotations not felix. Below is my code snippet 

@component(immediate = true, service = EventHandler.class, property = {

EventConstants.EVENT_TOPIC + "=" + ReplicationAction.EVENT_TOPIC,
EventConstants.EVENT_FILTER + "(" + ReplicationAction.PROPERTY_PATH + "=/content/mypage/*)"

})
public class SimpleDSComponent implements Runnable, EventHandler {

private Logger log = LoggerFactory.getLogger(this.getClass());

public void handleEvent(Event event) {
String n[] = event.getPropertyNames();
log.info("Replication action: {} on {}", event.getProperty(ReplicationAction.PROPERTY_TYPE), event.getProperty(ReplicationAction.PROPERTY_PATH));
// log.info("Event occurred: {}", event.getProperty(WorkflowEvent.EVENT_TYPE));
log.info("Event properties: ");
for(String s : n) {
log.info(s + " = " + event.getProperty(s));
}
ReplicationAction action = ReplicationAction.fromEvent(event);
if(action != null) {
log.info("Replication action {} occured on {} ", action.getType().getName(), action.getPath());
}
log.info("");
}

 

When I use event filter handler is not invoking for any activation. I am suspecting event filter definition is wrong.

 

Can you please help me out how can I write filter with multiple paths.

 

Thanks,

Sathish

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor
5 Replies

Avatar

Community Advisor

Try once by replacing EventConstants.EVENT_FILTER + "(" + ReplicationAction.PROPERTY_PATH + "=/content/mypage/*)"

to 

EventConstants.EVENT_FILTER + "=(" + ReplicationAction.PROPERTY_PATH + "=/content/mypage/*)"

or

EventConstants.EVENT_FILTER + "=(" + SlingConstants.PROPERTY_PATH) + "=/content/mypage/*)"

 

Regards

Albin I

https://www.albinsblog.com

Avatar

Correct answer by
Community Advisor

Hi,

It should work, I tried with below, it worked for me

 

https://github.com/arunpatidar02/aem63app-repo/blob/master/java/ReplicationEvent2.java

 



Arun Patidar

Avatar

Level 2

Hi Arun,

 

Thank you for your Reply.

 

Now handler is activating but it is activating for all pages and images irrespective of path. How can I restrict it. 

@component(immediate = true, service = EventHandler.class, property = {

EventConstants.EVENT_TOPIC + "=" + ReplicationAction.EVENT_TOPIC,
EventConstants.EVENT_FILTER + "path=/content/mypage/en/help/*"

})

 

Thanks,

Sathish

Avatar

Community Advisor

Hi, I have just updated the code with correct path filter

e.g.

 

EventConstants.EVENT_FILTER + "=(paths=/content/mypage/en/help/*)" 



Arun Patidar