@Override
 public synchronized void commit() {
   try {
     if (!openedCursors.isEmpty()) {
       closeOpenedCursors();
       throw new BerkeleyDBPersistenceOpenedCursorsException();
     }
     dbTransaction.commit();
     getPersistenceManager().unregisterTransaction(this);
     super.commit();
   } catch (DatabaseException e) {
     throw getPersistenceManager().convertDatabaseException(e);
   }
 }
 @Override
 public void contextProved(Context context, Proof proof) {
   Transaction transaction = persistenceManager.beginTransaction();
   try {
     try {
       proof.execute(transaction);
       cliJPanel.message("Context:" + context.identifier(transaction) + " proved!");
       transaction.commit();
     } catch (ExecutionException e) {
       logger.error("Error", e);
       cliJPanel.exception(e);
     }
   } catch (InterruptedException e) {
     logger.error("Error", e);
   } finally {
     transaction.abort();
   }
 }