Search in sources :

Example 1 with SwaggerModel

use of org.motechproject.mds.docs.swagger.model.SwaggerModel in project motech by motech.

the class SwaggerGenerator method generateDocumentation.

@Override
public void generateDocumentation(Writer writer, String serverPrefix, Locale locale) {
    LOGGER.info("Generating REST documentation");
    SwaggerModel swaggerModel = initialSwaggerModel(serverPrefix, locale);
    swaggerModel.addDefinition("Metadata", buildMetadataDefinition());
    for (Entity entity : allEntities.retrieveAll()) {
        addCrudEndpoints(swaggerModel, entity, locale);
        addLookupEndpoints(swaggerModel, entity, locale);
        addDefinitions(swaggerModel, entity);
    }
    if (swaggerModel.getDefinitions().size() == 1) {
        swaggerModel.getInfo().setDescription(String.format("%s \n\n**%s [%s](%s)**", msg(locale, API_DESCRIPTION_KEY), msg(locale, NO_ENTITY_IS_EXPOSED_KEY), msg(locale, REST_API_DOCS_KEY), property(REST_API_DOCS_URL_KEY)));
    }
    Gson gson = buildGson();
    gson.toJson(swaggerModel, writer);
}
Also used : Entity(org.motechproject.mds.domain.Entity) SwaggerModel(org.motechproject.mds.docs.swagger.model.SwaggerModel) Gson(com.google.gson.Gson)

Example 2 with SwaggerModel

use of org.motechproject.mds.docs.swagger.model.SwaggerModel in project motech by motech.

the class SwaggerGeneratorTest method shouldGenerateJson.

@Test
public void shouldGenerateJson() {
    StringWriter stringWriter = new StringWriter();
    swaggerGenerator.generateDocumentation(stringWriter, "/motech-platform-server", LOCALE);
    Gson gson = new GsonBuilder().registerTypeAdapter(Response.class, new ResponseAdapter()).registerTypeAdapter(ParameterType.class, new ParameterTypeAdapter()).create();
    SwaggerModel swaggerModel = gson.fromJson(stringWriter.toString(), SwaggerModel.class);
    verifyCommonModel(swaggerModel);
    verifyDefinitions(swaggerModel);
    verifyPaths(swaggerModel);
}
Also used : ParameterTypeAdapter(org.motechproject.mds.docs.swagger.gson.ParameterTypeAdapter) ParameterType(org.motechproject.mds.docs.swagger.model.ParameterType) SwaggerModel(org.motechproject.mds.docs.swagger.model.SwaggerModel) StringWriter(java.io.StringWriter) GsonBuilder(com.google.gson.GsonBuilder) Gson(com.google.gson.Gson) Test(org.junit.Test)

Example 3 with SwaggerModel

use of org.motechproject.mds.docs.swagger.model.SwaggerModel in project motech by motech.

the class SwaggerGenerator method initialSwaggerModel.

private SwaggerModel initialSwaggerModel(String serverPrefix, Locale locale) {
    SwaggerModel swaggerModel = new SwaggerModel();
    swaggerModel.setSwagger(V_2);
    swaggerModel.setBasePath(serverPrefix + property(BASE_PATH_KEY));
    swaggerModel.setInfo(mdsApiInfo(locale));
    swaggerModel.setSchemes(Arrays.asList(HTTP));
    swaggerModel.setProduces(json());
    swaggerModel.setConsumes(json());
    return swaggerModel;
}
Also used : SwaggerModel(org.motechproject.mds.docs.swagger.model.SwaggerModel)

Aggregations

SwaggerModel (org.motechproject.mds.docs.swagger.model.SwaggerModel)3 Gson (com.google.gson.Gson)2 GsonBuilder (com.google.gson.GsonBuilder)1 StringWriter (java.io.StringWriter)1 Test (org.junit.Test)1 ParameterTypeAdapter (org.motechproject.mds.docs.swagger.gson.ParameterTypeAdapter)1 ParameterType (org.motechproject.mds.docs.swagger.model.ParameterType)1 Entity (org.motechproject.mds.domain.Entity)1