documentation is now generated during build time and swagger is not needed for runtime anymore

This commit is contained in:
Athou
2013-08-01 13:35:04 +02:00
parent 0ff1d58dfb
commit 8926f9784d
29 changed files with 128 additions and 430 deletions

View File

@@ -0,0 +1,57 @@
import java.io.File;
import org.apache.commons.io.FileUtils;
import com.commafeed.frontend.model.Entries;
import com.commafeed.frontend.model.request.MarkRequest;
import com.commafeed.frontend.rest.RESTApplication;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.core.Documentation;
import com.wordnik.swagger.core.DocumentationEndPoint;
import com.wordnik.swagger.core.SwaggerSpec;
import com.wordnik.swagger.core.util.TypeUtil;
import com.wordnik.swagger.jaxrs.HelpApi;
import com.wordnik.swagger.jaxrs.JaxrsApiReader;
public class SwaggerStaticGenerator {
public void generate(String directory) throws Exception {
JaxrsApiReader.setFormatString("");
TypeUtil.addAllowablePackage(Entries.class.getPackage().getName());
TypeUtil.addAllowablePackage(MarkRequest.class.getPackage().getName());
RESTApplication app = new RESTApplication();
String apiVersion = "1.0";
String swaggerVersion = SwaggerSpec.version();
String basePath = "../rest";
Documentation doc = new Documentation();
for (Class<?> resource : app.getClasses()) {
Api api = resource.getAnnotation(Api.class);
if (api != null) {
String apiPath = api.value();
String apiListingPath = api.value();
Documentation apiDoc = new HelpApi(null).filterDocs(
JaxrsApiReader.read(resource, apiVersion, swaggerVersion, basePath, apiPath), null, null, apiListingPath, apiPath);
apiDoc.setSwaggerVersion(swaggerVersion);
apiDoc.setApiVersion(apiVersion);
write(apiDoc, directory);
doc.addApi(new DocumentationEndPoint(api.value(), api.description()));
}
}
doc.setSwaggerVersion(swaggerVersion);
doc.setApiVersion(apiVersion);
write(doc, directory);
}
private static void write(Documentation doc, String directory) throws Exception {
FileUtils.writeStringToFile(new File(directory, doc.getResourcePath() == null ? "resources" : doc.getResourcePath()), new ObjectMapper().writeValueAsString(doc));
}
}