* {@inheritDoc}
*/
@Override
- ReadOnlyTransaction newReadOnlyTransaction();
+ ReadTransaction newReadOnlyTransaction();
/**
* {@inheritDoc}
* {@inheritDoc}
*/
@Override
- ReadOnlyTransaction newReadOnlyTransaction();
+ ReadTransaction newReadOnlyTransaction();
/**
* {@inheritDoc}
*/
package org.opendaylight.mdsal.binding.api;
-import org.opendaylight.mdsal.common.api.AsyncReadOnlyTransaction;
+import org.opendaylight.mdsal.common.api.AsyncReadTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
import org.opendaylight.yangtools.yang.binding.DataObject;
* For more information on usage and examples, please see the documentation in
* {@link org.opendaylight.mdsal.common.api.AsyncReadTransaction}.
*/
-public interface ReadOnlyTransaction extends AsyncReadOnlyTransaction<InstanceIdentifier<?>, DataObject> {
+public interface ReadTransaction extends AsyncReadTransaction<InstanceIdentifier<?>, DataObject> {
/**
* Reads data from the provided logical data store located at the provided path.
public interface TransactionFactory extends AsyncDataTransactionFactory<InstanceIdentifier<?>, DataObject>{
@Override
- ReadOnlyTransaction newReadOnlyTransaction();
+ ReadTransaction newReadOnlyTransaction();
@Override
WriteTransaction newWriteOnlyTransaction();
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
}
protected final <D extends DataObject> CheckedFuture<Optional<D>,ReadFailedException> doRead(
- final DOMDataReadTransaction readTx, final LogicalDatastoreType store,
+ final DOMDataTreeReadTransaction readTx, final LogicalDatastoreType store,
final InstanceIdentifier<D> path) {
Preconditions.checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path);
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
/**
*
* Abstract Base Transaction for transactions which are backed by
- * {@link DOMDataWriteTransaction}
+ * {@link DOMDataTreeWriteTransaction}
*/
-public abstract class AbstractWriteTransaction<T extends DOMDataWriteTransaction> extends
+public abstract class AbstractWriteTransaction<T extends DOMDataTreeWriteTransaction> extends
AbstractForwardedTransaction<T> {
protected AbstractWriteTransaction(final T delegate, final BindingToNormalizedNodeCodec codec) {
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeChangeService;
import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
-import org.opendaylight.mdsal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMAdapterBuilder.Factory;
import com.google.common.collect.ClassToInstanceMap;
}
@Override
- public ReadOnlyTransaction newReadOnlyTransaction() {
+ public ReadTransaction newReadOnlyTransaction() {
return new BindingDOMReadTransactionAdapter(getDelegate().newReadOnlyTransaction(),getCodec());
}
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerBusyException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
class BindingDOMDataTreeProducerAdapter implements DataTreeProducer {
@Override
public WriteTransaction createTransaction(final boolean isolated) {
- final DOMDataWriteTransaction domTx = delegate.createTransaction(isolated);
- return new BindingDOMWriteTransactionAdapter<DOMDataWriteTransaction>(domTx, codec);
+ final DOMDataTreeWriteTransaction domTx = delegate.createTransaction(isolated);
+ return new BindingDOMWriteTransactionAdapter<DOMDataTreeWriteTransaction>(domTx, codec);
}
static DataTreeProducer create(final DOMDataTreeProducer domProducer,
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
-
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.mdsal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
-class BindingDOMReadTransactionAdapter extends AbstractForwardedTransaction<DOMDataReadOnlyTransaction> implements
- ReadOnlyTransaction {
+class BindingDOMReadTransactionAdapter extends AbstractForwardedTransaction<DOMDataTreeReadTransaction> implements
+ ReadTransaction {
- protected BindingDOMReadTransactionAdapter(final DOMDataReadOnlyTransaction delegate,
+ protected BindingDOMReadTransactionAdapter(final DOMDataTreeReadTransaction delegate,
final BindingToNormalizedNodeCodec codec) {
super(delegate, codec);
}
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import org.opendaylight.mdsal.binding.api.BindingTransactionChain;
-import org.opendaylight.mdsal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
}
@Override
- public ReadOnlyTransaction newReadOnlyTransaction() {
- final DOMDataReadOnlyTransaction delegateTx = delegate.newReadOnlyTransaction();
+ public ReadTransaction newReadOnlyTransaction() {
+ final DOMDataTreeReadTransaction delegateTx = delegate.newReadOnlyTransaction();
return new BindingDOMReadTransactionAdapter(delegateTx, codec);
}
@Override
public WriteTransaction newWriteOnlyTransaction() {
- final DOMDataWriteTransaction delegateTx = delegate.newWriteOnlyTransaction();
- return new BindingDOMWriteTransactionAdapter<DOMDataWriteTransaction>(delegateTx, codec) {
+ final DOMDataTreeWriteTransaction delegateTx = delegate.newWriteOnlyTransaction();
+ return new BindingDOMWriteTransactionAdapter<DOMDataTreeWriteTransaction>(delegateTx, codec) {
@Override
public CheckedFuture<Void,TransactionCommitFailedException> submit() {
import com.google.common.util.concurrent.CheckedFuture;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-class BindingDOMWriteTransactionAdapter<T extends DOMDataWriteTransaction> extends
+class BindingDOMWriteTransactionAdapter<T extends DOMDataTreeWriteTransaction> extends
AbstractWriteTransaction<T> implements WriteTransaction {
protected BindingDOMWriteTransactionAdapter(final T delegateTx, final BindingToNormalizedNodeCodec codec) {
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
-import org.opendaylight.mdsal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.binding.api.WriteTransaction;
import com.google.common.base.Optional;
import java.util.concurrent.ExecutionException;
writeTx.put(LogicalDatastoreType.OPERATIONAL, NODE_PATH, NODE,true);
writeTx.submit().checkedGet();
- final ReadOnlyTransaction readTx = getDataBroker().newReadOnlyTransaction();
+ final ReadTransaction readTx = getDataBroker().newReadOnlyTransaction();
final Optional<Top> topNode = readTx.read(LogicalDatastoreType.OPERATIONAL, TOP_PATH).get();
assertTrue("Top node must exists after commit",topNode.isPresent());
final Optional<TopLevelList> listNode = readTx.read(LogicalDatastoreType.OPERATIONAL, NODE_PATH).get();
writeTx.merge(LogicalDatastoreType.OPERATIONAL, NODE_PATH, NODE,true);
writeTx.submit().checkedGet();
- final ReadOnlyTransaction readTx = getDataBroker().newReadOnlyTransaction();
+ final ReadTransaction readTx = getDataBroker().newReadOnlyTransaction();
final Optional<Top> topNode = readTx.read(LogicalDatastoreType.OPERATIONAL, TOP_PATH).get();
assertTrue("Top node must exists after commit",topNode.isPresent());
final Optional<TopLevelList> listNode = readTx.read(LogicalDatastoreType.OPERATIONAL, NODE_PATH).get();
* {@inheritDoc}
*/
@Override
- AsyncReadOnlyTransaction<P, D> newReadOnlyTransaction();
+ AsyncReadTransaction<P, D> newReadOnlyTransaction();
/**
*
* @return new read-only transaction
*/
- AsyncReadOnlyTransaction<P, D> newReadOnlyTransaction();
+ AsyncReadTransaction<P, D> newReadOnlyTransaction();
/**
* Allocates new write-only transaction based on latest state of data tree.
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.mdsal.common.api;
-
-import org.opendaylight.yangtools.concepts.Path;
-
-/**
- * Marker interface for a read-only view of the data tree.
- *
- * @see AsyncReadTransaction
- *
- * @param <P>
- * Type of path (subtree identifier), which represents location in
- * tree
- * @param <D>
- * Type of data (payload), which represents data payload
- */
-public interface AsyncReadOnlyTransaction<P extends Path<P>, D> extends AsyncReadTransaction<P, D>, AutoCloseable {
-
- /**
- * Closes this transaction and releases all resources associated with it.
- *
- */
- @Override
- public void close();
-}
* @param <D> Type of data (payload), which represents data payload
*
*/
-public interface AsyncReadTransaction<P extends Path<P>, D> extends AsyncTransaction<P, D> {
+public interface AsyncReadTransaction<P extends Path<P>, D> extends AsyncTransaction<P, D>, AutoCloseable {
+ /**
+ * Closes this transaction and releases all resources associated with it.
+ *
+ */
+ @Override
+ public void close();
}
* if the chain has been closed.
*/
@Override
- public AsyncReadOnlyTransaction<P, D> newReadOnlyTransaction();
+ public AsyncReadTransaction<P, D> newReadOnlyTransaction();
/**
* Create a new write-only transaction which will continue the chain.
* {@inheritDoc}
*/
@Override
- DOMDataReadOnlyTransaction newReadOnlyTransaction();
+ DOMDataTreeReadTransaction newReadOnlyTransaction();
/**
* {@inheritDoc}
*/
@Override
- DOMDataWriteTransaction newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction newWriteOnlyTransaction();
/**
* {@inheritDoc}
+++ /dev/null
-/*
- * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.mdsal.dom.api;
-
-import org.opendaylight.mdsal.common.api.AsyncReadOnlyTransaction;
-
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-
-public interface DOMDataReadOnlyTransaction extends DOMDataReadTransaction, AsyncReadOnlyTransaction<YangInstanceIdentifier, NormalizedNode<?, ?>> {
-
-}
* is processed separately from any preceding transactions. Non-barrier transactions may
* be merged and processed in a batch, such that any observers see the modifications
* contained in them as if the modifications were made in a single transaction.
- * @return A new {@link DOMDataWriteTransaction}
+ * @return A new {@link DOMDataTreeWriteTransaction}
* @throws IllegalStateException if a previous transaction was not closed.
* @throws IllegalThreadStateException if the calling thread context does not match the
* lifecycle rules enforced by the producer state (e.g. bound or unbound). This
* exception is thrown on a best effort basis and programs should not rely on it for
* correct operation.
*/
- @Nonnull DOMDataWriteTransaction createTransaction(boolean isolated);
+ @Nonnull DOMDataTreeWriteTransaction createTransaction(boolean isolated);
/**
* {@inheritDoc}
* <p>
* For more information on usage and examples, please see the documentation in {@link AsyncReadTransaction}.
*/
-public interface DOMDataReadTransaction extends AsyncReadTransaction<YangInstanceIdentifier, NormalizedNode<?, ?>> {
+public interface DOMDataTreeReadTransaction extends AsyncReadTransaction<YangInstanceIdentifier, NormalizedNode<?, ?>> {
/**
* Reads data from provided logical data store located at the provided path.
* <p>
* For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}.
*/
-public interface DOMDataWriteTransaction extends AsyncWriteTransaction<YangInstanceIdentifier, NormalizedNode<?, ?>> {
+public interface DOMDataTreeWriteTransaction extends AsyncWriteTransaction<YangInstanceIdentifier, NormalizedNode<?, ?>> {
/**
* Stores a piece of data at the specified path. This acts as an add / replace
public interface DOMTransactionChain extends TransactionChain<YangInstanceIdentifier, NormalizedNode<?, ?>> {
@Override
- DOMDataReadOnlyTransaction newReadOnlyTransaction();
+ DOMDataTreeReadTransaction newReadOnlyTransaction();
@Override
- DOMDataWriteTransaction newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction newWriteOnlyTransaction();
}
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import com.google.common.util.concurrent.CheckedFuture;
import java.net.URI;
import java.util.Collections;
try (final DOMDataTreeProducer prod = service().createProducer(Collections.singleton(UNORDERED_CONTAINER_TREE))) {
assertNotNull(prod);
- final DOMDataWriteTransaction tx = prod.createTransaction(true);
+ final DOMDataTreeWriteTransaction tx = prod.createTransaction(true);
assertNotNull(tx);
tx.put(LogicalDatastoreType.OPERATIONAL, UNORDERED_CONTAINER_IID, ImmutableContainerNodeBuilder.create().build());
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
protected abstract Object newTransactionIdentifier();
/**
- * User-supplied implementation of {@link DOMDataWriteTransaction#submit()} for transaction.
+ * User-supplied implementation of {@link DOMDataTreeWriteTransaction#submit()} for transaction.
*
- * Callback invoked when {@link DOMDataWriteTransaction#submit()} is invoked on transaction
+ * Callback invoked when {@link DOMDataTreeWriteTransaction#submit()} is invoked on transaction
* created by this factory.
*
- * @param transaction Transaction on which {@link DOMDataWriteTransaction#submit()} was invoked.
+ * @param transaction Transaction on which {@link DOMDataTreeWriteTransaction#submit()} was invoked.
* @param cohorts Iteratable of cohorts for subtransactions associated with the transaction
* being committed.
* @return a CheckedFuture. if commit coordination on cohorts finished successfully, nothing is
* returned from the Future, On failure, the Future fails with a
* {@link TransactionCommitFailedException}.
*/
- protected abstract CheckedFuture<Void,TransactionCommitFailedException> submit(final DOMDataWriteTransaction transaction,
+ protected abstract CheckedFuture<Void,TransactionCommitFailedException> submit(final DOMDataTreeWriteTransaction transaction,
final Collection<DOMStoreThreePhaseCommitCohort> cohorts);
/**
*
* Subtransaction for reading is selected by supplied {@link LogicalDatastoreType} as parameter
* for
- * {@link DOMDataReadOnlyTransaction#read(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier)}
+ * {@link DOMDataTreeReadTransaction#read(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier)}
* .
*
* Id of returned transaction is retrieved via {@link #newTransactionIdentifier()}.
*
* @return New composite read-only transaction.
*/
- public final DOMDataReadOnlyTransaction newReadOnlyTransaction() {
+ public final DOMDataTreeReadTransaction newReadOnlyTransaction() {
checkNotClosed();
final Map<LogicalDatastoreType, DOMStoreReadTransaction> txns = new EnumMap<>(LogicalDatastoreType.class);
*
* <ul>
* <li>
- * {@link DOMDataWriteTransaction#put(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)}
+ * {@link DOMDataTreeWriteTransaction#put(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)}
* - backing subtransaction is selected by {@link LogicalDatastoreType},
* {@link DOMStoreWriteTransaction#write(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)}
* is invoked on selected subtransaction.</li>
* <li>
- * {@link DOMDataWriteTransaction#merge(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)}
+ * {@link DOMDataTreeWriteTransaction#merge(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)}
* - backing subtransaction is selected by {@link LogicalDatastoreType},
* {@link DOMStoreWriteTransaction#merge(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier, org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode)}
* is invoked on selected subtransaction.</li>
* <li>
- * {@link DOMDataWriteTransaction#delete(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier)}
+ * {@link DOMDataTreeWriteTransaction#delete(LogicalDatastoreType, org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier)}
* - backing subtransaction is selected by {@link LogicalDatastoreType},
* {@link DOMStoreWriteTransaction#delete(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier)}
* is invoked on selected subtransaction.
- * <li> {@link DOMDataWriteTransaction#submit()} - results in invoking
+ * <li> {@link DOMDataTreeWriteTransaction#submit()} - results in invoking
* {@link DOMStoreWriteTransaction#ready()}, gathering all resulting cohorts and then invoking
- * finalized implementation callback {@link #submit(DOMDataWriteTransaction, Collection)} with
+ * finalized implementation callback {@link #submit(DOMDataTreeWriteTransaction, Collection)} with
* transaction which was commited and gathered results.</li>
* </ul>
*
*
* @return New composite write-only transaction associated with this factory.
*/
- public final DOMDataWriteTransaction newWriteOnlyTransaction() {
+ public final DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
checkNotClosed();
final Map<LogicalDatastoreType, DOMStoreWriteTransaction> txns = new EnumMap<>(LogicalDatastoreType.class);
import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
import com.google.common.util.concurrent.Futures;
private static final Logger LOG = LoggerFactory.getLogger(CommitCoordinationTask.class);
private final Collection<DOMStoreThreePhaseCommitCohort> cohorts;
private final DurationStatisticsTracker commitStatTracker;
- private final DOMDataWriteTransaction tx;
+ private final DOMDataTreeWriteTransaction tx;
- public CommitCoordinationTask(final DOMDataWriteTransaction transaction,
+ public CommitCoordinationTask(final DOMDataTreeWriteTransaction transaction,
final Collection<DOMStoreThreePhaseCommitCohort> cohorts,
final DurationStatisticsTracker commitStatTracker) {
this.tx = Preconditions.checkNotNull(transaction, "transaction must not be null");
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionChainListener;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
@Override
public CheckedFuture<Void, TransactionCommitFailedException> submit(
- final DOMDataWriteTransaction transaction, final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
+ final DOMDataTreeWriteTransaction transaction, final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
checkNotFailed();
checkNotClosed();
}
}
- private void transactionFailed(final DOMDataWriteTransaction tx, final Throwable cause) {
+ private void transactionFailed(final DOMDataTreeWriteTransaction tx, final Throwable cause) {
state = State.FAILED;
LOG.debug("Transaction chain {}Â failed.", this, cause);
listener.onTransactionChainFailed(this, tx, cause);
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
import java.util.Map;
*/
class DOMForwardedReadOnlyTransaction extends
AbstractDOMForwardedCompositeTransaction<LogicalDatastoreType, DOMStoreReadTransaction> implements
- DOMDataReadOnlyTransaction {
+ DOMDataTreeReadTransaction {
protected DOMForwardedReadOnlyTransaction(final Object identifier,
final Map<LogicalDatastoreType, DOMStoreReadTransaction> backingTxs) {
import java.util.Map;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.slf4j.Logger;
* </ul>
* <p>
* {@link #submit()} will result in invocation of
- * {@link DOMDataCommitImplementation#submit(org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction, Iterable)}
+ * {@link DOMDataCommitImplementation#submit(org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction, Iterable)}
* invocation with all
* {@link org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort} for
* underlying transactions.
* @param <T> Subtype of {@link DOMStoreWriteTransaction} which is used as subtransaction.
*/
class DOMForwardedWriteTransaction<T extends DOMStoreWriteTransaction> extends
- AbstractDOMForwardedCompositeTransaction<LogicalDatastoreType, T> implements DOMDataWriteTransaction {
+ AbstractDOMForwardedCompositeTransaction<LogicalDatastoreType, T> implements DOMDataTreeWriteTransaction {
@SuppressWarnings("rawtypes")
private static final AtomicReferenceFieldUpdater<DOMForwardedWriteTransaction, AbstractDOMForwardedTransactionFactory> IMPL_UPDATER =
AtomicReferenceFieldUpdater.newUpdater(DOMForwardedWriteTransaction.class, AbstractDOMForwardedTransactionFactory.class, "commitImpl");
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
}
@Override
- protected CheckedFuture<Void,TransactionCommitFailedException> submit(final DOMDataWriteTransaction transaction,
+ protected CheckedFuture<Void,TransactionCommitFailedException> submit(final DOMDataTreeWriteTransaction transaction,
final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
Preconditions.checkArgument(transaction != null, "Transaction must not be null.");
Preconditions.checkArgument(cohorts != null, "Cohorts must not be null.");
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerBusyException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.spi.store.DOMStore;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
@GuardedBy("this")
private Map<DOMDataTreeIdentifier, DOMDataTreeProducer> children = Collections.emptyMap();
@GuardedBy("this")
- private DOMDataWriteTransaction openTx;
+ private DOMDataTreeWriteTransaction openTx;
@GuardedBy("this")
private boolean closed;
}
@Override
- public synchronized DOMDataWriteTransaction createTransaction(final boolean isolated) {
+ public synchronized DOMDataTreeWriteTransaction createTransaction(final boolean isolated) {
Preconditions.checkState(!closed, "Producer is already closed");
Preconditions.checkState(openTx == null, "Transaction %s is still open", openTx);
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort;
import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.slf4j.LoggerFactory;
@NotThreadSafe
-final class ShardedDOMDataWriteTransaction implements DOMDataWriteTransaction {
+final class ShardedDOMDataWriteTransaction implements DOMDataTreeWriteTransaction {
private static final Logger LOG = LoggerFactory.getLogger(ShardedDOMDataWriteTransaction.class);
private static final AtomicLong COUNTER = new AtomicLong();
private final Map<DOMDataTreeIdentifier, DOMStoreWriteTransaction> idToTransaction;
import org.opendaylight.mdsal.dom.broker.AbstractDOMDataBroker;
import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMDataChangeListener;
-import org.opendaylight.mdsal.dom.api.DOMDataReadTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.ForwardingExecutorService;
assertNotNull(domBroker);
- DOMDataReadTransaction readTx = domBroker.newReadOnlyTransaction();
+ DOMDataTreeReadTransaction readTx = domBroker.newReadOnlyTransaction();
assertNotNull(readTx);
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
assertNotNull(writeTx);
/**
*
@Test(timeout=10000)
public void testTransactionCommit() throws InterruptedException, ExecutionException {
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
assertNotNull(writeTx);
/**
*
Mockito.doReturn( true ).when( commitExecutor.delegate )
.awaitTermination( Mockito.anyLong(), Mockito.any( TimeUnit.class ) );
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put( OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME) );
writeTx.submit().checkedGet( 5, TimeUnit.SECONDS );
domBroker.registerDataChangeListener( OPERATIONAL, TestModel.TEST_PATH,
dcListener, DataChangeScope.BASE );
- final DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ final DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
assertNotNull( writeTx );
writeTx.put( OPERATIONAL, TestModel.TEST_PATH, testNode );
@Override
public void onDataChanged( final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change ) {
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put( OPERATIONAL, TestModel.TEST2_PATH,
ImmutableNodes.containerNode( TestModel.TEST2_QNAME ) );
Futures.addCallback( writeTx.submit(), new FutureCallback<Void>() {
domBroker.registerDataChangeListener( OPERATIONAL, TestModel.TEST_PATH,
dcListener, DataChangeScope.BASE );
- final DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ final DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
assertNotNull( writeTx );
writeTx.put( OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode( TestModel.TEST_QNAME ) );
TestDOMDataChangeListener dcListener = new TestDOMDataChangeListener() {
@Override
public void onDataChanged( final AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> change ) {
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put( OPERATIONAL, TestModel.TEST2_PATH,
ImmutableNodes.containerNode( TestModel.TEST2_QNAME ) );
try {
domBroker.registerDataChangeListener( OPERATIONAL, TestModel.TEST_PATH,
dcListener, DataChangeScope.BASE );
- final DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ final DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
assertNotNull( writeTx );
writeTx.put( OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode( TestModel.TEST_QNAME ) );
}
}
- AtomicReference<Throwable> submitTxAsync( final DOMDataWriteTransaction writeTx ) {
+ AtomicReference<Throwable> submitTxAsync( final DOMDataTreeWriteTransaction writeTx ) {
final AtomicReference<Throwable> caughtEx = new AtomicReference<>();
new Thread() {
@Override
import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.ForwardingExecutorService;
import com.google.common.util.concurrent.ListeningExecutorService;
final ListenerRegistration<TestDataTreeListener> listenerReg =
dataTreeChangeService.registerDataTreeChangeListener(ROOT_DATA_TREE_ID, listener);
- final DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ final DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH, TEST_CONTAINER);
writeTx.submit();
assertNotNull("DOMDataTreeChangeService not found, cannot continue with test!",
dataTreeChangeService);
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH, TEST_CONTAINER);
writeTx.submit().checkedGet();
assertNotNull("DOMDataTreeChangeService not found, cannot continue with test!",
dataTreeChangeService);
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH, TEST_CONTAINER);
writeTx.submit().checkedGet();
assertNotNull("DOMDataTreeChangeService not found, cannot continue with test!",
dataTreeChangeService);
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH, TEST_CONTAINER);
writeTx.submit().checkedGet();
assertNotNull("DOMDataTreeChangeService not found, cannot continue with test!",
dataTreeChangeService);
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH, TEST_CONTAINER);
writeTx.submit().checkedGet();
assertNotNull("DOMDataTreeChangeService not found, cannot continue with test!",
dataTreeChangeService);
- DOMDataWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction writeTx = domBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.CONFIGURATION, TestModel.TEST_PATH, TEST_CONTAINER);
writeTx.submit().checkedGet();
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.broker.AbstractDOMDataBroker;
import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker;
-import org.opendaylight.mdsal.dom.api.DOMDataReadTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import com.google.common.base.Optional;
*
*
*/
- DOMDataWriteTransaction firstTx = allocateAndWrite(txChain);
+ DOMDataTreeWriteTransaction firstTx = allocateAndWrite(txChain);
/**
* First transaction is marked as ready, we are able to allocate chained
/**
* We alocate chained transaction - read transaction.
*/
- DOMDataReadTransaction secondReadTx = txChain.newReadOnlyTransaction();
+ DOMDataTreeReadTransaction secondReadTx = txChain.newReadOnlyTransaction();
/**
*
* is read-write.
*
*/
- DOMDataWriteTransaction thirdDeleteTx = allocateAndDelete(txChain);
+ DOMDataTreeWriteTransaction thirdDeleteTx = allocateAndDelete(txChain);
/**
* We commit first transaction
* Allocates transaction from data store.
*
*/
- DOMDataReadTransaction storeReadTx = domBroker.newReadOnlyTransaction();
+ DOMDataTreeReadTransaction storeReadTx = domBroker.newReadOnlyTransaction();
/**
* We verify transaction is commited to store, container should exists
}
}
- private static DOMDataWriteTransaction allocateAndDelete(final DOMTransactionChain txChain)
+ private static DOMDataTreeWriteTransaction allocateAndDelete(final DOMTransactionChain txChain)
throws InterruptedException, ExecutionException {
- DOMDataWriteTransaction tx = txChain.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction tx = txChain.newWriteOnlyTransaction();
/**
* We delete node in third transaction
*/
return tx;
}
- private static DOMDataWriteTransaction allocateAndWrite(final DOMTransactionChain txChain)
+ private static DOMDataTreeWriteTransaction allocateAndWrite(final DOMTransactionChain txChain)
throws InterruptedException, ExecutionException {
- DOMDataWriteTransaction tx = txChain.newWriteOnlyTransaction();
+ DOMDataTreeWriteTransaction tx = txChain.newWriteOnlyTransaction();
writeTestContainer(tx);
return tx;
}
future.get();
}
- private static void assertTestContainerExists(final DOMDataReadTransaction readTx) throws InterruptedException,
+ private static void assertTestContainerExists(final DOMDataTreeReadTransaction readTx) throws InterruptedException,
ExecutionException {
ListenableFuture<Optional<NormalizedNode<?, ?>>> readFuture = readTx.read(OPERATIONAL, TestModel.TEST_PATH);
Optional<NormalizedNode<?, ?>> readedData = readFuture.get();
assertTrue(readedData.isPresent());
}
- private static void writeTestContainer(final DOMDataWriteTransaction tx) throws InterruptedException,
+ private static void writeTestContainer(final DOMDataTreeWriteTransaction tx) throws InterruptedException,
ExecutionException {
tx.put(OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
}
import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShardingConflictException;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.broker.ShardedDOMDataTree;
import org.opendaylight.mdsal.dom.broker.test.util.TestModel;
import org.opendaylight.mdsal.dom.spi.store.DOMStore;
@Test
public void closeWithTxSubmitted() throws DOMDataTreeProducerException {
- DOMDataWriteTransaction tx = producer.createTransaction(false);
+ DOMDataTreeWriteTransaction tx = producer.createTransaction(false);
tx.submit();
producer.close();
}
public void writeChildProducerDataToParentTx() {
DOMDataTreeProducer childProducer = producer.createProducer(SUBTREES_TEST);
assertNotNull(childProducer);
- DOMDataWriteTransaction parentTx = producer.createTransaction(true);
+ DOMDataTreeWriteTransaction parentTx = producer.createTransaction(true);
parentTx.put(TEST_ID.getDatastoreType(), TEST_ID.getRootIdentifier(),
ImmutableNodes.containerNode(TestModel.TEST_QNAME));
}
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension;
import org.opendaylight.mdsal.dom.api.DOMDataChangeListener;
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import com.google.common.collect.ForwardingObject;
import java.util.Map;
}
@Override
- public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
+ public DOMDataTreeReadTransaction newReadOnlyTransaction() {
return delegate().newReadOnlyTransaction();
}
@Override
- public DOMDataWriteTransaction newWriteOnlyTransaction() {
+ public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
return delegate().newWriteOnlyTransaction();
}
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.common.api.ReadFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
import com.google.common.base.Optional;
import com.google.common.collect.ForwardingObject;
import com.google.common.util.concurrent.CheckedFuture;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
/**
- * Utility {@link DOMDataReadOnlyTransaction} implementation which forwards all interface
+ * Utility {@link DOMDataTreeReadTransaction} implementation which forwards all interface
* method invocation to a delegate instance.
*/
-public abstract class ForwardingDOMDataReadOnlyTransaction extends ForwardingObject implements DOMDataReadOnlyTransaction {
+public abstract class ForwardingDOMDataReadOnlyTransaction extends ForwardingObject implements DOMDataTreeReadTransaction {
@Override
- protected abstract @Nonnull DOMDataReadOnlyTransaction delegate();
+ @Nonnull
+ protected abstract DOMDataTreeReadTransaction delegate();
@Override
public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
import com.google.common.collect.ForwardingObject;
import com.google.common.util.concurrent.CheckedFuture;
import javax.annotation.Nonnull;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
/**
- * Utility {@link DOMDataWriteTransaction} implementation which forwards all interface
+ * Utility {@link DOMDataTreeWriteTransaction} implementation which forwards all interface
* method invocation to a delegate instance.
*/
-public abstract class ForwardingDOMDataWriteTransaction extends ForwardingObject implements DOMDataWriteTransaction {
+public abstract class ForwardingDOMDataWriteTransaction extends ForwardingObject implements DOMDataTreeWriteTransaction {
@Override
- protected abstract @Nonnull DOMDataWriteTransaction delegate();
+ protected abstract @Nonnull DOMDataTreeWriteTransaction delegate();
@Override
public Object getIdentifier() {
*/
package org.opendaylight.mdsal.dom.spi;
-import org.opendaylight.mdsal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
import com.google.common.collect.ForwardingObject;
}
@Override
- public DOMDataReadOnlyTransaction newReadOnlyTransaction() {
+ public DOMDataTreeReadTransaction newReadOnlyTransaction() {
return delegate().newReadOnlyTransaction();
}
@Override
- public DOMDataWriteTransaction newWriteOnlyTransaction() {
+ public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
return delegate().newWriteOnlyTransaction();
}
}