1 /*******************************************************************************
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License v1.0
6 * which accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * VTT Technical Research Centre of Finland - initial API and implementation
11 *******************************************************************************/
12 package org.simantics.db.service;
16 public interface TransactionPolicySupport {
19 * Called when read transaction ends to decide if client should release
22 * @return true if you want to keep the transaction.
24 boolean holdOnToTransactionAfterRead();
27 * Called when transaction is cancelled to decide if client should release
30 * @return true if you want to keep the transaction.
32 boolean holdOnToTransactionAfterCancel();
35 * Called when write transaction ends to decided if client should release
38 * @return true if you want to keep the transaction.
40 boolean holdOnToTransactionAfterCommit();
43 * Called when server asks us to relinquish the transaction. This should
44 * trigger the end of ongoing requests. The caller (and server) will wait
45 * until the requests are ended and the transaction is freed. You have to
46 * end the requests during the call. If you do then onRelinquishDone is
47 * called and you can ask for a transaction again. If you do not then the
48 * connection is closed and all uncommitted work is lost. After connection
49 * is closed onRelinquishError is called giving you a chance to clean up the
55 * Called after server has been sent the reply to relinquish message. This
56 * means that you can ask transaction again.
58 void onRelinquishDone();
61 * Called after onRelinquish has failed to end requests. This means that the
62 * connection has been closed and all uncommitted work has been lost.
64 void onRelinquishError();