Hi
I am creating a class that will get notified about certain events that occur on a km folder. I am basing my code on the example in http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sapportals.km.docs/library/content-management/Repository%20Framework%20Concepts
My problem is how to register my class with the event broker for a repository. The document above says to do this like this:
IResource resource = factory.getResource(u2033/documentsu2033, context); MyEventReceiver aReceiver = new MyEventReceiver(); aReceiver.register(resource);
But where do I put this code to register my class below with the appropriate folder? Any help would be greatly aprreciated
public class MyEventReceiver implements IResourceEventReceiver {
private static IResourceEvent CREATE_CHILD_EVENT = new ResourceEvent(ResourceEvent.CREATE_CHILD, null);
private static IResourceEvent CREATE_COLLECTION_EVENT = new ResourceEvent(ResourceEvent.CREATE_COLLECTION, null);
private static IResourceEvent CREATE_LINK_EVENT = new ResourceEvent(ResourceEvent.CREATE_LINK, null);
private static Location log = Location.getLocation(MyEventReceiver.class);
public MyEventReceiver(){
}
public void register(IResource resource) throws WcmException {
IResourceEventBroker broker = resource.getRepositoryManager().getEventBroker();
if( broker == null ) return;
broker.register(this, CREATE_CHILD_EVENT, IEventBroker.PRIO_MIN, true);
broker.register(this, CREATE_COLLECTION_EVENT, IEventBroker.PRIO_MIN, true);
broker.register(this, CREATE_LINK_EVENT, IEventBroker.PRIO_MIN, true);
}
public void unregister(IResource resource) throws WcmException {
IResourceEventBroker broker = resource.getRepositoryManager().getEventBroker();
if( broker == null ) return;
broker.unregister(this, CREATE_CHILD_EVENT);
broker.unregister(this, CREATE_COLLECTION_EVENT);
broker.unregister(this, CREATE_LINK_EVENT);
}
public void received(IEvent event) {
log.debugT( "Event received in MyEventReceiver");
try {
if( event instanceof IResourceEvent ) {
IResourceEvent resourceEvent = (IResourceEvent)event;
switch( resourceEvent.getType() ) {
case ResourceEvent.CREATE_CHILD:
log.debugT( "Create fired for resopurce:" + resourceEvent.getParameter().toString()) ;
break;
case ResourceEvent.CREATE_COLLECTION:
log.debugT( "Create col fired for resopurce:" + resourceEvent.getParameter().toString()) ;
break;
case ResourceEvent.CREATE_LINK:
log.debugT( "Create link fired for resopurce:" + resourceEvent.getParameter().toString()) ;
break;
default:
// ignore other IResourceEvents
}
}
}
catch( Exception e ) {
}
}
}
Edited by: Jan Thomas Nygaard on Dec 3, 2009 8:35 PM