Setup Micro-Service for WF Designer SDC Adapter 37/30137/1
authorYuanHu <yuan.hu1@zte.com.cn>
Fri, 2 Feb 2018 08:51:31 +0000 (16:51 +0800)
committerYuanHu <yuan.hu1@zte.com.cn>
Fri, 2 Feb 2018 08:51:31 +0000 (16:51 +0800)
Use the dropwizard application develop framework to setup the mirco-service for the  WF Designer SDC Adapter

Issue-ID: SDC-981

Change-Id: Icaf39c08d7bf537c65c15fb8a4f3f0668eb6e0da
Signed-off-by: YuanHu <yuan.hu1@zte.com.cn>
sdc-workflow-designer-server/pom.xml
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerApp.java [new file with mode: 0644]
sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfiguration.java [new file with mode: 0644]

index beceff7..9a4591e 100644 (file)
     <parent>
         <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
         <artifactId>sdc-workflow-designer</artifactId>
-        <version>1.0.0</version>
+        <version>1.1.0-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.onap.sdc.sdc-workflow-designer</groupId>
     <artifactId>sdc-workflow-designer-server</artifactId>
     <name>sdc-workflow-designer-server</name>
-    <version>1.0.0</version>
     <packaging>jar</packaging>
+    
     <properties>
-        <slf4j.version>1.7.25</slf4j.version>
         <jackson.version>2.9.1</jackson.version>
         <velocity.version>1.6.2</velocity.version>
         <junit.version>4.10</junit.version>
-        <logback.version>1.1.3</logback.version>
-        <logback-classic.version>1.1.3</logback-classic.version>
+        <dropwizard.version>1.2.2</dropwizard.version>
+        <swagger.version>1.5.3</swagger.version>
+        <jersey.version>2.16</jersey.version>
+        <commons-io.version>2.4</commons-io.version>
+        <lombok.version>1.16.4</lombok.version>
     </properties>
-       
+    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <configuration>
+                    <createDependencyReducedPom>true</createDependencyReducedPom>
+                    <filters>
+                        <filter>
+                            <artifact>*:*</artifact>
+                            <excludes>
+                                <exclude>META-INF/*.SF</exclude>
+                                <exclude>META-INF/*.DSA</exclude>
+                                <exclude>META-INF/*.RSA</exclude>
+                            </excludes>
+                        </filter>
+                    </filters>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <transformers>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.onap.sdc.workflowdesigner.WorkflowDesignerApp</mainClass>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-dependencies</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>io.dropwizard</groupId>
+                                    <artifactId>dropwizard-core</artifactId>
+                                    <version>${dropwizard.version}</version>
+                                    <overWrite>true</overWrite>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            
+        </plugins>
+    </build>
+
     <dependencies>
+        <!-- dropwizard -->
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-core</artifactId>
+            <version>${dropwizard.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-assets</artifactId>
+            <version>${dropwizard.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.dropwizard</groupId>
+            <artifactId>dropwizard-migrations</artifactId>
+            <version>${dropwizard.version}</version>
+        </dependency>
+        
+        <!-- swagger -->
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-jersey2-jaxrs</artifactId>
+            <version>${swagger.version}</version>
+        </dependency>
+        
+        <!-- jersey -->
+        <dependency>
+            <groupId>org.glassfish.jersey.core</groupId>
+            <artifactId>jersey-server</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j.version}</version>
+            <groupId>org.glassfish.jersey.media</groupId>
+            <artifactId>jersey-media-multipart</artifactId>
+            <version>${jersey.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.containers</groupId>
+            <artifactId>jersey-container-servlet-core</artifactId>
+            <version>${jersey.version}</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons-io.version}</version>
+        </dependency>
+        
+        <!-- lombok -->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+        </dependency>
+        
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
             <artifactId>jackson-databind</artifactId>
             <version>${jackson.version}</version>
         </dependency>
+        
         <dependency>
             <groupId>org.apache.velocity</groupId>
             <artifactId>velocity</artifactId>
             <version>${velocity.version}</version>
         </dependency>
+        
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>${junit.version}</version>
         </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-core</artifactId>
-            <version>${logback.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <version>${logback-classic.version}</version>
-        </dependency>
     </dependencies>
-       
+    
 </project>
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerApp.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerApp.java
new file mode 100644 (file)
index 0000000..002da23
--- /dev/null
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+
+package org.onap.sdc.workflowdesigner;
+
+import org.glassfish.jersey.media.multipart.MultiPartFeature;
+// import org.onap.sdc.workflowdesigner.resources.ExtendActivityResource;
+// import org.onap.sdc.workflowdesigner.resources.WorkflowModelerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import io.dropwizard.Application;
+import io.dropwizard.assets.AssetsBundle;
+import io.dropwizard.server.SimpleServerFactory;
+import io.dropwizard.setup.Bootstrap;
+import io.dropwizard.setup.Environment;
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.jaxrs.listing.ApiListingResource;
+
+public class WorkflowDesignerApp extends Application<WorkflowDesignerConfiguration> {
+
+  private static final Logger LOGGER = LoggerFactory.getLogger(WorkflowDesignerApp.class);
+
+  public static void main(String[] args) throws Exception {
+    new WorkflowDesignerApp().run(args);
+  }
+
+  @Override
+  public String getName() {
+    return "Workflow Designer";
+  }
+
+  @Override
+  public void initialize(Bootstrap<WorkflowDesignerConfiguration> bootstrap) {
+    bootstrap.addBundle(new AssetsBundle("/api-doc", "/api-doc", "index.html", "api-doc"));
+  }
+
+  @Override
+  public void run(WorkflowDesignerConfiguration configuration, Environment environment) {
+    LOGGER.info("Start to initialize Workflow Designer.");
+
+    // environment.jersey().register(new WorkflowModelerResource());
+    // environment.jersey().register(new ExtendActivityResource());
+
+    // register rest interface
+    environment.jersey().packages("org.onap.sdc.workflowdesigner.resources");
+    // upload file by inputstream need to register MultiPartFeature
+    environment.jersey().register(MultiPartFeature.class);
+
+    initSwaggerConfig(environment, configuration);
+
+    LOGGER.info("Initialize catalogue finished.");
+  }
+
+  /**
+   * initialize swagger configuration.
+   * 
+   * @param environment environment information
+   * @param configuration catalogue configuration
+   */
+  private void initSwaggerConfig(Environment environment,
+      WorkflowDesignerConfiguration configuration) {
+    environment.jersey().register(new ApiListingResource());
+    environment.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
+
+    BeanConfig config = new BeanConfig();
+    config.setTitle("Workflow Designer rest API");
+    config.setVersion("1.0.0");
+    config.setResourcePackage("org.onap.sdc.workflowdesigner.resources");
+
+    // set rest api basepath in swagger
+    SimpleServerFactory simpleServerFactory =
+        (SimpleServerFactory) configuration.getServerFactory();
+    String basePath = simpleServerFactory.getApplicationContextPath();
+    String rootPath = simpleServerFactory.getJerseyRootPath().get();
+    rootPath = rootPath.substring(0, rootPath.indexOf("/*"));
+    basePath = basePath.equals("/") ? rootPath
+        : (new StringBuilder()).append(basePath).append(rootPath).toString();
+    config.setBasePath(basePath);
+    config.setScan(true);
+  }
+
+}
diff --git a/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfiguration.java b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfiguration.java
new file mode 100644 (file)
index 0000000..16f807e
--- /dev/null
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the Apache License, Version 2.0
+ * and the Eclipse Public License v1.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ *     ZTE - initial API and implementation and/or initial documentation
+ */
+
+package org.onap.sdc.workflowdesigner;
+
+import org.hibernate.validator.constraints.NotEmpty;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import io.dropwizard.Configuration;
+
+public class WorkflowDesignerConfiguration extends Configuration {
+  @NotEmpty
+  private String template;
+
+  @NotEmpty
+  private String defaultName = "Workflow Designer";
+
+  @JsonProperty
+  public String getTemplate() {
+    return template;
+  }
+
+  @JsonProperty
+  public void setTemplate(String template) {
+    this.template = template;
+  }
+
+  @JsonProperty
+  public String getDefaultName() {
+    return defaultName;
+  }
+
+  @JsonProperty
+  public void setDefaultName(String name) {
+    this.defaultName = name;
+  }
+
+}