Expand my Community achievements bar.

SOLVED

org.apache.sling.event.EventUtil api is depricated in AEM 6.2

Avatar

Level 2

Hi Team,

    In one of our application, the code contains org.apache.sling.event.EventUtil and in order to find a local event in a clustered environment it uses EventUtil.isLocal(event) method. Until version AEM 6.0 it was working fine as expected. But in AEM 6.2, the above has been deprecated.

Could you please suggest any alternatives for the same?, Thanks.

Regards,

Saran 

1 Accepted Solution

Avatar

Correct answer by
Level 2

You could filter at the event handler level. If you're using annotations, add the filter line.

@Properties({ @Property(name = "event.topics", value = "com/mycompany/app/eventname", propertyPrivate = true),
@Property(name = EventConstants.EVENT_FILTER, value="(!(" + DEAConstants.PROPERTY_APPLICATION + "=*))")})

If the event is a local event, the PROPERTY_APPLICATION is not available. If it is available, it contains the application (Sling ID) of the instance where the event originated.

View solution in original post

3 Replies

Avatar

Correct answer by
Level 2

You could filter at the event handler level. If you're using annotations, add the filter line.

@Properties({ @Property(name = "event.topics", value = "com/mycompany/app/eventname", propertyPrivate = true),
@Property(name = EventConstants.EVENT_FILTER, value="(!(" + DEAConstants.PROPERTY_APPLICATION + "=*))")})

If the event is a local event, the PROPERTY_APPLICATION is not available. If it is available, it contains the application (Sling ID) of the instance where the event originated.

Avatar

Level 2

Hi Tony,

    Thanks a lot for this solution. It will satisfy our needs. Many Thanks again. smiley

Avatar

Level 2

Hi Team,

6.1 to 6.4 migration:

Could you please let me know how to get the EVENT_FILTER value or PROPERTY_APPLICATION value?

Here is my code correct me if I am wrong

@Properties({ @Property(name = EventConstants.EVENT_TOPIC, value = {ReplicationAction.EVENT_TOPIC,AlertSender.JOB_TOPIC}, propertyPrivate = true),

@Property(name = EventConstants.EVENT_FILTER, value="(!(" + DEAConstants.PROPERTY_APPLICATION + "=*))")})

@Override

    public void handleEvent(Event event) {

//String localevent = (String)event.getProperty("event.filter");-- commented

String localEvent=(String)event.getProperty(DEAConstants.PROPERTY_APPLICATION);

if(StringUtil.isBlank(localEvent)){

        //JobUtil.processJob(event, this); -- Need to replace this method also please let me know how to use jobConsumer interface here

      

        }

}