ClientTransaction extends AbstractClientHandle<AbstractProxyTransaction> { public DOMDataTreeWriteCursor openCursor() { Preconditions.checkState(cursor == null, "Transaction %s has open cursor", getIdentifier()); cursor = new ClientTransactionCursor(this); return cursor; } ClientTransaction(final AbstractClientHistory parent, final TransactionIdentifier transactionId); DOMDataTreeWriteCursor openCursor(); FluentFuture<Boolean> exists(final YangInstanceIdentifier path); FluentFuture<Optional<NormalizedNode<?, ?>>> read(final YangInstanceIdentifier path); void delete(final YangInstanceIdentifier path); void merge(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data); void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data); DOMStoreThreePhaseCommitCohort ready();  }
@Test public void testOpenSecondCursor() throws Exception { getHandle().openCursor(); assertOperationThrowsException(getHandle()::openCursor, IllegalStateException.class); }