Hi All,
i have written simple listener which will be triggered when a node is added under "/content" of type sling:Folder.Please help me to fix this issue.
package com.sample.eventhandler;
import java.util.Arrays;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.observation.Event;
import javax.jcr.observation.EventIterator;
import javax.jcr.observation.EventListener;
import javax.jcr.observation.ObservationManager;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.jcr.api.SlingRepository;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component(metatype = false, immediate = true, label = "Event heading End Date Chnange Listner",
description="This component will listen to change in event end date node")
@Service(value={EventListener.class})
public class SimpleDSComponent implements /*Runnable*/EventListener {
private Logger log = LoggerFactory.getLogger(SimpleDSComponent.class);
private BundleContext bundleCtxt=null;
@Reference
private ResourceResolverFactory resolverFactory;
@Reference
private SlingRepository repository;
private Session session;
private ObservationManager obsMgnr;
@Activate
protected void activate(ComponentContext ctxt)
{
log.info("##In activate() ##");
this.bundleCtxt=ctxt.getBundleContext();
try {
ResourceResolver resolver = resolverFactory.getAdministrativeResourceResolver(null);
Session sessObj = resolver.adaptTo(Session.class);
log.info("sessObj is live?"+sessObj.isLive());
obsMgnr = sessObj.getWorkspace().getObservationManager();
String[] types={"sling:Folder"};
String path="/content";
obsMgnr.addEventListener(
this,
Event.NODE_ADDED,
//Event.NODE_REMOVED,
path,
true,
null,
null,
false);
log.info("Observing property changes to {} nodes under {}", Arrays.asList(types), path);
} catch (LoginException le) {
// TODO Auto-generated catch block
//log.info(le.getMessage());
le.printStackTrace();
} catch(RepositoryException re){
re.printStackTrace();
}catch(Exception e)
{
e.printStackTrace();
}
}
/*@Deactivate
* protected void deactivate(ComponentContext cCtxt)
{
log.info("##In deactivate() ##");
if(obsMgnr !=null)
{
try {
obsMgnr.removeEventListener(this);
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(session !=null)
{
session.logout();
session=null;
}
}*/
public void onEvent(EventIterator arg0) {
// TODO Auto-generated method stub
log.info("## In onEvent() ##");
long eventsSize = arg0.getSize();
log.info("eventsSize :"+eventsSize);
Node nodeObj = null;
while(arg0.hasNext())
{
try {
session = repository.loginAdministrative(null);
Event event = arg0.nextEvent();
String eventFiredPath = event.getPath();
log.info("eventFiredPath :"+eventFiredPath);
nodeObj = session.getNode(eventFiredPath);
log.info("nodeObj is locked ?"+nodeObj.isLocked());
} catch (RepositoryException e) {
e.printStackTrace();
}
}
}
/*public void run() {
// TODO Auto-generated method stub
log.info("## In run() ##");
}
*/
}
Thaknks
In Advance