Event Registry API

External callbacks should be registered with db4o EventRegistry. Follow the steps below to start using your own event handlers:

  1. Obtain an instance of EventRegistry object for your ObjectContainer

    Java:

    EventRegistry registry = EventRegistryFactory.forObjectContainer(container);

  2. Register the required event. For "created" event the code is the following:

    Java:

    registry.created().addListener(EventListener4)

  3. Create your own event handler:

    Java:

    EventListener4 createdEvent = new EventListener4(){
              onEvent(Event4 event, EventArgs args)  {
                          // handling code
              }
    }

    The action raised the event can be cancelled in Creating, Activating, Deactivating, Updating and Deleting event handlers. These events accept CancellableObjectEventArgs as a parameter. In order to cancel the action use:

    Java:

    cancellableEventArgs.cancel()

    Here cancellableEventArgs is an event argument of CancellableObjectEventArgs type.

    In java cancellableEventArgs should be obtained by explicit casting:

    EventListener4 listener = new EventListener4(){

        public void onEvent(Event4 e, EventArgs args){

            CancellableObjectEventArgs cancellableArgs = (CancellableObjectEventArgs)args;

            ....

    [/filter]

  4. After the work is done you can unregister the events:

    [filter=java]

    Java:

    registry.created().removeListener(createdEvent);

EventRegistry features:

For example:

CallbacksExample.java: testCreated
01private static void testCreated(){ 02 new File(DB4O_FILE_NAME).delete(); 03 ObjectContainer container = Db4o.openFile(DB4O_FILE_NAME); 04 try { 05 EventRegistry registry = EventRegistryFactory.forObjectContainer(container); 06 // register an event handler, which will print all the car objects, that have been created 07 registry.created().addListener(new EventListener4() { 08 public void onEvent(Event4 e, EventArgs args) { 09 ObjectEventArgs queryArgs = ((ObjectEventArgs) args); 10 Object obj = queryArgs.object(); 11 if (obj instanceof Pilot){ 12 System.out.println(obj.toString()); 13 } 14 } 15 }); 16 17 Car car = new Car("BMW",new Pilot("Rubens Barrichello")); 18 container.set(car); 19 } finally { 20 container.close(); 21 } 22 }