import org.opendaylight.restconf.common.context.NormalizedNodeContext;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
import org.opendaylight.restconf.common.errors.RestconfError;
-import org.opendaylight.restconf.nb.rfc8040.handlers.TransactionChainHandler;
import org.opendaylight.restconf.nb.rfc8040.references.SchemaContextRef;
import org.opendaylight.restconf.nb.rfc8040.rests.transactions.TransactionVarsWrapper;
import org.opendaylight.restconf.nb.rfc8040.utils.parser.ParserIdentifier;
}
/**
- * Check mount point and prepare variables for post data.
+ * Check mount point and prepare variables for post data. Close {@link DOMTransactionChain} inside of object
+ * {@link TransactionVarsWrapper} provided as a parameter.
*
* @param uriInfo
*
transactionNode, schemaContextRef.get(), insert, point);
final URI location = PostDataTransactionUtil.resolveLocation(uriInfo, transactionNode, schemaContextRef);
final ResponseFactory dataFactory = new ResponseFactory(Status.CREATED).location(location);
- FutureCallbackTx.addCallback(future, RestconfDataServiceConstant.PostData.POST_TX_TYPE, dataFactory);
+ //This method will close transactionChain
+ FutureCallbackTx.addCallback(future, RestconfDataServiceConstant.PostData.POST_TX_TYPE, dataFactory,
+ transactionNode.getTransactionChain());
return dataFactory.build();
}
private static FluentFuture<? extends CommitInfo> submitData(final YangInstanceIdentifier path,
final NormalizedNode<?, ?> data, final TransactionVarsWrapper transactionNode,
final SchemaContext schemaContext, final String insert, final String point) {
- final DOMTransactionChain domTransactionChain = transactionNode.getTransactionChain();
- final DOMDataTreeReadWriteTransaction newReadWriteTransaction = domTransactionChain.newReadWriteTransaction();
+ final DOMTransactionChain transactionChain = transactionNode.getTransactionChain();
+ final DOMDataTreeReadWriteTransaction newReadWriteTransaction = transactionChain.newReadWriteTransaction();
if (insert == null) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(), newReadWriteTransaction);
+ makePost(path, data, schemaContext, transactionChain, newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
final DataSchemaNode schemaNode = PutDataTransactionUtil.checkListAndOrderedType(schemaContext, path);
schemaContext, transactionNode.getTransactionChainHandler(), schemaNode);
final OrderedMapNode readList = (OrderedMapNode) readData;
if (readList == null || readList.getValue().isEmpty()) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
newReadWriteTransaction.delete(LogicalDatastoreType.CONFIGURATION,
path.getParent().getParent());
simplePost(newReadWriteTransaction, LogicalDatastoreType.CONFIGURATION, path, data,
- schemaContext, transactionNode.getTransactionChainHandler());
- makePost(path, readData, schemaContext, transactionNode.getTransactionChainHandler(),
+ schemaContext, transactionChain);
+ makePost(path, readData, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
}
final OrderedLeafSetNode<?> readLeafList = (OrderedLeafSetNode<?>) readData;
if (readLeafList == null || readLeafList.getValue().isEmpty()) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
newReadWriteTransaction.delete(LogicalDatastoreType.CONFIGURATION,
path.getParent().getParent());
simplePost(newReadWriteTransaction, LogicalDatastoreType.CONFIGURATION, path, data,
- schemaContext, transactionNode.getTransactionChainHandler());
- makePost(path, readData, schemaContext, transactionNode.getTransactionChainHandler(),
+ schemaContext, transactionChain);
+ makePost(path, readData, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
}
}
case "last":
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
case "before":
schemaContext, transactionNode.getTransactionChainHandler(), schemaNode);
final OrderedMapNode readList = (OrderedMapNode) readData;
if (readList == null || readList.getValue().isEmpty()) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
insertWithPointListPost(newReadWriteTransaction, LogicalDatastoreType.CONFIGURATION, path,
data, schemaContext, point, readList, true,
- transactionNode.getTransactionChainHandler());
+ transactionChain);
return newReadWriteTransaction.commit();
}
} else {
final OrderedLeafSetNode<?> readLeafList = (OrderedLeafSetNode<?>) readData;
if (readLeafList == null || readLeafList.getValue().isEmpty()) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
insertWithPointLeafListPost(newReadWriteTransaction, LogicalDatastoreType.CONFIGURATION,
path, data, schemaContext, point, readLeafList, true,
- transactionNode.getTransactionChainHandler());
+ transactionChain);
return newReadWriteTransaction.commit();
}
}
schemaContext, transactionNode.getTransactionChainHandler(), schemaNode);
final OrderedMapNode readList = (OrderedMapNode) readData;
if (readList == null || readList.getValue().isEmpty()) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
insertWithPointListPost(newReadWriteTransaction, LogicalDatastoreType.CONFIGURATION, path,
data, schemaContext, point, readList, false,
- transactionNode.getTransactionChainHandler());
+ transactionChain);
return newReadWriteTransaction.commit();
}
} else {
final OrderedLeafSetNode<?> readLeafList = (OrderedLeafSetNode<?>) readData;
if (readLeafList == null || readLeafList.getValue().isEmpty()) {
- makePost(path, data, schemaContext, transactionNode.getTransactionChainHandler(),
+ makePost(path, data, schemaContext, transactionChain,
newReadWriteTransaction);
return newReadWriteTransaction.commit();
} else {
insertWithPointLeafListPost(newReadWriteTransaction, LogicalDatastoreType.CONFIGURATION,
path, data, schemaContext, point, readLeafList, true,
- transactionNode.getTransactionChainHandler());
+ transactionChain);
return newReadWriteTransaction.commit();
}
}
private static void insertWithPointLeafListPost(final DOMDataTreeReadWriteTransaction rwTransaction,
final LogicalDatastoreType datastore, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload,
final SchemaContext schemaContext, final String point, final OrderedLeafSetNode<?> readLeafList,
- final boolean before, final TransactionChainHandler transactionChainHandler) {
+ final boolean before, final DOMTransactionChain transactionChain) {
rwTransaction.delete(datastore, path.getParent().getParent());
final InstanceIdentifierContext<?> instanceIdentifier =
ParserIdentifier.toInstanceIdentifier(point, schemaContext, Optional.empty());
rwTransaction.merge(datastore, YangInstanceIdentifier.create(emptySubtree.getIdentifier()), emptySubtree);
for (final LeafSetEntryNode<?> nodeChild : readLeafList.getValue()) {
if (lastInsertedPosition == lastItemPosition) {
- TransactionUtil.checkItemDoesNotExists(transactionChainHandler, rwTransaction, datastore, path,
+ TransactionUtil.checkItemDoesNotExists(transactionChain, rwTransaction, datastore, path,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
rwTransaction.put(datastore, path, payload);
}
final YangInstanceIdentifier childPath = path.getParent().getParent().node(nodeChild.getIdentifier());
- TransactionUtil.checkItemDoesNotExists(transactionChainHandler, rwTransaction, datastore, childPath,
+ TransactionUtil.checkItemDoesNotExists(transactionChain, rwTransaction, datastore, childPath,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
rwTransaction.put(datastore, childPath, nodeChild);
lastInsertedPosition++;
private static void insertWithPointListPost(final DOMDataTreeReadWriteTransaction rwTransaction,
final LogicalDatastoreType datastore, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload,
final SchemaContext schemaContext, final String point, final MapNode readList, final boolean before,
- final TransactionChainHandler transactionChainHandler) {
+ final DOMTransactionChain transactionChain) {
rwTransaction.delete(datastore, path.getParent().getParent());
final InstanceIdentifierContext<?> instanceIdentifier =
ParserIdentifier.toInstanceIdentifier(point, schemaContext, Optional.empty());
rwTransaction.merge(datastore, YangInstanceIdentifier.create(emptySubtree.getIdentifier()), emptySubtree);
for (final MapEntryNode mapEntryNode : readList.getValue()) {
if (lastInsertedPosition == lastItemPosition) {
- TransactionUtil.checkItemDoesNotExists(transactionChainHandler, rwTransaction, datastore, path,
+ TransactionUtil.checkItemDoesNotExists(transactionChain, rwTransaction, datastore, path,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
rwTransaction.put(datastore, path, payload);
}
final YangInstanceIdentifier childPath = path.getParent().getParent().node(mapEntryNode.getIdentifier());
- TransactionUtil.checkItemDoesNotExists(transactionChainHandler, rwTransaction, datastore, childPath,
+ TransactionUtil.checkItemDoesNotExists(transactionChain, rwTransaction, datastore, childPath,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
rwTransaction.put(datastore, childPath, mapEntryNode);
lastInsertedPosition++;
}
private static void makePost(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data,
- final SchemaContext schemaContext, final TransactionChainHandler transactionChainHandler,
+ final SchemaContext schemaContext, final DOMTransactionChain transactionChain,
final DOMDataTreeReadWriteTransaction transaction) {
if (data instanceof MapNode) {
boolean merge = false;
for (final MapEntryNode child : ((MapNode) data).getValue()) {
final YangInstanceIdentifier childPath = path.node(child.getIdentifier());
TransactionUtil.checkItemDoesNotExists(
- transactionChainHandler, transaction, LogicalDatastoreType.CONFIGURATION, childPath,
+ transactionChain, transaction, LogicalDatastoreType.CONFIGURATION, childPath,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
if (!merge) {
merge = true;
}
} else {
TransactionUtil.checkItemDoesNotExists(
- transactionChainHandler, transaction, LogicalDatastoreType.CONFIGURATION, path,
+ transactionChain, transaction, LogicalDatastoreType.CONFIGURATION, path,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
TransactionUtil.ensureParentsByMerge(path, schemaContext, transaction);
private static void simplePost(final DOMDataTreeReadWriteTransaction rwTransaction,
final LogicalDatastoreType datastore, final YangInstanceIdentifier path, final NormalizedNode<?, ?> payload,
- final SchemaContext schemaContext, final TransactionChainHandler transactionChainHandler) {
- TransactionUtil.checkItemDoesNotExists(transactionChainHandler, rwTransaction, datastore, path,
+ final SchemaContext schemaContext, final DOMTransactionChain transactionChain) {
+ TransactionUtil.checkItemDoesNotExists(transactionChain, rwTransaction, datastore, path,
RestconfDataServiceConstant.PostData.POST_TX_TYPE);
TransactionUtil.ensureParentsByMerge(path, schemaContext, rwTransaction);
rwTransaction.put(datastore, path, payload);