*/
package org.opendaylight.netconf.sal.rest.doc.impl;
-import static org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
+import static java.util.Objects.requireNonNull;
-import java.util.Objects;
import javax.ws.rs.core.UriInfo;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
+import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
import org.opendaylight.netconf.sal.rest.doc.swagger.CommonApiObject;
import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
public class AllModulesDocGenerator {
- private final ApiDocGeneratorDraftO2 apiDocGeneratorDraft02;
private final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040;
- public AllModulesDocGenerator(final ApiDocGeneratorDraftO2 apiDocGeneratorDraft02,
- final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040) {
- this.apiDocGeneratorDraft02 = Objects.requireNonNull(apiDocGeneratorDraft02);
- this.apiDocGeneratorRFC8040 = Objects.requireNonNull(apiDocGeneratorRFC8040);
+ public AllModulesDocGenerator(final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040) {
+ this.apiDocGeneratorRFC8040 = requireNonNull(apiDocGeneratorRFC8040);
}
- public CommonApiObject getAllModulesDoc(final UriInfo uriInfo, final URIType uriType, final OAversion oaversion) {
+ public CommonApiObject getAllModulesDoc(final UriInfo uriInfo, final OAversion oaversion) {
final DefinitionNames definitionNames = new DefinitionNames();
- final SwaggerObject doc;
- if (uriType.equals(URIType.DRAFT02)) {
- doc = apiDocGeneratorDraft02.getAllModulesDoc(uriInfo, definitionNames, uriType, oaversion);
- } else {
- doc = apiDocGeneratorRFC8040.getAllModulesDoc(uriInfo, definitionNames, uriType, oaversion);
- }
+ final SwaggerObject doc = apiDocGeneratorRFC8040.getAllModulesDoc(uriInfo, definitionNames, oaversion);
return BaseYangSwaggerGenerator.getAppropriateDoc(doc, oaversion);
}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.netconf.sal.rest.doc.impl;
-
-import java.util.Objects;
-import java.util.Optional;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-
-/**
- * This class gathers all YANG-defined {@link org.opendaylight.yangtools.yang.model.api.Module}s and
- * generates Swagger compliant documentation for the bierman draft02 version.
- */
-public class ApiDocGeneratorDraftO2 extends BaseYangSwaggerGeneratorDraft02 {
-
- public ApiDocGeneratorDraftO2(final DOMSchemaService schemaService) {
- super(Optional.of(Objects.requireNonNull(schemaService)));
- }
-
- public ApiDocGeneratorDraftO2(final DOMSchemaService schemaService, final String basePath) {
- super(Optional.of(Objects.requireNonNull(schemaService)), basePath);
- }
-}
*/
package org.opendaylight.netconf.sal.rest.doc.impl;
-import java.util.Objects;
import java.util.Optional;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
* @author Thomas Pantelis
*/
public class ApiDocGeneratorRFC8040 extends BaseYangSwaggerGeneratorRFC8040 {
-
public ApiDocGeneratorRFC8040(final DOMSchemaService schemaService) {
- super(Optional.of(Objects.requireNonNull(schemaService)));
+ super(Optional.of(schemaService));
}
public ApiDocGeneratorRFC8040(final DOMSchemaService schemaService, final String basePath) {
- super(Optional.of(Objects.requireNonNull(schemaService)), basePath);
+ super(Optional.of(schemaService), basePath);
}
}
*/
package org.opendaylight.netconf.sal.rest.doc.impl;
+import static java.util.Objects.requireNonNull;
+
import java.util.List;
-import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.ws.rs.core.Response;
// Query parameter
private static final String PAGE_NUM = "pageNum";
- public enum URIType { RFC8040, DRAFT02 }
-
public enum OAversion { V2_0, V3_0 }
- private final MountPointSwagger mountPointSwaggerDraft02;
private final MountPointSwagger mountPointSwaggerRFC8040;
- private final ApiDocGeneratorDraftO2 apiDocGeneratorDraft02;
private final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040;
private final AllModulesDocGenerator allModulesDocGenerator;
- public ApiDocServiceImpl(final MountPointSwaggerGeneratorDraft02 mountPointSwaggerGeneratorDraft02,
- final MountPointSwaggerGeneratorRFC8040 mountPointSwaggerGeneratorRFC8040,
- final ApiDocGeneratorDraftO2 apiDocGeneratorDraft02,
+ public ApiDocServiceImpl(final MountPointSwaggerGeneratorRFC8040 mountPointSwaggerGeneratorRFC8040,
final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040,
final AllModulesDocGenerator allModulesDocGenerator) {
- this.mountPointSwaggerDraft02 =
- Objects.requireNonNull(mountPointSwaggerGeneratorDraft02).getMountPointSwagger();
- this.mountPointSwaggerRFC8040 =
- Objects.requireNonNull(mountPointSwaggerGeneratorRFC8040).getMountPointSwagger();
- this.apiDocGeneratorDraft02 = Objects.requireNonNull(apiDocGeneratorDraft02);
- this.apiDocGeneratorRFC8040 = Objects.requireNonNull(apiDocGeneratorRFC8040);
- this.allModulesDocGenerator = Objects.requireNonNull(allModulesDocGenerator);
+ mountPointSwaggerRFC8040 =
+ requireNonNull(mountPointSwaggerGeneratorRFC8040).getMountPointSwagger();
+ this.apiDocGeneratorRFC8040 = requireNonNull(apiDocGeneratorRFC8040);
+ this.allModulesDocGenerator = requireNonNull(allModulesDocGenerator);
}
@Override
public synchronized Response getAllModulesDoc(final UriInfo uriInfo) {
- final CommonApiObject allModulesDoc = allModulesDocGenerator.getAllModulesDoc(uriInfo, identifyUriType(uriInfo),
- identifyOpenApiVersion(uriInfo));
- return Response.ok(allModulesDoc).build();
+ return Response.ok(allModulesDocGenerator.getAllModulesDoc(uriInfo, identifyOpenApiVersion(uriInfo))).build();
}
/**
*/
@Override
public synchronized Response getDocByModule(final String module, final String revision, final UriInfo uriInfo) {
- final CommonApiObject doc;
- final OAversion oaversion = identifyOpenApiVersion(uriInfo);
- if (identifyUriType(uriInfo).equals(URIType.RFC8040)) {
- doc = apiDocGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo, URIType.RFC8040, oaversion);
- } else {
- doc = apiDocGeneratorDraft02.getApiDeclaration(module, revision, uriInfo, URIType.DRAFT02, oaversion);
- }
-
- return Response.ok(doc).build();
+ return Response.ok(
+ apiDocGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo, identifyOpenApiVersion(uriInfo)))
+ .build();
}
/**
@Override
public synchronized Response getListOfMounts(final UriInfo uriInfo) {
- final MountPointSwagger mountPointSwagger;
- if (identifyUriType(uriInfo).equals(URIType.RFC8040)) {
- mountPointSwagger = mountPointSwaggerRFC8040;
- } else {
- mountPointSwagger = mountPointSwaggerDraft02;
- }
- final List<MountPointInstance> entity = mountPointSwagger
+ final List<MountPointInstance> entity = mountPointSwaggerRFC8040
.getInstanceIdentifiers().entrySet().stream()
.map(MountPointInstance::new).collect(Collectors.toList());
return Response.ok(entity).build();
@Override
public synchronized Response getMountDocByModule(final String instanceNum, final String module,
final String revision, final UriInfo uriInfo) {
- final CommonApiObject api;
final OAversion oaversion = identifyOpenApiVersion(uriInfo);
- if (identifyUriType(uriInfo).equals(URIType.RFC8040)) {
- api = mountPointSwaggerRFC8040
- .getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, revision, URIType.RFC8040,
- oaversion);
- } else {
- api = mountPointSwaggerDraft02
- .getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, revision, URIType.DRAFT02,
- oaversion);
- }
+ final CommonApiObject api = mountPointSwaggerRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum),
+ module, revision, oaversion);
return Response.ok(api).build();
}
final String stringPageNum = uriInfo.getQueryParameters().getFirst(PAGE_NUM);
final Optional<Integer> pageNum = stringPageNum != null ? Optional.of(Integer.valueOf(stringPageNum))
: Optional.empty();
- if (identifyUriType(uriInfo).equals(URIType.RFC8040)) {
- api = mountPointSwaggerRFC8040
- .getMountPointApi(uriInfo, Long.parseLong(instanceNum), pageNum, URIType.RFC8040,
- oaversion);
- } else {
- api = mountPointSwaggerDraft02
- .getMountPointApi(uriInfo, Long.parseLong(instanceNum), pageNum, URIType.DRAFT02,
- oaversion);
- }
+ api = mountPointSwaggerRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), pageNum, oaversion);
return Response.ok(api).build();
}
- private static URIType identifyUriType(final UriInfo uriInfo) {
- if (uriInfo.getBaseUri().toString().contains("/18/")) {
- return URIType.RFC8040;
- }
- return URIType.DRAFT02;
- }
-
private static OAversion identifyOpenApiVersion(final UriInfo uriInfo) {
if (uriInfo.getBaseUri().toString().contains("/swagger2/")) {
return OAversion.V2_0;
package org.opendaylight.netconf.sal.rest.doc.impl;
import static org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.DEFAULT_PAGESIZE;
-import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.CONFIG;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.TOP;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildDelete;
import static org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.buildGet;
import javax.ws.rs.core.UriInfo;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
import org.opendaylight.netconf.sal.rest.doc.swagger.CommonApiObject;
import org.opendaylight.netconf.sal.rest.doc.swagger.Components;
import org.opendaylight.netconf.sal.rest.doc.swagger.Info;
protected BaseYangSwaggerGenerator(final Optional<DOMSchemaService> schemaService) {
this.schemaService = schemaService.orElse(null);
- this.mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
+ mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
}
public DOMSchemaService getSchemaService() {
}
public ResourceList getResourceListing(final UriInfo uriInfo, final EffectiveModelContext schemaContext,
- final String context, final URIType uriType, final OAversion oaversion) {
- return getResourceListing(uriInfo, schemaContext, context, 0, true, uriType, oaversion);
+ final String context, final OAversion oaversion) {
+ return getResourceListing(uriInfo, schemaContext, context, 0, true, oaversion);
}
/**
*/
public ResourceList getResourceListing(final UriInfo uriInfo, final EffectiveModelContext schemaContext,
final String context, final int pageNum, final boolean all,
- final URIType uriType, final OAversion oaversion) {
+ final OAversion oaversion) {
final ResourceList resourceList = createResourceList();
final Set<Module> modules = getSortedModules(schemaContext);
LOG.debug("Working on [{},{}]...", module.getName(), revisionString);
final SwaggerObject doc = getApiDeclaration(module.getName(), revisionString, uriInfo, schemaContext,
- context, uriType, oaversion);
+ context, oaversion);
if (doc != null) {
count++;
if (count >= start && count < end || all) {
}
public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final DefinitionNames definitionNames,
- final URIType uriType, final OAversion oaversion) {
+ final OAversion oaversion) {
final EffectiveModelContext schemaContext = schemaService.getGlobalContext();
Preconditions.checkState(schemaContext != null);
return getAllModulesDoc(uriInfo, Optional.empty(), schemaContext, Optional.empty(), "", definitionNames,
- uriType, oaversion);
+ oaversion);
}
public SwaggerObject getAllModulesDoc(final UriInfo uriInfo, final Optional<Range<Integer>> range,
final EffectiveModelContext schemaContext, final Optional<String> deviceName,
final String context, final DefinitionNames definitionNames,
- final URIType uriType, final OAversion oaversion) {
+ final OAversion oaversion) {
final String schema = createSchemaFromUriInfo(uriInfo);
final String host = createHostFromUriInfo(uriInfo);
String name = "Controller";
name = deviceName.get();
}
- final String title = String.format("%s modules of RestConf version %s", name, uriType.name());
+ final String title = name + " modules of RESTCONF";
final SwaggerObject doc = createSwaggerObject(schema, host, BASE_PATH, title);
doc.setDefinitions(JsonNodeFactory.instance.objectNode());
doc.setPaths(JsonNodeFactory.instance.objectNode());
- fillDoc(doc, range, schemaContext, context, deviceName, uriType, oaversion, definitionNames);
+ fillDoc(doc, range, schemaContext, context, deviceName, oaversion, definitionNames);
return doc;
}
public void fillDoc(final SwaggerObject doc, final Optional<Range<Integer>> range,
final EffectiveModelContext schemaContext, final String context,
- final Optional<String> deviceName, final URIType uriType, final OAversion oaversion,
+ final Optional<String> deviceName, final OAversion oaversion,
final DefinitionNames definitionNames) {
final SortedSet<Module> modules = getSortedModules(schemaContext);
final Set<Module> filteredModules;
LOG.debug("Working on [{},{}]...", module.getName(), revisionString);
- getSwaggerDocSpec(module, context, deviceName, schemaContext, uriType, oaversion, definitionNames, doc,
- false);
+ getSwaggerDocSpec(module, context, deviceName, schemaContext, oaversion, definitionNames, doc, false);
}
}
}
public CommonApiObject getApiDeclaration(final String module, final String revision, final UriInfo uriInfo,
- final URIType uriType, final OAversion oaversion) {
+ final OAversion oaversion) {
final EffectiveModelContext schemaContext = schemaService.getGlobalContext();
Preconditions.checkState(schemaContext != null);
- final SwaggerObject doc = getApiDeclaration(module, revision, uriInfo, schemaContext, "", uriType,
- oaversion);
+ final SwaggerObject doc = getApiDeclaration(module, revision, uriInfo, schemaContext, "", oaversion);
return getAppropriateDoc(doc, oaversion);
}
public SwaggerObject getApiDeclaration(final String moduleName, final String revision, final UriInfo uriInfo,
final EffectiveModelContext schemaContext, final String context,
- final URIType uriType, final OAversion oaversion) {
+ final OAversion oaversion) {
final Optional<Revision> rev;
try {
Preconditions.checkArgument(module != null,
"Could not find module by name,revision: " + moduleName + "," + revision);
- return getApiDeclaration(module, uriInfo, context, schemaContext, uriType, oaversion);
+ return getApiDeclaration(module, uriInfo, context, schemaContext, oaversion);
}
- public SwaggerObject getApiDeclaration(final Module module, final UriInfo uriInfo,
- final String context, final EffectiveModelContext schemaContext,
- final URIType uriType, final OAversion oaversion) {
+ public SwaggerObject getApiDeclaration(final Module module, final UriInfo uriInfo, final String context,
+ final EffectiveModelContext schemaContext, final OAversion oaversion) {
final String schema = createSchemaFromUriInfo(uriInfo);
final String host = createHostFromUriInfo(uriInfo);
- return getSwaggerDocSpec(module, schema, host, BASE_PATH, context, schemaContext, uriType, oaversion);
+ return getSwaggerDocSpec(module, schema, host, BASE_PATH, context, schemaContext, oaversion);
}
public String createHostFromUriInfo(final UriInfo uriInfo) {
public SwaggerObject getSwaggerDocSpec(final Module module, final String schema, final String host,
final String basePath, final String context,
- final EffectiveModelContext schemaContext, final URIType uriType,
- final OAversion oaversion) {
+ final EffectiveModelContext schemaContext, final OAversion oaversion) {
final SwaggerObject doc = createSwaggerObject(schema, host, basePath, module.getName());
final DefinitionNames definitionNames = new DefinitionNames();
- return getSwaggerDocSpec(module, context, Optional.empty(), schemaContext, uriType, oaversion,
- definitionNames, doc, true);
+ return getSwaggerDocSpec(module, context, Optional.empty(), schemaContext, oaversion, definitionNames, doc,
+ true);
}
public SwaggerObject getSwaggerDocSpec(final Module module, final String context, final Optional<String> deviceName,
- final EffectiveModelContext schemaContext, final URIType uriType,
- final OAversion oaversion, final DefinitionNames definitionNames,
- final SwaggerObject doc, final boolean isForSingleModule) {
+ final EffectiveModelContext schemaContext, final OAversion oaversion,
+ final DefinitionNames definitionNames, final SwaggerObject doc,
+ final boolean isForSingleModule) {
final ObjectNode definitions;
try {
if (isForSingleModule) {
- definitions = this.jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, oaversion,
+ definitions = jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, oaversion,
true);
doc.setDefinitions(definitions);
} else {
- definitions = this.jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, oaversion,
+ definitions = jsonConverter.convertToJsonSchema(module, schemaContext, definitionNames, oaversion,
false);
addFields(doc.getDefinitions(), definitions.fields());
}
if (LOG.isDebugEnabled()) {
- LOG.debug("Document: {}", this.mapper.writeValueAsString(doc));
+ LOG.debug("Document: {}", mapper.writeValueAsString(doc));
}
} catch (final IOException e) {
LOG.error("Exception occured in DefinitionGenerator", e);
}
final String resolvedPath = resourcePath + "/" + createPath(node, pathParams, oaversion, localName);
- addPaths(node, deviceName, moduleName, paths, pathParams, schemaContext, true,
- module.getName(), definitionNames, uriType, oaversion, resolvedPath);
+ addPaths(node, deviceName, moduleName, paths, pathParams, schemaContext, true, module.getName(),
+ definitionNames, oaversion, resolvedPath);
}
pathParams = JsonNodeFactory.instance.arrayNode();
resourcePath = getResourcePath("operational", context);
- if (uriType.equals(URIType.DRAFT02)
- || uriType.equals(URIType.RFC8040) && !node.isConfiguration()) {
+ if (!node.isConfiguration()) {
final String resolvedPath = resourcePath + "/" + createPath(node, pathParams, oaversion, localName);
- addPaths(node, deviceName, moduleName, paths, pathParams, schemaContext, false,
- moduleName, definitionNames, uriType, oaversion, resolvedPath);
+ addPaths(node, deviceName, moduleName, paths, pathParams, schemaContext, false, moduleName,
+ definitionNames, oaversion, resolvedPath);
}
}
}
private void addPaths(final DataSchemaNode node, final Optional<String> deviceName, final String moduleName,
final ObjectNode paths, final ArrayNode parentPathParams,
final EffectiveModelContext schemaContext, final boolean isConfig, final String parentName,
- final DefinitionNames definitionNames, final URIType uriType, final OAversion oaversion,
- final String resourcePath) {
+ final DefinitionNames definitionNames, final OAversion oaversion, final String resourcePath) {
LOG.debug("Adding path: [{}]", resourcePath);
final ArrayNode pathParams = JsonUtil.copy(parentPathParams);
final ObjectNode path = JsonNodeFactory.instance.objectNode();
path.setAll(operations(node, moduleName, deviceName, pathParams, isConfig, parentName, definitionNames,
- uriType, oaversion));
+ oaversion));
paths.set(resourcePath, path);
- if (uriType.equals(URIType.RFC8040)) {
+ if (node instanceof ActionNodeContainer) {
((ActionNodeContainer) node).getActions().forEach(actionDef -> {
final String resolvedPath = "rests/operations" + resourcePath.substring(11)
+ "/" + resolvePathArgumentsName(actionDef.getQName(), node.getQName(), schemaContext);
final String localName = resolvePathArgumentsName(childNode.getQName(), node.getQName(), schemaContext);
final String newResourcePath = resourcePath + "/" + createPath(childNode, pathParams, oaversion,
localName);
- if (uriType.equals(URIType.RFC8040)) {
- final boolean newIsConfig = isConfig && childNode.isConfiguration();
- addPaths(childNode, deviceName, moduleName, paths, pathParams, schemaContext,
- newIsConfig, newParent, definitionNames, uriType, oaversion, newResourcePath);
- } else {
- if (!isConfig || childNode.isConfiguration()) {
- addPaths(childNode, deviceName, moduleName, paths, pathParams, schemaContext,
- isConfig, newParent, definitionNames, uriType, oaversion, newResourcePath);
- }
- }
+ final boolean newIsConfig = isConfig && childNode.isConfiguration();
+ addPaths(childNode, deviceName, moduleName, paths, pathParams, schemaContext,
+ newIsConfig, newParent, definitionNames, oaversion, newResourcePath);
}
}
}
private static Map<String, ObjectNode> operations(final DataSchemaNode node, final String moduleName,
final Optional<String> deviceName, final ArrayNode pathParams,
final boolean isConfig, final String parentName,
- final DefinitionNames definitionNames, final URIType uriType,
+ final DefinitionNames definitionNames,
final OAversion oaversion) {
final Map<String, ObjectNode> operations = new HashMap<>();
final String discriminator = definitionNames.getDiscriminator(node);
final String nodeName = node.getQName().getLocalName();
- String prefix = "_";
- if (isConfig && uriType.equals(URIType.DRAFT02)) {
- prefix = CONFIG + "_";
- }
-
- final String defName = parentName + prefix + nodeName + TOP + discriminator;
- final ObjectNode get = buildGet(node, moduleName, deviceName, pathParams, defName, isConfig, uriType,
- oaversion);
+ final String defName = parentName + "_" + nodeName + TOP + discriminator;
+ final ObjectNode get = buildGet(node, moduleName, deviceName, pathParams, defName, isConfig, oaversion);
operations.put("get", get);
+++ /dev/null
-/*
- * Copyright (c) 2018 Inocybe Technologies and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.netconf.sal.rest.doc.impl;
-
-import java.util.Optional;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-
-/**
- * Base class for a bierman draft02 implementation.
- *
- * @author Thomas Pantelis
- */
-public abstract class BaseYangSwaggerGeneratorDraft02 extends BaseYangSwaggerGenerator {
-
- private static final String PATH_VERSION = "draft02";
- private static final String DEFAULT_BASE_PATH = "restconf";
- private final String basePath;
-
- protected BaseYangSwaggerGeneratorDraft02(final Optional<DOMSchemaService> schemaService) {
- super(schemaService);
- this.basePath = DEFAULT_BASE_PATH;
- }
-
- protected BaseYangSwaggerGeneratorDraft02(final Optional<DOMSchemaService> schemaService, final String basePath) {
- super(schemaService);
- this.basePath = basePath;
- }
-
- @Override
- protected String getPathVersion() {
- return PATH_VERSION;
- }
-
- @Override
- public String getResourcePath(final String resourceType, final String context) {
- return "/" + basePath + "/" + resourceType + context;
- }
-
- @Override
- public String getResourcePathPart(final String resourceType) {
- return resourceType;
- }
-
- @Override
- protected ListPathBuilder newListPathBuilder() {
- return key -> "/{" + key + "}";
- }
-
- @Override
- protected void appendPathKeyValue(final StringBuilder builder, final Object value) {
- builder.append(value).append('/');
- }
-}
*/
package org.opendaylight.netconf.sal.rest.doc.impl;
+import static java.util.Objects.requireNonNull;
+
import java.util.Optional;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
* @author Thomas Pantelis
*/
public abstract class BaseYangSwaggerGeneratorRFC8040 extends BaseYangSwaggerGenerator {
-
- private static final String DEFAULT_BASE_PATH = "rests";
- private static final String PATH_VERSION = "rfc8040";
private final String basePath;
protected BaseYangSwaggerGeneratorRFC8040(final Optional<DOMSchemaService> schemaService) {
- super(schemaService);
- this.basePath = DEFAULT_BASE_PATH;
+ this(schemaService, "rests");
}
protected BaseYangSwaggerGeneratorRFC8040(final Optional<DOMSchemaService> schemaService, final String basePath) {
super(schemaService);
- this.basePath = basePath;
+ this.basePath = requireNonNull(basePath);
}
@Override
protected String getPathVersion() {
- return PATH_VERSION;
+ return "rfc8040";
}
@Override
+++ /dev/null
-/*
- * Copyright (c) 2018 Inocybe Technologies and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.netconf.sal.rest.doc.impl;
-
-import java.util.Optional;
-import org.opendaylight.mdsal.dom.api.DOMMountPointService;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
-import org.opendaylight.netconf.sal.rest.doc.mountpoints.MountPointSwagger;
-
-/**
- * MountPoint generator implementation for bierman draft02.
- *
- * @author Thomas Pantelis
- */
-public class MountPointSwaggerGeneratorDraft02 extends BaseYangSwaggerGeneratorDraft02 implements AutoCloseable {
-
- private final MountPointSwagger mountPointSwagger;
-
- public MountPointSwaggerGeneratorDraft02(final DOMSchemaService schemaService,
- final DOMMountPointService mountService) {
- super(Optional.of(schemaService));
- mountPointSwagger = new MountPointSwagger(schemaService, mountService, this);
- mountPointSwagger.init();
- }
-
- public MountPointSwaggerGeneratorDraft02(final DOMSchemaService schemaService,
- final DOMMountPointService mountService, final String basePath) {
- super(Optional.of(schemaService), basePath);
- mountPointSwagger = new MountPointSwagger(schemaService, mountService, this);
- mountPointSwagger.init();
- }
-
- public MountPointSwagger getMountPointSwagger() {
- return mountPointSwagger;
- }
-
- @Override
- public void close() {
- mountPointSwagger.close();
- }
-}
import javax.ws.rs.HttpMethod;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
import org.opendaylight.netconf.sal.rest.doc.impl.DefinitionNames;
import org.opendaylight.netconf.sal.rest.doc.util.JsonUtil;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
public static ObjectNode buildGet(final DataSchemaNode node, final String moduleName,
final Optional<String> deviceName, final ArrayNode pathParams,
- final String defName, final boolean isConfig,
- final URIType uriType, final OAversion oaversion) {
+ final String defName, final boolean isConfig, final OAversion oaversion) {
final ObjectNode value = JsonNodeFactory.instance.objectNode();
value.put(DESCRIPTION_KEY, node.getDescription().orElse(""));
value.put(SUMMARY_KEY, buildSummaryValue(HttpMethod.GET, moduleName, deviceName,
value.set(TAGS_KEY, buildTagsValue(deviceName, moduleName));
final ArrayNode parameters = JsonUtil.copy(pathParams);
- addQueryParameters(parameters, isConfig, uriType, oaversion);
+ addQueryParameters(parameters, isConfig, oaversion);
value.set(PARAMETERS_KEY, parameters);
}
private static void addQueryParameters(final ArrayNode parameters, final boolean isConfig,
- final ApiDocServiceImpl.URIType uriType, final OAversion oaversion) {
- if (uriType.equals(ApiDocServiceImpl.URIType.RFC8040)) {
- final ObjectNode contentParam = JsonNodeFactory.instance.objectNode();
- final ArrayNode cases = JsonNodeFactory.instance.arrayNode();
- cases.add(NONCONFIG_QUERY_PARAM);
- if (isConfig) {
- cases.add(CONFIG_QUERY_PARAM);
- } else {
- contentParam.put(REQUIRED_KEY, true);
- }
- contentParam.put(IN_KEY, QUERY);
- contentParam.put(NAME_KEY, CONTENT);
+ final OAversion oaversion) {
+ final ObjectNode contentParam = JsonNodeFactory.instance.objectNode();
+ final ArrayNode cases = JsonNodeFactory.instance.arrayNode();
+ cases.add(NONCONFIG_QUERY_PARAM);
+ if (isConfig) {
+ cases.add(CONFIG_QUERY_PARAM);
+ } else {
+ contentParam.put(REQUIRED_KEY, true);
+ }
+ contentParam.put(IN_KEY, QUERY);
+ contentParam.put(NAME_KEY, CONTENT);
- final ObjectNode typeParent = getTypeParentNode(contentParam, oaversion);
- typeParent.put(TYPE_KEY, STRING);
- typeParent.set(ENUM_KEY, cases);
+ final ObjectNode typeParent = getTypeParentNode(contentParam, oaversion);
+ typeParent.put(TYPE_KEY, STRING);
+ typeParent.set(ENUM_KEY, cases);
- parameters.add(contentParam);
- }
+ parameters.add(contentParam);
}
public static ObjectNode buildPut(final String parentName, final String nodeName, final String discriminator,
import org.opendaylight.mdsal.dom.api.DOMMountPointService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
import org.opendaylight.netconf.sal.rest.doc.impl.BaseYangSwaggerGenerator;
import org.opendaylight.netconf.sal.rest.doc.impl.DefinitionNames;
import org.opendaylight.netconf.sal.rest.doc.swagger.CommonApiObject;
public Map<String, Long> getInstanceIdentifiers() {
final Map<String, Long> urlToId = new HashMap<>();
- synchronized (this.lock) {
- final SchemaContext context = this.globalSchema.getGlobalContext();
- for (final Entry<YangInstanceIdentifier, Long> entry : this.instanceIdToLongId.entrySet()) {
+ synchronized (lock) {
+ final SchemaContext context = globalSchema.getGlobalContext();
+ for (final Entry<YangInstanceIdentifier, Long> entry : instanceIdToLongId.entrySet()) {
final String modName = findModuleName(entry.getKey(), context);
urlToId.put(swaggerGenerator.generateUrlPrefixFromInstanceID(entry.getKey(), modName),
entry.getValue());
}
private String getYangMountUrl(final YangInstanceIdentifier key) {
- final String modName = findModuleName(key, this.globalSchema.getGlobalContext());
+ final String modName = findModuleName(key, globalSchema.getGlobalContext());
return swaggerGenerator.generateUrlPrefixFromInstanceID(key, modName) + "yang-ext:mount";
}
private YangInstanceIdentifier getInstanceId(final Long id) {
final YangInstanceIdentifier instanceId;
- synchronized (this.lock) {
- instanceId = this.longIdToInstanceId.get(id);
+ synchronized (lock) {
+ instanceId = longIdToInstanceId.get(id);
}
return instanceId;
}
}
checkState(mountService != null);
- return this.mountService.getMountPoint(id)
+ return mountService.getMountPoint(id)
.flatMap(mountPoint -> mountPoint.getService(DOMSchemaService.class))
.flatMap(svc -> Optional.ofNullable(svc.getGlobalContext()))
.orElse(null);
}
public CommonApiObject getMountPointApi(final UriInfo uriInfo, final Long id, final String module,
- final String revision, final URIType uriType, final OAversion oaversion) {
+ final String revision, final OAversion oaversion) {
final YangInstanceIdentifier iid = getInstanceId(id);
final EffectiveModelContext context = getSchemaContext(iid);
final String urlPrefix = getYangMountUrl(iid);
return generateDataStoreApiDoc(uriInfo, urlPrefix, deviceName);
}
final SwaggerObject swaggerObject = swaggerGenerator.getApiDeclaration(module, revision, uriInfo, context,
- urlPrefix, uriType, oaversion);
+ urlPrefix, oaversion);
return BaseYangSwaggerGenerator.getAppropriateDoc(swaggerObject, oaversion);
}
public CommonApiObject getMountPointApi(final UriInfo uriInfo, final Long id, final Optional<Integer> pageNum,
- final URIType uriType, final OAversion oaversion) {
+ final OAversion oaversion) {
final YangInstanceIdentifier iid = getInstanceId(id);
final EffectiveModelContext context = getSchemaContext(iid);
final String urlPrefix = getYangMountUrl(iid);
final SwaggerObject doc;
final SwaggerObject swaggerObject = swaggerGenerator.getAllModulesDoc(uriInfo, range, context,
- Optional.of(deviceName), urlPrefix, definitionNames, uriType, oaversion);
+ Optional.of(deviceName), urlPrefix, definitionNames, oaversion);
if (includeDataStore) {
doc = generateDataStoreApiDoc(uriInfo, urlPrefix, deviceName);
@Override
public void onMountPointCreated(final YangInstanceIdentifier path) {
- synchronized (this.lock) {
+ synchronized (lock) {
LOG.debug("Mount point {} created", path);
- final Long idLong = this.idKey.incrementAndGet();
- this.instanceIdToLongId.put(path, idLong);
- this.longIdToInstanceId.put(idLong, path);
+ final Long idLong = idKey.incrementAndGet();
+ instanceIdToLongId.put(path, idLong);
+ longIdToInstanceId.put(idLong, path);
}
}
@Override
public void onMountPointRemoved(final YangInstanceIdentifier path) {
- synchronized (this.lock) {
+ synchronized (lock) {
LOG.debug("Mount point {} removed", path);
- final Long id = this.instanceIdToLongId.remove(path);
- this.longIdToInstanceId.remove(id);
+ final Long id = instanceIdToLongId.remove(path);
+ longIdToInstanceId.remove(id);
}
}
}
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html
-->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
- xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
- odl:use-default-for-reference-types="true">
-
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService"/>
<reference id="domMountPointService" interface="org.opendaylight.mdsal.dom.api.DOMMountPointService"/>
<reference id="webServer" interface="org.opendaylight.aaa.web.WebServer"/>
<reference id="webContextSecurer" interface="org.opendaylight.aaa.web.WebContextSecurer"/>
<reference id="servletSupport" interface="org.opendaylight.aaa.web.servlet.ServletSupport" />
- <bean id="mountPointDraft02" class="org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorDraft02"
- destroy-method="close">
- <argument ref="schemaService" />
- <argument ref="domMountPointService" />
- </bean>
-
<bean id="mountPointRFC8040" class="org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorRFC8040"
destroy-method="close">
<argument ref="schemaService" />
<argument ref="domMountPointService" />
</bean>
- <bean id="apiDocDraftO2" class="org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorDraftO2">
- <argument ref="schemaService" />
- </bean>
-
<bean id="apiDocRFC8040" class="org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorRFC8040">
<argument ref="schemaService" />
</bean>
<bean id="allModulesDoc" class="org.opendaylight.netconf.sal.rest.doc.impl.AllModulesDocGenerator">
- <argument ref="apiDocDraftO2" />
<argument ref="apiDocRFC8040" />
</bean>
<bean id="apiDocService" class="org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl">
- <argument ref="mountPointDraft02" />
<argument ref="mountPointRFC8040" />
- <argument ref="apiDocDraftO2" />
<argument ref="apiDocRFC8040" />
<argument ref="allModulesDoc" />
</bean>
<argument ref="webContextSecurer"/>
<argument ref="servletSupport"/>
<argument ref="apiDocApplication"/>
- </bean>
+ </bean>
</blueprint>
+++ /dev/null
-/*
- * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.sal.rest.doc.impl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableList;
-import java.util.List;
-import org.junit.Test;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorDraftO2;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
-import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
-import org.opendaylight.yangtools.yang.common.Revision;
-
-public final class ApiDocGeneratorDraftO2Test extends AbstractApiDocTest {
- private static final String NAME = "toaster2";
- private static final String REVISION_DATE = "2009-11-20";
- private static final String NAME_2 = "toaster";
- private static final String REVISION_DATE_2 = "2009-11-20";
-
- private final ApiDocGeneratorDraftO2 generator = new ApiDocGeneratorDraftO2(SCHEMA_SERVICE);
-
- /**
- * Test that paths are generated according to the model.
- */
- @Test
- public void testPaths() {
- final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
- final var doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT, URIType.DRAFT02,
- ApiDocServiceImpl.OAversion.V2_0);
-
- assertEquals(List.of("/restconf/config",
- "/restconf/config/toaster2:toaster",
- "/restconf/config/toaster2:toaster/toasterSlot/{slotId}",
- "/restconf/config/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo",
- "/restconf/operational/toaster2:toaster",
- "/restconf/operational/toaster2:toaster/toasterSlot/{slotId}",
- "/restconf/operational/toaster2:toaster/toasterSlot/{slotId}/toaster-augmented:slotInfo",
- "/restconf/config/toaster2:lst",
- "/restconf/config/toaster2:lst/cont1",
- "/restconf/config/toaster2:lst/cont1/cont11",
- "/restconf/config/toaster2:lst/cont1/lst11",
- "/restconf/config/toaster2:lst/lst1/{key1}/{key2}",
- "/restconf/operational/toaster2:lst",
- "/restconf/operational/toaster2:lst/cont1",
- "/restconf/operational/toaster2:lst/cont1/cont11",
- "/restconf/operational/toaster2:lst/cont1/lst11",
- "/restconf/operational/toaster2:lst/lst1/{key1}/{key2}",
- "/restconf/operations/toaster2:make-toast",
- "/restconf/operations/toaster2:cancel-toast",
- "/restconf/operations/toaster2:restock-toaster"),
- ImmutableList.copyOf(doc.getPaths().fieldNames()));
- }
-
- /**
- * Test that generated configuration paths allow to use operations: get, put, delete and post.
- */
- @Test
- public void testConfigPaths() {
- final List<String> configPaths = List.of("/restconf/config/toaster2:lst",
- "/restconf/config/toaster2:lst/cont1",
- "/restconf/config/toaster2:lst/cont1/cont11",
- "/restconf/config/toaster2:lst/cont1/lst11",
- "/restconf/config/toaster2:lst/lst1/{key1}/{key2}");
-
- final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
- final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
-
- for (final String path : configPaths) {
- final JsonNode node = doc.getPaths().get(path);
- assertFalse(node.path("get").isMissingNode());
- assertFalse(node.path("put").isMissingNode());
- assertFalse(node.path("delete").isMissingNode());
- assertFalse(node.path("post").isMissingNode());
- }
- }
-
- /**
- * Test that generated document contains the following definitions.
- */
- @Test
- public void testDefinitions() {
- final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
- final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
-
- final ObjectNode definitions = doc.getDefinitions();
- assertNotNull(definitions);
-
- final JsonNode configLstTop = definitions.get("toaster2_config_lst_TOP");
- assertNotNull(configLstTop);
- DocGenTestHelper.containsReferences(configLstTop, "lst", "#/definitions/toaster2_config_lst");
-
- final JsonNode configLst = definitions.get("toaster2_config_lst");
- assertNotNull(configLst);
- DocGenTestHelper.containsReferences(configLst, "lst1", "#/definitions/toaster2_lst_config_lst1");
- DocGenTestHelper.containsReferences(configLst, "cont1", "#/definitions/toaster2_lst_config_cont1");
-
- final JsonNode configLst1Top = definitions.get("toaster2_lst_config_lst1_TOP");
- assertNotNull(configLst1Top);
- DocGenTestHelper.containsReferences(configLst1Top, "lst1", "#/definitions/toaster2_lst_config_lst1");
-
- final JsonNode configLst1 = definitions.get("toaster2_lst_config_lst1");
- assertNotNull(configLst1);
-
- final JsonNode configCont1Top = definitions.get("toaster2_lst_config_cont1_TOP");
- assertNotNull(configCont1Top);
- DocGenTestHelper.containsReferences(configCont1Top, "cont1", "#/definitions/toaster2_lst_config_cont1");
-
- final JsonNode configCont1 = definitions.get("toaster2_lst_config_cont1");
- assertNotNull(configCont1);
- DocGenTestHelper.containsReferences(configCont1, "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
- DocGenTestHelper.containsReferences(configCont1, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
-
- final JsonNode configCont11Top = definitions.get("toaster2_lst_cont1_config_cont11_TOP");
- assertNotNull(configCont11Top);
- DocGenTestHelper.containsReferences(configCont11Top,
- "cont11", "#/definitions/toaster2_lst_cont1_config_cont11");
-
- final JsonNode configCont11 = definitions.get("toaster2_lst_cont1_config_cont11");
- assertNotNull(configCont11);
-
- final JsonNode configLst11Top = definitions.get("toaster2_lst_cont1_config_lst11_TOP");
- assertNotNull(configLst11Top);
- DocGenTestHelper.containsReferences(configLst11Top, "lst11", "#/definitions/toaster2_lst_cont1_config_lst11");
-
- final JsonNode configLst11 = definitions.get("toaster2_lst_cont1_config_lst11");
- assertNotNull(configLst11);
- }
-
- /**
- * Test that generated document contains RPC definition for "make-toast" with correct input.
- */
- @Test
- public void testRPC() {
- final var module = CONTEXT.findModule(NAME_2, Revision.of(REVISION_DATE_2)).orElseThrow();
- final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.DRAFT02, ApiDocServiceImpl.OAversion.V2_0);
- assertNotNull(doc);
-
- final ObjectNode definitions = doc.getDefinitions();
- final JsonNode inputTop = definitions.get("toaster_make-toast_input_TOP");
- assertNotNull(inputTop);
- final String testString = "{\"input\":{\"$ref\":\"#/definitions/toaster_make-toast_input\"}}";
- assertEquals(testString, inputTop.get("properties").toString());
- final JsonNode input = definitions.get("toaster_make-toast_input");
- final JsonNode properties = input.get("properties");
- assertTrue(properties.has("toasterDoneness"));
- assertTrue(properties.has("toasterToastType"));
- }
-}
import org.junit.Test;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorRFC8040;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
import org.opendaylight.yangtools.yang.common.Revision;
public void testPaths() {
final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+ ApiDocServiceImpl.OAversion.V2_0);
assertEquals(List.of("/rests/data",
"/rests/data/toaster2:toaster",
final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+ ApiDocServiceImpl.OAversion.V2_0);
for (final String path : configPaths) {
final JsonNode node = doc.getPaths().get(path);
public void testDefinitions() {
final var module = CONTEXT.findModule(NAME, Revision.of(REVISION_DATE)).orElseThrow();
final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+ ApiDocServiceImpl.OAversion.V2_0);
final ObjectNode definitions = doc.getDefinitions();
assertNotNull(definitions);
public void testRPC() {
final var module = CONTEXT.findModule(NAME_2, Revision.of(REVISION_DATE_2)).orElseThrow();
final SwaggerObject doc = generator.getSwaggerDocSpec(module, "http", "localhost:8181", "/", "", CONTEXT,
- URIType.RFC8040, ApiDocServiceImpl.OAversion.V2_0);
+ ApiDocServiceImpl.OAversion.V2_0);
assertNotNull(doc);
final ObjectNode definitions = doc.getDefinitions();
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.netconf.sal.rest.doc.api.ApiDocService;
import org.opendaylight.netconf.sal.rest.doc.impl.AllModulesDocGenerator;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorDraftO2;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocGeneratorRFC8040;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl;
-import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorDraft02;
import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorRFC8040;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
final DOMMountPointService service = mock(DOMMountPointService.class);
when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint));
- final MountPointSwaggerGeneratorDraft02 mountPointDraft02 =
- new MountPointSwaggerGeneratorDraft02(SCHEMA_SERVICE, service);
final MountPointSwaggerGeneratorRFC8040 mountPointRFC8040 =
new MountPointSwaggerGeneratorRFC8040(SCHEMA_SERVICE, service);
- final ApiDocGeneratorDraftO2 apiDocGeneratorDraftO2 = new ApiDocGeneratorDraftO2(SCHEMA_SERVICE);
final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040 = new ApiDocGeneratorRFC8040(SCHEMA_SERVICE);
- mountPointDraft02.getMountPointSwagger().onMountPointCreated(INSTANCE_ID);
- final AllModulesDocGenerator allModulesDocGenerator = new AllModulesDocGenerator(apiDocGeneratorDraftO2,
- apiDocGeneratorRFC8040);
- apiDocService = new ApiDocServiceImpl(mountPointDraft02, mountPointRFC8040, apiDocGeneratorDraftO2,
- apiDocGeneratorRFC8040, allModulesDocGenerator);
+ mountPointRFC8040.getMountPointSwagger().onMountPointCreated(INSTANCE_ID);
+ final AllModulesDocGenerator allModulesDocGenerator = new AllModulesDocGenerator(apiDocGeneratorRFC8040);
+ apiDocService = new ApiDocServiceImpl(mountPointRFC8040, apiDocGeneratorRFC8040, allModulesDocGenerator);
}
@Test
// simulate the behavior of JacksonJaxbJsonProvider
final ObjectMapper mapper = new ObjectMapper();
final String result = mapper.writer().writeValueAsString(apiDocService.getListOfMounts(mockInfo).getEntity());
- assertEquals("[{\"instance\":\"/nodes/node/123/\",\"id\":1}]", result);
+ assertEquals("[{\"instance\":\"/nodes/node=123/\",\"id\":1}]", result);
}
}
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import org.opendaylight.mdsal.dom.api.DOMMountPointService;
import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.OAversion;
-import org.opendaylight.netconf.sal.rest.doc.impl.ApiDocServiceImpl.URIType;
-import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorDraft02;
+import org.opendaylight.netconf.sal.rest.doc.impl.MountPointSwaggerGeneratorRFC8040;
import org.opendaylight.netconf.sal.rest.doc.mountpoints.MountPointSwagger;
import org.opendaylight.netconf.sal.rest.doc.swagger.SwaggerObject;
import org.opendaylight.yangtools.yang.common.QName;
.node(QName.create("", "nodes"))
.node(QName.create("", "node"))
.nodeWithKey(QName.create("", "node"), QName.create("", "id"), "123").build();
- private static final String INSTANCE_URL = "/nodes/node/123/";
+ private static final String INSTANCE_URL = "/nodes/node=123/";
private MountPointSwagger swagger;
final DOMMountPointService service = mock(DOMMountPointService.class);
when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint));
- swagger = new MountPointSwaggerGeneratorDraft02(SCHEMA_SERVICE, service).getMountPointSwagger();
+ swagger = new MountPointSwaggerGeneratorRFC8040(SCHEMA_SERVICE, service).getMountPointSwagger();
}
@Test()
final UriInfo mockInfo = DocGenTestHelper.createMockUriInfo(HTTP_URL);
swagger.onMountPointCreated(INSTANCE_ID); // add this ID into the list of mount points
- final SwaggerObject mountPointApi = (SwaggerObject) swagger.getMountPointApi(mockInfo, 1L, "Datastores",
- "-", URIType.DRAFT02, OAversion.V2_0);
+ final SwaggerObject mountPointApi = (SwaggerObject) swagger.getMountPointApi(mockInfo, 1L, "Datastores", "-",
+ OAversion.V2_0);
assertNotNull("failed to find Datastore API", mountPointApi);
final ObjectNode pathsObject = mountPointApi.getPaths();
assertNotNull(pathsObject);
- assertEquals("Unexpected api list size", 3, pathsObject.size());
+ assertEquals("Unexpected api list size", 2, pathsObject.size());
final Set<String> actualUrls = new TreeSet<>();
assertNotNull("expected non-null desc on " + path, getOperation.get("description"));
}
- final Set<String> expectedUrls = new TreeSet<>(List.of(
- "/restconf/config" + INSTANCE_URL + "yang-ext:mount",
- "/restconf/operational" + INSTANCE_URL + "yang-ext:mount",
- "/restconf/operations" + INSTANCE_URL + "yang-ext:mount"));
- assertEquals(expectedUrls, actualUrls);
+ assertEquals(Set.of("/rests/data" + INSTANCE_URL + "yang-ext:mount",
+ "/rests/operations" + INSTANCE_URL + "yang-ext:mount"), actualUrls);
}
}