public @Test void canInvokeShutdownFromShutdownHandler() { graphDb.registerKernelEventHandler( new KernelEventHandler() { @Override public void beforeShutdown() { graphDb.shutdown(); } @Override public Object getResource() { return null; } @Override public void kernelPanic(ErrorState error) { // do nothing } @Override public ExecutionOrder orderComparedTo(KernelEventHandler other) { return ExecutionOrder.DOESNT_MATTER; } }); graphDb.shutdown(); }
public @Test void eventHandlersAreOnlyInvokedOnceDuringShutdown() { final AtomicInteger counter = new AtomicInteger(); graphDb.registerKernelEventHandler( new KernelEventHandler() { @Override public void beforeShutdown() { counter.incrementAndGet(); } @Override public Object getResource() { return null; } @Override public void kernelPanic(ErrorState error) { // do nothing } @Override public ExecutionOrder orderComparedTo(KernelEventHandler other) { return ExecutionOrder.DOESNT_MATTER; } }); graphDb.shutdown(); graphDb.shutdown(); assertEquals(1, counter.get()); }
/** * Construct a new runtime. Protected, please use {@link * com.graphaware.runtime.GraphAwareRuntimeFactory}. * * @param configuration config. * @param database on which the runtime operates. * @param txDrivenModuleManager manager for transaction-driven modules. * @param writer to use when writing to the database. */ protected DatabaseRuntime( RuntimeConfiguration configuration, GraphDatabaseService database, TxDrivenModuleManager<TxDrivenModule> txDrivenModuleManager, Neo4jWriter writer) { super(configuration); this.database = database; this.txDrivenModuleManager = txDrivenModuleManager; this.writer = writer; database.registerTransactionEventHandler(this); database.registerKernelEventHandler(this); }