updated swagger definitions for opts

This commit is contained in:
Tony Tam 2015-11-05 18:19:21 -08:00
parent b3d29bfb56
commit cdd20ac408
3 changed files with 56 additions and 30 deletions

View File

@ -26,35 +26,36 @@ public class DynamicSwaggerConfig extends BeanConfig {
Parameter framework = post.getParameters().get(0);
if (framework instanceof PathParameter) {
PathParameter param = (PathParameter) framework;
StringBuilder b = new StringBuilder();
for (String client : clients) {
if (b.toString().length() > 0) {
b.append(", ");
}
b.append(client);
}
param.setDescription("available clients: " + b.toString());
param.setEnum(clients);
}
Operation get = clientPath.getGet();
if(get != null) {
framework = get.getParameters().get(0);
if (framework instanceof PathParameter) {
PathParameter param = (PathParameter) framework;
param.setEnum(clients);
}
}
}
Path serverPath = swagger.getPaths().get("/gen/servers/{framework}");
// update the path description based on what servers are available via SPI
if (serverPath != null) {
Operation post = serverPath.getPost();
Parameter framework = post.getParameters().get(0);
if (framework instanceof PathParameter) {
PathParameter param = (PathParameter) framework;
StringBuilder b = new StringBuilder();
for (String server : servers) {
if (b.toString().length() > 0) {
b.append(", ");
}
b.append(server);
}
param.setDescription("available servers: " + b.toString());
param.setEnum(servers);
}
Operation get = serverPath.getGet();
if(get != null) {
framework = get.getParameters().get(0);
if (framework instanceof PathParameter) {
PathParameter param = (PathParameter) framework;
param.setEnum(servers);
}
}
}
return swagger.info(getInfo())

View File

@ -109,7 +109,7 @@ public class Generator {
codegenConfig.setOutputDir(outputFolder);
Json.prettyPrint(clientOpts);
LOGGER.debug(Json.pretty(clientOpts));
clientOptInput.setConfig(codegenConfig);
@ -124,6 +124,20 @@ public class Generator {
} else {
throw new BadRequestException(400, "A target generation was attempted, but no files were created!");
}
for(File file: files) {
try {
file.delete();
}
catch(Exception e) {
LOGGER.error("unable to delete file " + file.getAbsolutePath());
}
}
try {
new File(outputFolder).delete();
}
catch (Exception e) {
LOGGER.error("unable to delete output folder " + outputFolder);
}
} catch (Exception e) {
throw new BadRequestException(500, "Unable to build target: " + e.getMessage());
}

View File

@ -12,16 +12,14 @@ import io.swagger.generator.model.Generated;
import io.swagger.generator.model.GeneratorInput;
import io.swagger.generator.model.ResponseCode;
import io.swagger.generator.online.Generator;
import org.apache.commons.io.FileUtils;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.*;
@Path("/gen")
@ -35,6 +33,9 @@ public class SwaggerResource {
@Path("/download/{fileId}")
@Produces({MediaType.APPLICATION_OCTET_STREAM})
@ApiOperation(value = "Downloads a pre-generated file",
notes = "A valid `fileId` is generated by the `/clients/{language}` or `/servers/{language}` POST " +
"operations. The fileId code can be used just once, after which a new `fileId` will need to " +
"be requested.",
response = String.class,
tags = {"clients", "servers"})
public Response downloadFile(@PathParam("fileId") String fileId) throws Exception {
@ -42,7 +43,15 @@ public class SwaggerResource {
System.out.println("looking for fileId " + fileId);
System.out.println("got filename " + g.getFilename());
if (g.getFilename() != null) {
byte[] bytes = org.apache.commons.io.FileUtils.readFileToByteArray(new java.io.File(g.getFilename()));
File file = new java.io.File(g.getFilename());
byte[] bytes = org.apache.commons.io.FileUtils.readFileToByteArray(file);
try {
FileUtils.deleteDirectory(file.getParentFile());
}
catch (Exception e) {
System.out.println("failed to delete file " + file.getAbsolutePath());
}
return Response.ok(bytes, "application/zip")
.header("Content-Disposition", "attachment; filename=\"" + g.getFriendlyName() + "-generated.zip\"")
@ -57,7 +66,8 @@ public class SwaggerResource {
@POST
@Path("/clients/{language}")
@ApiOperation(
value = "Generates a client library based on the config",
value = "Generates a client library",
notes = "Accepts a `GeneratorInput` options map for spec location and generation options",
response = ResponseCode.class,
tags = "clients")
public Response generateClient(
@ -78,7 +88,7 @@ public class SwaggerResource {
String host = scheme + "://" + request.getServerName() + port;
if (filename != null) {
String code = String.valueOf(System.currentTimeMillis());
String code = String.valueOf(UUID.randomUUID().toString());
Generated g = new Generated();
g.setFilename(filename);
g.setFriendlyName(language + "-client");
@ -114,7 +124,7 @@ public class SwaggerResource {
}
@GET
@Path("/server/{framework}")
@Path("/servers/{framework}")
@Produces({MediaType.APPLICATION_JSON})
@ApiOperation(
value = "Returns options for a server framework",
@ -161,7 +171,8 @@ public class SwaggerResource {
@POST
@Path("/servers/{framework}")
@ApiOperation(value = "Generates a server library for the supplied server framework",
@ApiOperation(value = "Generates a server library",
notes = "Accepts a `GeneratorInput` options map for spec location and generation options.",
response = ResponseCode.class,
tags = "servers")
public Response generateServerForLanguage(
@ -178,7 +189,7 @@ public class SwaggerResource {
String host = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
if (filename != null) {
String code = String.valueOf(System.currentTimeMillis());
String code = String.valueOf(UUID.randomUUID().toString());
Generated g = new Generated();
g.setFilename(filename);
g.setFriendlyName(framework + "-server");