External callbacks should be registered with db4o EventRegistry. Follow the steps below to start using your own event handlers:
Java:
EventRegistry registry =
EventRegistryFactory.forObjectContainer(container);
Java:
registry.created().addListener(EventListener4)
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]
[filter=java]
Java:
registry.created().removeListener(createdEvent);
EventRegistry features:
For example:
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
}