ConcurrentInvertedRadixTree implements InvertedRadixTree<O>, PrettyPrintable, Serializable { @Override public O putIfAbsent(CharSequence key, O value) { return radixTree.putIfAbsent(key, value); } ConcurrentInvertedRadixTree(NodeFactory nodeFactory); @Override O put(CharSequence key, O value); @Override O putIfAbsent(CharSequence key, O value); @Override boolean remove(CharSequence key); @Override O getValueForExactKey(CharSequence key); @Override Iterable<CharSequence> getKeysStartingWith(CharSequence prefix); @Override Iterable<O> getValuesForKeysStartingWith(CharSequence prefix); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysStartingWith(CharSequence prefix); @Override Iterable<CharSequence> getClosestKeys(CharSequence candidate); @Override Iterable<O> getValuesForClosestKeys(CharSequence candidate); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForClosestKeys(CharSequence candidate); @Override Iterable<CharSequence> getKeysPrefixing(final CharSequence document); @Override Iterable<O> getValuesForKeysPrefixing(final CharSequence document); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysPrefixing(final CharSequence document); @Override CharSequence getLongestKeyPrefixing(CharSequence document); @Override O getValueForLongestKeyPrefixing(CharSequence document); @Override KeyValuePair<O> getKeyValuePairForLongestKeyPrefixing(CharSequence document); @Override Iterable<CharSequence> getKeysContainedIn(final CharSequence document); @Override Iterable<O> getValuesForKeysContainedIn(final CharSequence document); @Override Iterable<KeyValuePair<O>> getKeyValuePairsForKeysContainedIn(final CharSequence document); @Override int size(); @Override Node getNode();  }
@Test public void testPutIfAbsent() { ConcurrentInvertedRadixTree<Integer> tree = new ConcurrentInvertedRadixTree<Integer>(getNodeFactory()); Integer existing = tree.putIfAbsent("FOO", 1); assertNull(existing); existing = tree.putIfAbsent("FOO", 2); assertNotNull(existing); assertEquals(Integer.valueOf(1), existing); assertEquals(Integer.valueOf(1), tree.getValueForExactKey("FOO")); }