X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb-rfc8040%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Fnb%2Frfc8040%2Frests%2Futils%2FPostDataTransactionUtil.java;h=16386a2e856ab19eee2db69bb6d59752d7bfdd40;hb=29e06cbd92b039d501a004cabcf0eb19f63c427a;hp=a45c3525bd6c1335e02794f58bd04f8ce8b2091f;hpb=6aa01b1c2105b8e54e667e8b85e06775889527d6;p=netconf.git diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtil.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtil.java index a45c3525bd..16386a2e85 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtil.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PostDataTransactionUtil.java @@ -19,10 +19,12 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMTransactionChain; import org.opendaylight.restconf.common.context.InstanceIdentifierContext; import org.opendaylight.restconf.common.errors.RestconfDocumentedException; +import org.opendaylight.restconf.nb.rfc8040.InsertParam; +import org.opendaylight.restconf.nb.rfc8040.PointParam; +import org.opendaylight.restconf.nb.rfc8040.WriteDataParams; import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload; import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy; import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfTransaction; -import org.opendaylight.restconf.nb.rfc8040.rests.utils.RestconfDataServiceConstant.PostPutQueryParameters.Insert; import org.opendaylight.restconf.nb.rfc8040.utils.parser.IdentifierCodec; import org.opendaylight.restconf.nb.rfc8040.utils.parser.ParserIdentifier; import org.opendaylight.yangtools.yang.common.ErrorTag; @@ -57,17 +59,15 @@ public final class PostDataTransactionUtil { * @param payload data * @param strategy Object that perform the actual DS operations * @param schemaContext reference to actual {@link EffectiveModelContext} - * @param point point - * @param insert insert + * @param params {@link WriteDataParams} * @return {@link Response} */ public static Response postData(final UriInfo uriInfo, final NormalizedNodePayload payload, final RestconfStrategy strategy, - final EffectiveModelContext schemaContext, final Insert insert, - final String point) { + final EffectiveModelContext schemaContext, final WriteDataParams params) { final YangInstanceIdentifier path = payload.getInstanceIdentifierContext().getInstanceIdentifier(); final FluentFuture future = submitData(path, payload.getData(), - strategy, schemaContext, insert, point); + strategy, schemaContext, params); final URI location = resolveLocation(uriInfo, path, schemaContext, payload.getData()); final ResponseFactory dataFactory = new ResponseFactory(Status.CREATED).location(location); //This method will close transactionChain if any @@ -90,8 +90,9 @@ public final class PostDataTransactionUtil { final NormalizedNode data, final RestconfStrategy strategy, final EffectiveModelContext schemaContext, - final Insert insert, final String point) { + final WriteDataParams params) { final RestconfTransaction transaction = strategy.prepareWriteExecution(); + final InsertParam insert = params.insert(); if (insert == null) { makePost(path, data, schemaContext, transaction); return transaction.commit(); @@ -121,7 +122,7 @@ public final class PostDataTransactionUtil { return transaction.commit(); } checkItemDoesNotExists(strategy.exists(LogicalDatastoreType.CONFIGURATION, path), path); - insertWithPointPost(path, data, schemaContext, point, + insertWithPointPost(path, data, schemaContext, params.getPoint(), (NormalizedNodeContainer) readData, true, transaction); return transaction.commit(); case AFTER: @@ -131,7 +132,7 @@ public final class PostDataTransactionUtil { return transaction.commit(); } checkItemDoesNotExists(strategy.exists(LogicalDatastoreType.CONFIGURATION, path), path); - insertWithPointPost(path, data, schemaContext, point, + insertWithPointPost(path, data, schemaContext, params.getPoint(), (NormalizedNodeContainer) readData, false, transaction); return transaction.commit(); default: @@ -142,13 +143,14 @@ public final class PostDataTransactionUtil { } private static void insertWithPointPost(final YangInstanceIdentifier path, final NormalizedNode data, - final EffectiveModelContext schemaContext, final String point, + final EffectiveModelContext schemaContext, final PointParam point, final NormalizedNodeContainer readList, final boolean before, final RestconfTransaction transaction) { final YangInstanceIdentifier parent = path.getParent().getParent(); transaction.remove(parent); - final InstanceIdentifierContext instanceIdentifier = - ParserIdentifier.toInstanceIdentifier(point, schemaContext, Optional.empty()); + final InstanceIdentifierContext instanceIdentifier = + // FIXME: Point should be able to give us this method + ParserIdentifier.toInstanceIdentifier(point.value(), schemaContext, Optional.empty()); int lastItemPosition = 0; for (final NormalizedNode nodeChild : readList.body()) { if (nodeChild.getIdentifier().equals(instanceIdentifier.getInstanceIdentifier().getLastPathArgument())) { @@ -173,7 +175,7 @@ public final class PostDataTransactionUtil { } private static void makePost(final YangInstanceIdentifier path, final NormalizedNode data, - final SchemaContext schemaContext, final RestconfTransaction transaction) { + final EffectiveModelContext schemaContext, final RestconfTransaction transaction) { try { transaction.create(path, data, schemaContext); } catch (RestconfDocumentedException e) {