X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FRestconfImpl.java;h=a875615172228cb629c52aeabaf0dceefa9c71b9;hp=9dc299ddaf91155e62222378d8d5eafaabe6a2c4;hb=365c9751fb9b8b5464e2576c417e97be64732def;hpb=dddd84ae73bdefcfb2ef1de77a98b9462eeff66d 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 9dc299ddaf..a875615172 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 @@ -218,6 +218,38 @@ public class RestconfImpl implements RestconfService { null, schemaContext), moduleContainerBuilder.build()); } + /** + * Valid only for mount point + */ + @Override + public NormalizedNodeContext getModules(final String identifier, final UriInfo uriInfo) { + Preconditions.checkNotNull(identifier); + if ( ! identifier.contains(ControllerContext.MOUNT)) { + final String errMsg = "URI has bad format. If modules behind mount point should be showed," + + " URI has to end with " + ControllerContext.MOUNT; + throw new RestconfDocumentedException(errMsg, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); + } + + final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier); + final DOMMountPoint mountPoint = mountPointIdentifier.getMountPoint(); + final Set modules = controllerContext.getAllModules(mountPoint); + final SchemaContext schemaContext = mountPoint.getSchemaContext(); + final MapNode mountPointModulesMap = makeModuleMapNode(modules); + + final Module restconfModule = getRestconfModule(); + final DataSchemaNode modulesSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode( + restconfModule, Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE); + Preconditions.checkState(modulesSchemaNode instanceof ContainerSchemaNode); + + final DataContainerNodeAttrBuilder moduleContainerBuilder = + Builders.containerBuilder((ContainerSchemaNode) modulesSchemaNode); + moduleContainerBuilder.withChild(mountPointModulesMap); + + return new NormalizedNodeContext(new InstanceIdentifierContext(null, modulesSchemaNode, + mountPoint, schemaContext), moduleContainerBuilder.build()); + } + + @Override public StructuredData getAvailableStreams(final UriInfo uriInfo) { final Set availableStreams = Notificator.getStreamNames(); @@ -237,36 +269,6 @@ public class RestconfImpl implements RestconfService { return new StructuredData(streamsNode, streamsSchemaNode, null, parsePrettyPrintParameter(uriInfo)); } - @Override - public StructuredData getModules(final String identifier, final UriInfo uriInfo) { - Set modules = null; - DOMMountPoint mountPoint = null; - if (identifier.contains(ControllerContext.MOUNT)) { - final InstanceIdentifierContext mountPointIdentifier = controllerContext.toMountPointIdentifier(identifier); - mountPoint = mountPointIdentifier.getMountPoint(); - modules = controllerContext.getAllModules(mountPoint); - } else { - throw new RestconfDocumentedException( - "URI has bad format. If modules behind mount point should be showed, URI has to end with " - + ControllerContext.MOUNT, ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); - } - - final List> modulesAsData = new ArrayList>(); - final Module restconfModule = getRestconfModule(); - final DataSchemaNode moduleSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(restconfModule, - Draft02.RestConfModule.MODULE_LIST_SCHEMA_NODE); - - for (final Module module : modules) { - modulesAsData.add(toModuleCompositeNode(module, moduleSchemaNode)); - } - - final DataSchemaNode modulesSchemaNode = controllerContext.getRestconfModuleRestConfSchemaNode(restconfModule, - Draft02.RestConfModule.MODULES_CONTAINER_SCHEMA_NODE); - final QName qName = modulesSchemaNode.getQName(); - final CompositeNode modulesNode = NodeFactory.createImmutableCompositeNode(qName, null, modulesAsData); - return new StructuredData(modulesNode, modulesSchemaNode, mountPoint, parsePrettyPrintParameter(uriInfo)); - } - @Override public StructuredData getModule(final String identifier, final UriInfo uriInfo) { final QName moduleNameAndRevision = getModuleNameAndRevision(identifier);