@Test public 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(); }
graphDb.registerKernelEventHandler( handler1 ); graphDb.registerKernelEventHandler( handler2 );
graphDb.registerKernelEventHandler( new KernelEventHandler()
assertSame( handler1, graphDb.registerKernelEventHandler( handler1 ) ); assertSame( handler1, graphDb.registerKernelEventHandler( handler1 ) ); assertSame( handler1, graphDb.unregisterKernelEventHandler( handler1 ) ); assertSame( handler1, graphDb.registerKernelEventHandler( handler1 ) ); assertSame( handler2, graphDb.registerKernelEventHandler( handler2 ) ); assertSame( handler1, graphDb.unregisterKernelEventHandler( handler1 ) ); assertSame( handler2, graphDb.unregisterKernelEventHandler( handler2 ) );
@Override public KernelEventHandler registerKernelEventHandler(KernelEventHandler arg0) { return graphDb.registerKernelEventHandler(arg0); }
@Override public KernelEventHandler registerKernelEventHandler(KernelEventHandler arg0) { return graphDb.registerKernelEventHandler(arg0); }
/** * 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); // Register to topology change events // In Community Edition this raises a ClassNotFoundException try { this.topologyListenerAdapter = new TopologyListenerAdapter((GraphDatabaseAPI) database, configuration.kernelConfig()); } catch (Exception exception) { LOG.warn("Failed to register topology listener", exception); } }
private Callable<RemoteGraphDatabase> prepareServer( GraphDatabaseService graphDb ) throws Exception { final IndexService index = new LuceneIndexService( graphDb ); graphDb.registerKernelEventHandler( new KernelEventHandler() { public void beforeShutdown() { index.shutdown(); } public Object getResource() { return index; } public void kernelPanic( ErrorState error ) { } public ExecutionOrder orderComparedTo( KernelEventHandler other ) { return ExecutionOrder.DOESNT_MATTER; } } ); return prepareServer( graphDb, index ); }