diff options
author | YuanHu <yuan.hu1@zte.com.cn> | 2018-02-02 16:51:31 +0800 |
---|---|---|
committer | YuanHu <yuan.hu1@zte.com.cn> | 2018-02-02 16:51:31 +0800 |
commit | cbf2a87d94e7fadfd82ba2c8c42568588dd3a56c (patch) | |
tree | 4e905b30f312f8b1e59715597fc3e4f60fb37939 /sdc-workflow-designer-server | |
parent | a5a126ce50c1a353084611bd3d85228442ede2e5 (diff) |
Setup Micro-Service for WF Designer SDC Adapter
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>
Diffstat (limited to 'sdc-workflow-designer-server')
3 files changed, 268 insertions, 20 deletions
diff --git a/sdc-workflow-designer-server/pom.xml b/sdc-workflow-designer-server/pom.xml index beceff7a..9a4591e7 100644 --- a/sdc-workflow-designer-server/pom.xml +++ b/sdc-workflow-designer-server/pom.xml @@ -16,31 +16,145 @@ <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> <version>${jackson.version}</version> @@ -50,26 +164,18 @@ <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 index 00000000..002da23b --- /dev/null +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerApp.java @@ -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 index 00000000..16f807ea --- /dev/null +++ b/sdc-workflow-designer-server/src/main/java/org/onap/sdc/workflowdesigner/WorkflowDesignerConfiguration.java @@ -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; + } + +} |