From: Robert Varga Date: Mon, 9 May 2022 09:20:42 +0000 (+0200) Subject: Do not access model context multiple times X-Git-Tag: v4.0.0~78 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=netconf.git;a=commitdiff_plain;h=365a4ee24f4760a4e09b72d4959f618479dccf2a Do not access model context multiple times InstanceIdentifierContext has a capture of the model context, use it from there instead of accessing it multiple times. Change-Id: Ia29bf5a3e80d164c08ef338649080cb4f48ce4a5 Signed-off-by: Robert Varga --- diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java index f038ad07b5..8257b6394e 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/RestconfDataServiceImpl.java @@ -42,7 +42,6 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteOperations; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMMountPoint; import org.opendaylight.mdsal.dom.api.DOMMountPointService; -import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.spi.SimpleDOMActionResult; import org.opendaylight.restconf.common.context.InstanceIdentifierContext; import org.opendaylight.restconf.common.errors.RestconfDocumentedException; @@ -224,12 +223,8 @@ public class RestconfDataServiceImpl implements RestconfDataService { validTopLevelNodeName(iid.getInstanceIdentifier(), payload); validateListKeysEqualityInPayloadAndUri(payload); - final DOMMountPoint mountPoint = payload.getInstanceIdentifierContext().getMountPoint(); - final EffectiveModelContext ref = mountPoint == null - ? schemaContextHandler.get() : modelContext(mountPoint); - - final RestconfStrategy strategy = getRestconfStrategy(mountPoint); - return PutDataTransactionUtil.putData(payload, ref, strategy, params); + final RestconfStrategy strategy = getRestconfStrategy(iid.getMountPoint()); + return PutDataTransactionUtil.putData(payload, iid.getSchemaContext(), strategy, params); } @Override @@ -240,14 +235,14 @@ public class RestconfDataServiceImpl implements RestconfDataService { @Override public Response postData(final NormalizedNodePayload payload, final UriInfo uriInfo) { requireNonNull(payload); - if (payload.getInstanceIdentifierContext().getSchemaNode() instanceof ActionDefinition) { + final InstanceIdentifierContext iid = payload.getInstanceIdentifierContext(); + if (iid.getSchemaNode() instanceof ActionDefinition) { return invokeAction(payload); } final WriteDataParams params = QueryParams.newWriteDataParams(uriInfo); - final DOMMountPoint mountPoint = payload.getInstanceIdentifierContext().getMountPoint(); - final RestconfStrategy strategy = getRestconfStrategy(mountPoint); - return PostDataTransactionUtil.postData(uriInfo, payload, strategy, getSchemaContext(mountPoint), params); + final RestconfStrategy strategy = getRestconfStrategy(iid.getMountPoint()); + return PostDataTransactionUtil.postData(uriInfo, payload, strategy, iid.getSchemaContext(), params); } @Override @@ -267,11 +262,11 @@ public class RestconfDataServiceImpl implements RestconfDataService { @Override public PatchStatusContext patchData(final PatchContext context, final UriInfo uriInfo) { - final DOMMountPoint mountPoint = RestconfDocumentedException.throwIfNull(context, + final InstanceIdentifierContext iid = RestconfDocumentedException.throwIfNull(context, ErrorType.PROTOCOL, ErrorTag.MALFORMED_MESSAGE, "No patch documented provided") - .getInstanceIdentifierContext().getMountPoint(); - final RestconfStrategy strategy = getRestconfStrategy(mountPoint); - return PatchDataTransactionUtil.patchData(context, strategy, getSchemaContext(mountPoint)); + .getInstanceIdentifierContext(); + final RestconfStrategy strategy = getRestconfStrategy(iid.getMountPoint()); + return PatchDataTransactionUtil.patchData(context, strategy, iid.getSchemaContext()); } @Override @@ -283,16 +278,8 @@ public class RestconfDataServiceImpl implements RestconfDataService { validTopLevelNodeName(iid.getInstanceIdentifier(), payload); validateListKeysEqualityInPayloadAndUri(payload); - final DOMMountPoint mountPoint = payload.getInstanceIdentifierContext().getMountPoint(); - final EffectiveModelContext ref = mountPoint == null - ? schemaContextHandler.get() : modelContext(mountPoint); - final RestconfStrategy strategy = getRestconfStrategy(mountPoint); - - return PlainPatchDataTransactionUtil.patchData(payload, strategy, ref); - } - - private EffectiveModelContext getSchemaContext(final DOMMountPoint mountPoint) { - return mountPoint == null ? schemaContextHandler.get() : modelContext(mountPoint); + final RestconfStrategy strategy = getRestconfStrategy(iid.getMountPoint()); + return PlainPatchDataTransactionUtil.patchData(payload, strategy, iid.getSchemaContext()); } // FIXME: why is this synchronized? @@ -490,10 +477,4 @@ public class RestconfDataServiceImpl implements RestconfDataService { } } } - - private static EffectiveModelContext modelContext(final DOMMountPoint mountPoint) { - return mountPoint.getService(DOMSchemaService.class) - .flatMap(svc -> Optional.ofNullable(svc.getGlobalContext())) - .orElse(null); - } }