Skip to Content
0
Former Member
Dec 03, 2009 at 07:35 PM

Register MyEventReceiver with event broker - IResourceEventReceiver

29 Views

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