+ @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<Module> 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);
+ }