X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Fsal-rest-docgen%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Frest%2Fdoc%2Fimpl%2FApiDocServiceImpl.java;h=c9726b0e10b1840a20dc74de5b14e1565f65deb4;hb=208f1cbfee1608e0343d09f351082968b9daa9cc;hp=f5002e03714f36dce76c32778202972b3a2965b8;hpb=e7abbe8b97f494030992ea8f9cc81a982695852b;p=netconf.git diff --git a/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocServiceImpl.java b/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocServiceImpl.java index f5002e0371..c9726b0e10 100644 --- a/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocServiceImpl.java +++ b/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ApiDocServiceImpl.java @@ -7,17 +7,17 @@ */ package org.opendaylight.netconf.sal.rest.doc.impl; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; -import java.io.ByteArrayOutputStream; -import java.io.OutputStreamWriter; -import java.nio.charset.StandardCharsets; -import java.util.Map.Entry; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; + import org.opendaylight.netconf.sal.rest.doc.api.ApiDocService; import org.opendaylight.netconf.sal.rest.doc.mountpoints.MountPointSwagger; import org.opendaylight.netconf.sal.rest.doc.swagger.ApiDeclaration; +import org.opendaylight.netconf.sal.rest.doc.swagger.MountPointInstance; import org.opendaylight.netconf.sal.rest.doc.swagger.ResourceList; /** @@ -35,10 +35,20 @@ import org.opendaylight.netconf.sal.rest.doc.swagger.ResourceList; */ public class ApiDocServiceImpl implements ApiDocService { - private static final ApiDocService INSTANCE = new ApiDocServiceImpl(); + private final MountPointSwagger mountPointSwaggerDraft02; + private final MountPointSwagger mountPointSwaggerRFC8040; + private final ApiDocGeneratorDraftO2 apiDocGeneratorDraft02; + private final ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040; - public static ApiDocService getInstance() { - return INSTANCE; + public ApiDocServiceImpl(MountPointSwaggerGeneratorDraft02 mountPointSwaggerGeneratorDraft02, + MountPointSwaggerGeneratorRFC8040 mountPointSwaggerGeneratorRFC8040, + ApiDocGeneratorDraftO2 apiDocGeneratorDraft02, ApiDocGeneratorRFC8040 apiDocGeneratorRFC8040) { + this.mountPointSwaggerDraft02 = + Objects.requireNonNull(mountPointSwaggerGeneratorDraft02).getMountPointSwagger(); + this.mountPointSwaggerRFC8040 = + Objects.requireNonNull(mountPointSwaggerGeneratorRFC8040).getMountPointSwagger(); + this.apiDocGeneratorDraft02 = Objects.requireNonNull(apiDocGeneratorDraft02); + this.apiDocGeneratorRFC8040 = Objects.requireNonNull(apiDocGeneratorRFC8040); } /** @@ -48,13 +58,12 @@ public class ApiDocServiceImpl implements ApiDocService { */ @Override public synchronized Response getRootDoc(final UriInfo uriInfo) { - final ApiDocGenerator generator = ApiDocGenerator.getInstance(); + final ResourceList rootDoc; if (isNew(uriInfo)) { - generator.setDraft(true); + rootDoc = apiDocGeneratorRFC8040.getResourceListing(uriInfo); } else { - generator.setDraft(false); + rootDoc = apiDocGeneratorDraft02.getResourceListing(uriInfo); } - final ResourceList rootDoc = generator.getResourceListing(uriInfo); return Response.ok(rootDoc).build(); } @@ -64,13 +73,13 @@ public class ApiDocServiceImpl implements ApiDocService { */ @Override public synchronized Response getDocByModule(final String module, final String revision, final UriInfo uriInfo) { - final ApiDocGenerator generator = ApiDocGenerator.getInstance(); + final ApiDeclaration doc; if (isNew(uriInfo)) { - generator.setDraft(true); + doc = apiDocGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo); } else { - generator.setDraft(false); + doc = apiDocGeneratorDraft02.getApiDeclaration(module, revision, uriInfo); } - final ApiDeclaration doc = generator.getApiDeclaration(module, revision, uriInfo); + return Response.ok(doc).build(); } @@ -82,34 +91,27 @@ public class ApiDocServiceImpl implements ApiDocService { return Response.seeOther(uriInfo.getBaseUriBuilder().path("../explorer/index.html").build()).build(); } - @SuppressWarnings("checkstyle:IllegalCatch") @Override public synchronized Response getListOfMounts(final UriInfo uriInfo) { - final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try (OutputStreamWriter streamWriter = new OutputStreamWriter(baos, StandardCharsets.UTF_8)) { - JsonGenerator writer = new JsonFactory().createGenerator(streamWriter); - writer.writeStartArray(); - for (final Entry entry : MountPointSwagger.getInstance().getInstanceIdentifiers() - .entrySet()) { - writer.writeStartObject(); - writer.writeObjectField("instance", entry.getKey()); - writer.writeObjectField("id", entry.getValue()); - writer.writeEndObject(); - } - writer.writeEndArray(); - } catch (final Exception e) { - return Response.status(500).entity(e.getMessage()).build(); + final MountPointSwagger mountPointSwagger; + if (isNew(uriInfo)) { + mountPointSwagger = mountPointSwaggerRFC8040; + } else { + mountPointSwagger = mountPointSwaggerDraft02; } - return Response.status(200).entity(baos.toString()).build(); + final List entity = mountPointSwagger + .getInstanceIdentifiers().entrySet().stream() + .map(MountPointInstance::new).collect(Collectors.toList()); + return Response.ok(entity).build(); } @Override public synchronized Response getMountRootDoc(final String instanceNum, final UriInfo uriInfo) { final ResourceList resourceList; if (isNew(uriInfo)) { - resourceList = MountPointSwagger.getInstanceDraft18().getResourceList(uriInfo, Long.parseLong(instanceNum)); + resourceList = mountPointSwaggerRFC8040.getResourceList(uriInfo, Long.parseLong(instanceNum)); } else { - resourceList = MountPointSwagger.getInstance().getResourceList(uriInfo, Long.parseLong(instanceNum)); + resourceList = mountPointSwaggerDraft02.getResourceList(uriInfo, Long.parseLong(instanceNum)); } return Response.ok(resourceList).build(); } @@ -119,11 +121,9 @@ public class ApiDocServiceImpl implements ApiDocService { final String revision, final UriInfo uriInfo) { final ApiDeclaration api; if (isNew(uriInfo)) { - api = MountPointSwagger.getInstanceDraft18().getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, - revision); + api = mountPointSwaggerRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, revision); } else { - api = MountPointSwagger.getInstance().getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, - revision); + api = mountPointSwaggerDraft02.getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, revision); } return Response.ok(api).build(); }