-public final class ClientTransaction extends LocalAbortable implements Identifiable<TransactionIdentifier> {
- private static final Logger LOG = LoggerFactory.getLogger(ClientTransaction.class);
- private static final AtomicIntegerFieldUpdater<ClientTransaction> STATE_UPDATER =
- AtomicIntegerFieldUpdater.newUpdater(ClientTransaction.class, "state");
- private static final int OPEN_STATE = 0;
- private static final int CLOSED_STATE = 1;
-
- private final Map<Long, AbstractProxyTransaction> proxies = new HashMap<>();
- private final TransactionIdentifier transactionId;
- private final AbstractClientHistory parent;
-
- private volatile int state = OPEN_STATE;
-
- ClientTransaction(final DistributedDataStoreClientBehavior client, final AbstractClientHistory parent,
- final TransactionIdentifier transactionId) {
- this.transactionId = Preconditions.checkNotNull(transactionId);
- this.parent = Preconditions.checkNotNull(parent);
- }
-
- private void checkNotClosed() {
- Preconditions.checkState(state == OPEN_STATE, "Transaction %s is closed", transactionId);
- }
-
- private AbstractProxyTransaction createProxy(final Long shard) {
- return parent.createTransactionProxy(transactionId, shard);
- }
-
- private AbstractProxyTransaction ensureProxy(final YangInstanceIdentifier path) {
- checkNotClosed();
-
- final ModuleShardBackendResolver resolver = parent.getClient().resolver();
- final Long shard = resolver.resolveShardForPath(path);
- return proxies.computeIfAbsent(shard, this::createProxy);
+public class ClientTransaction extends AbstractClientHandle<AbstractProxyTransaction> {
+ ClientTransaction(final AbstractClientHistory parent, final TransactionIdentifier transactionId) {
+ super(parent, transactionId);