事件处理程序未捕获资源已更改属性和资源添加属性在AEM 6.4中筛选事件



我们实现了一个事件处理程序

,注册如下:
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.observation.ResourceChangeListener;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventConstants;
import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* This is a node observer class which would observe the path /content/we-retail
* for any addition or updation of nodes (type = cq:PageContent). 
* @author 
*/
@Component(label = "Test Event Listener", immediate = true, metatype =
false, enabled = true)
@Properties({
/* @Property(name = EventConstants.EVENT_TOPIC, value = ReplicationAction.EVENT_TOPIC)
})*/
@Property(name = EventConstants.EVENT_TOPIC, value =
{"org/apache/sling/api/resource/Resource/ADDED",
"org/apache/sling/api/resource/Resource/CHANGED"}),
@Property(name = EventConstants.EVENT_FILTER, value = "(&" +
"(path=/content/we-retail/us/en/*/jcr:content) (|(" + SlingConstants
.PROPERTY_CHANGED_ATTRIBUTES + "=*jcr:title) "
+ "(" + ResourceChangeListener.CHANGES + "=*jcr:title)))")
})
@Service(EventHandler.class)
public class TestEventHandler implements EventHandler {
private static final Logger LOG = LoggerFactory.getLogger(TestEventHandler.class);
/*
* Reference of ResourceResolverFactory object.
*/
@Reference
private ResourceResolverFactory resourceResolverFactory;
/*
* (non-Javadoc)
* @see org.osgi.service.event.EventHandler#handleEvent(org.osgi.service.event.Event)
*/
@Override
public void handleEvent(Event event) {
LOG.info("Hi event is called ......");
}
}  

问题是:当在路径下的任何页面上更改jcr:title的属性值时,我们的handleEvent不会被捕获:/content/we-retail/us/en

AEM版本为:6.4 使用的吊索版本是:org.apache.sling.api

自 2.0.6(Sling API Bundle 2.0.6(起,它已被弃用。 您应该实现org.apache.sling.api.resource.observation.ResourceChangeListener请参阅示例:资源更改侦听器示例

最新更新