Add swagger.json file
[vfc/nfvo/wfengine.git] / wfenginemgrservice / src / main / java / org / onap / workflow / WorkflowApp.java
index d5fcb59..ff62f20 100644 (file)
@@ -18,27 +18,64 @@ package org.onap.workflow;
 
 import org.glassfish.jersey.media.multipart.MultiPartFeature;
 import org.onap.workflow.common.Config;
-
 import io.dropwizard.Application;
 import io.dropwizard.setup.Environment;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.dropwizard.assets.AssetsBundle;
+import io.dropwizard.server.SimpleServerFactory;
+import io.dropwizard.setup.Bootstrap;
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.jaxrs.listing.ApiListingResource;
 
 public class WorkflowApp extends Application<WorkflowAppConfig> {
 
-       public static void main(String[] args) throws Exception {
-               new WorkflowApp().run(args);
-       }
-
-       public String getName() {
-               return " Workflow APP ";
-       }
-
-       @Override
-       public void run(WorkflowAppConfig configuration, Environment environment) throws Exception {
-               
-           environment.jersey().register(MultiPartFeature.class);
-           
-           environment.jersey().packages("org.onap.workflow.resources");
-           
-           Config.setWorkflowAppConfig(configuration);
-       }
+  public static void main(String[] args) throws Exception {
+    new WorkflowApp().run(args);
+  }
+
+  public String getName() {
+    return " Workflow APP ";
+  }
+
+  @Override
+  public void initialize(Bootstrap<WorkflowAppConfig> bootstrap) {
+    bootstrap.addBundle(new AssetsBundle("/api-doc", "/api-doc", "index.html", "api-doc"));
+  }
+
+  @Override
+  public void run(WorkflowAppConfig configuration, Environment environment) throws Exception {
+    environment.jersey().register(MultiPartFeature.class);
+    environment.jersey().packages("org.onap.workflow.resources");
+    Config.setWorkflowAppConfig(configuration);
+    initSwaggerConfig(environment, configuration);
+  }
+
+  /**
+   * initialize swagger configuration.
+   * 
+   * @param environment environment information
+   * @param configuration catalogue configuration
+   */
+  private void initSwaggerConfig(Environment environment, WorkflowAppConfig configuration) {
+    environment.jersey().register(new ApiListingResource());
+    environment.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
+
+    BeanConfig config = new BeanConfig();
+    config.setTitle("ONAP WorkFlow rest API");
+    config.setVersion("1.0.0");
+    config.setResourcePackage("org.onap.workflow.resources");
+    // set rest api basepath in swagger
+    SimpleServerFactory simpleServerFactory =
+        (SimpleServerFactory) configuration.getServerFactory();
+    String basePath = simpleServerFactory.getApplicationContextPath();
+    String rootPath = simpleServerFactory.getJerseyRootPath();
+    rootPath = rootPath.substring(0, rootPath.indexOf("/*"));
+    basePath =
+        basePath.equals("/") ? rootPath : (new StringBuilder()).append(basePath).append(rootPath)
+            .toString();
+    config.setBasePath(basePath);
+    config.setScan(true);
+  }
 }
+