From f43809ac6734a99dda498b9018f6f07164da4925 Mon Sep 17 00:00:00 2001 From: Vaclav Demcak Date: Fri, 6 Feb 2015 14:14:09 +0100 Subject: [PATCH] BUG 2412 - restconf @GET getModule(identifier,uri) method migration * migration to new faster Infrastructure API and Codecs for method @GET getModules(String,UriInfo) on @Path {/modules/module/identifier} New faster Infrastructure API works with NormizedNodeContext and we are replacing first method getModule(URI) from RestconfService to use NormalizedNodeContext. Change-Id: I7ae36a13ce4533598bbc3abf73d9090e1922abdb Signed-off-by: Vaclav Demcak --- .../sal/rest/api/RestconfService.java | 2 +- .../rest/impl/RestconfCompositeWrapper.java | 2 +- .../sal/restconf/impl/RestconfImpl.java | 60 +++++++++++-------- .../StatisticsRestconfServiceWrapper.java | 3 +- 4 files changed, 37 insertions(+), 30 deletions(-) diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java index 1da8ec6c9a..7bb90c83aa 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/api/RestconfService.java @@ -74,7 +74,7 @@ public interface RestconfService { @Path("/modules/module/{identifier:.+}") @Produces({ Draft02.MediaTypes.API + JSON, Draft02.MediaTypes.API + XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_XML }) - public StructuredData getModule(@PathParam("identifier") String identifier, @Context UriInfo uriInfo); + public NormalizedNodeContext getModule(@PathParam("identifier") String identifier, @Context UriInfo uriInfo); @GET @Path("/operations") diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java index c9b8b1e24e..bac967cfaf 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestconfCompositeWrapper.java @@ -37,7 +37,7 @@ public class RestconfCompositeWrapper implements RestconfService, SchemaRetrieva } @Override - public StructuredData getModule(final String identifier, final UriInfo uriInfo) { + public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) { return restconf.getModule(identifier, uriInfo); } diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java index a875615172..f44ce95155 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/RestconfImpl.java @@ -249,6 +249,40 @@ public class RestconfImpl implements RestconfService { mountPoint, schemaContext), moduleContainerBuilder.build()); } + @Override + public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) { + Preconditions.checkNotNull(identifier); + final QName moduleNameAndRevision = getModuleNameAndRevision(identifier); + Module module = null; + DOMMountPoint mountPoint = null; + final SchemaContext schemaContext; + if (identifier.contains(ControllerContext.MOUNT)) { + final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier); + mountPoint = mountPointIdentifier.getMountPoint(); + module = controllerContext.findModuleByNameAndRevision(mountPoint, moduleNameAndRevision); + schemaContext = mountPoint.getSchemaContext(); + } else { + module = controllerContext.findModuleByNameAndRevision(moduleNameAndRevision); + schemaContext = controllerContext.getGlobalSchema(); + } + + if (module == null) { + final String errMsg = "Module with name '" + moduleNameAndRevision.getLocalName() + + "' and revision '" + moduleNameAndRevision.getRevision() + "' was not found."; + throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT); + } + + final Module restconfModule = getRestconfModule(); + final Set modules = Collections.singleton(module); + final MapNode moduleMap = makeModuleMapNode(modules); + + final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode( + restconfModule, Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE); + Preconditions.checkState(moduleSchemaNode instanceof ListSchemaNode); + + return new NormalizedNodeContext(new InstanceIdentifierContext(null, moduleSchemaNode, mountPoint, + schemaContext), moduleMap); + } @Override public StructuredData getAvailableStreams(final UriInfo uriInfo) { @@ -269,32 +303,6 @@ public class RestconfImpl implements RestconfService { return new StructuredData(streamsNode, streamsSchemaNode, null, parsePrettyPrintParameter(uriInfo)); } - @Override - public StructuredData getModule(final String identifier, final UriInfo uriInfo) { - final QName moduleNameAndRevision = getModuleNameAndRevision(identifier); - Module module = null; - DOMMountPoint mountPoint = null; - if (identifier.contains(ControllerContext.MOUNT)) { - final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier); - mountPoint = mountPointIdentifier.getMountPoint(); - module = controllerContext.findModuleByNameAndRevision(mountPoint, moduleNameAndRevision); - } else { - module = controllerContext.findModuleByNameAndRevision(moduleNameAndRevision); - } - - if (module == null) { - throw new RestconfDocumentedException("Module with name '" + moduleNameAndRevision.getLocalName() - + "' and revision '" + moduleNameAndRevision.getRevision() + "' was not found.", - ErrorType.PROTOCOL, ErrorTag.UNKNOWN_ELEMENT); - } - - final Module restconfModule = getRestconfModule(); - final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(restconfModule, - Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE); - final CompositeNode moduleNode = toModuleCompositeNode(module, moduleSchemaNode); - return new StructuredData(moduleNode, moduleSchemaNode, mountPoint, parsePrettyPrintParameter(uriInfo)); - } - @Override public StructuredData getOperations(final UriInfo uriInfo) { final Set allModules = controllerContext.getAllModules(); diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java index 9c5dc91803..53dda7dbfb 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/StatisticsRestconfServiceWrapper.java @@ -52,7 +52,7 @@ public class StatisticsRestconfServiceWrapper implements RestconfService { } @Override - public StructuredData getModule(final String identifier, final UriInfo uriInfo) { + public NormalizedNodeContext getModule(final String identifier, final UriInfo uriInfo) { return delegate.getModule(identifier, uriInfo); } @@ -146,5 +146,4 @@ public class StatisticsRestconfServiceWrapper implements RestconfService { public BigInteger getRpc() { return BigInteger.valueOf(rpc.get()); } - } -- 2.36.6