@Test public void makeSureHandlersCantBeRegisteredTwice() { DummyTransactionEventHandler<Object> handler = new DummyTransactionEventHandler<>( null ); GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); db.registerTransactionEventHandler( handler ); db.registerTransactionEventHandler( handler ); try ( Transaction tx = db.beginTx() ) { db.createNode().delete(); tx.success(); } assertEquals( Integer.valueOf( 0 ), handler.beforeCommit ); assertEquals( Integer.valueOf( 1 ), handler.afterCommit ); assertNull( handler.afterRollback ); db.unregisterTransactionEventHandler( handler ); }
assertSame( handler1, db.registerTransactionEventHandler( handler1 ) ); assertSame( handler1, db.registerTransactionEventHandler( handler1 ) ); assertSame( handler1, db.unregisterTransactionEventHandler( handler1 ) ); assertSame( handler1, db.registerTransactionEventHandler( handler1 ) ); assertSame( handler2, db.registerTransactionEventHandler( handler2 ) ); assertSame( handler1, db.unregisterTransactionEventHandler( handler1 ) ); assertSame( handler2, db.unregisterTransactionEventHandler( handler2 ) ); db.registerTransactionEventHandler( handler1 ); try ( Transaction tx = db.beginTx() )
db.registerTransactionEventHandler( handler );
db.registerTransactionEventHandler( handler );
@Test public void makeSureHandlerIsntCalledWhenTxRolledBack() { DummyTransactionEventHandler<Integer> handler = new DummyTransactionEventHandler<>( 10 ); GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); db.registerTransactionEventHandler( handler ); try { try ( Transaction ignore = db.beginTx() ) { db.createNode().delete(); } assertNull( handler.beforeCommit ); assertNull( handler.afterCommit ); assertNull( handler.afterRollback ); } finally { db.unregisterTransactionEventHandler( handler ); } }
db.registerTransactionEventHandler( handler ); try ( Transaction tx = db.beginTx() )
for ( TransactionEventHandler<Object> handler : handlers ) db.registerTransactionEventHandler( handler );
db.registerTransactionEventHandler( new TransactionEventHandler.Adapter<Void>()
db.registerTransactionEventHandler( new TransactionEventHandler<Object>()
VerifyingTransactionEventHandler handler = new VerifyingTransactionEventHandler( expectedData ); GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); db.registerTransactionEventHandler( handler ); Node node1; Node node2; db.registerTransactionEventHandler( handler ); try
db.registerTransactionEventHandler( new TransactionEventHandler.Adapter<Object>()
db.registerTransactionEventHandler( handler );
db.registerTransactionEventHandler( new TransactionEventHandler.Adapter<Object>()
@Test public void shouldAccessAssignedLabels() { // given GraphDatabaseService db = dbRule.getGraphDatabaseAPI(); ChangedLabels labels = (ChangedLabels) db.registerTransactionEventHandler( new ChangedLabels() ); try { // when try ( Transaction tx = db.beginTx() ) { Node node1 = db.createNode(); Node node2 = db.createNode(); Node node3 = db.createNode(); labels.add( node1, "Foo" ); labels.add( node2, "Bar" ); labels.add( node3, "Baz" ); labels.add( node3, "Bar" ); labels.activate(); tx.success(); } // then assertTrue( labels.isEmpty() ); } finally { db.unregisterTransactionEventHandler( labels ); } }
@Test public void canAvoidDeadlockThatWouldHappenIfTheRelationshipTypeCreationTransactionModifiedData() { GraphDatabaseService graphdb = database.getGraphDatabaseAPI(); Node node = null; try ( Transaction tx = graphdb.beginTx() ) { node = graphdb.createNode(); node.setProperty( "counter", 0L ); tx.success(); } graphdb.registerTransactionEventHandler( new RelationshipCounterTransactionEventHandler( node ) ); try ( Transaction tx = graphdb.beginTx() ) { node.setProperty( "state", "not broken yet" ); node.createRelationshipTo( graphdb.createNode(), RelationshipType.withName( "TEST" ) ); node.removeProperty( "state" ); tx.success(); } assertThat( node, inTx( graphdb, hasProperty( "counter" ).withValue( 1L ) ) ); }
ChangedLabels labels = (ChangedLabels) db.registerTransactionEventHandler( new ChangedLabels() ); try
@Override public <T> TransactionEventHandler<T> registerTransactionEventHandler( TransactionEventHandler<T> arg0) { return graphDb.registerTransactionEventHandler(arg0); }
@Override public <T> TransactionEventHandler<T> registerTransactionEventHandler( TransactionEventHandler<T> arg0) { return graphDb.registerTransactionEventHandler(arg0); }
@Override public void init() throws Throwable { if (!enabled) return; client = getJestClient(hostName, discovery); handler = new ElasticSearchEventHandler(client, indexSettings); gds.registerTransactionEventHandler(handler); logger.info("Connecting to ElasticSearch"); }
@Test public void test() { GraphDatabaseService graphDb = new TestGraphDatabaseFactory().newImpermanentDatabase(); Node referenceNode = null; try (Transaction transaction = graphDb.beginTx()) { referenceNode = graphDb.createNode(); // use the "foo" property-name once before referenceNode.setProperty("foo", "bar"); transaction.success(); } VersioningTransactionEventHandler versioningTransactionEventHandler = new VersioningTransactionEventHandler(referenceNode); graphDb.registerTransactionEventHandler(versioningTransactionEventHandler); try (Transaction tx = graphDb.beginTx()) { Node node = graphDb.createNode(); tx.success(); } graphDb.shutdown(); }