neo4j/neo4j — pull request #1455 by boggle (2013-11-11 16:51:38+00:00)
Title: Add merge functionality to core API

This contains work from TL, CV, BBC.

Details:

o Core API
o Add new Merger and MergeResult interfaces to core API
o Add GDS#getOrCreate(label1, label2, ...).withProperty(k, v).merge()
o Add UniqueFactory#asMerger()
o Update javaocs and documentation examples for creating unique nodes

o Change locking of nodeGetUniqueFromIndexLookup
o New contract: RLock held afterwards if node was found, WLock otherwise
o Introduce ReleasableLock as a means of either manually releasing locks or registering them with the transaction

o Loosely related fixes
o Fix InMemLabelScanStore to handle queries for labels that haven't been used before
o Fix InMemoryIndex to not apply updates idempotently in online mode
o Fix BitmapFormatTest.shouldBeAbleToCheckIfASingleNodeIdIsSet
o Make KernelTransaction.assertOpen() public
o Make Statement.assertOpen() public
o Make NotInTxException extend IllegalStateException instead of being a plain RuntimeException