This is an automated email from the ASF dual-hosted git repository. ningjiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-toolkit.git
commit 30e4f0014c3a9b5360188224d88ef7ca73a478c3 Author: kakulisen <18813972...@163.com> AuthorDate: Mon Jun 3 17:35:02 2019 +0800 Support generating SpringBoot consumer code Signed-off-by: kakulisen <18813972...@163.com> --- .../toolkit/codegen/ServiceCombCodegen.java | 10 +- .../consumer/springboot/Application.mustache | 14 +++ .../ServiceComb/consumer/springboot/pom.mustache | 132 +++++++++++++++++++++ .../libraries/SpringBoot/operationMethod.mustache | 1 + 4 files changed, 155 insertions(+), 2 deletions(-) diff --git a/code-generator/src/main/java/org/apache/servicecomb/toolkit/codegen/ServiceCombCodegen.java b/code-generator/src/main/java/org/apache/servicecomb/toolkit/codegen/ServiceCombCodegen.java index ee1c004..cbfbb46 100755 --- a/code-generator/src/main/java/org/apache/servicecomb/toolkit/codegen/ServiceCombCodegen.java +++ b/code-generator/src/main/java/org/apache/servicecomb/toolkit/codegen/ServiceCombCodegen.java @@ -248,12 +248,18 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo private void processConsumerOpts() { - supportingFiles.add(new SupportingFile(consumerTemplateFolder + "/pom.mustache", + String newConsumerTemplateFolder = consumerTemplateFolder; + + if (SPRING_BOOT_LIBRARY.equals(getLibrary())) { + newConsumerTemplateFolder += "/springboot"; + } + + supportingFiles.add(new SupportingFile(newConsumerTemplateFolder + "/pom.mustache", consumerProject, "pom.xml") ); - supportingFiles.add(new SupportingFile(consumerTemplateFolder + "/Application.mustache", + supportingFiles.add(new SupportingFile(newConsumerTemplateFolder + "/Application.mustache", mainClassFolder(consumerProject), "Application.java") ); diff --git a/code-generator/src/main/resources/ServiceComb/consumer/springboot/Application.mustache b/code-generator/src/main/resources/ServiceComb/consumer/springboot/Application.mustache new file mode 100755 index 0000000..0cf7ff0 --- /dev/null +++ b/code-generator/src/main/resources/ServiceComb/consumer/springboot/Application.mustache @@ -0,0 +1,14 @@ +package {{mainClassPackage}}; + +import org.apache.servicecomb.springboot.starter.provider.EnableServiceComb; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +@EnableServiceComb +public class Application { + + public static void main(String[] args) throws Exception { + SpringApplication.run(Application.class, args); + } +} \ No newline at end of file diff --git a/code-generator/src/main/resources/ServiceComb/consumer/springboot/pom.mustache b/code-generator/src/main/resources/ServiceComb/consumer/springboot/pom.mustache new file mode 100755 index 0000000..dbeb038 --- /dev/null +++ b/code-generator/src/main/resources/ServiceComb/consumer/springboot/pom.mustache @@ -0,0 +1,132 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <parent> + <artifactId>{{artifactId}}</artifactId> + <groupId>{{groupId}}</groupId> + <version>{{artifactVersion}}</version> + </parent> + + <modelVersion>4.0.0</modelVersion> + <artifactId>consumer</artifactId> + <packaging>jar</packaging> + <name>consumer</name> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <java-chassis.version>1.2.0</java-chassis.version> + </properties> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>java-chassis-dependencies</artifactId> + <version>${java-chassis.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>{{groupId}}</groupId> + <artifactId>model</artifactId> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>spring-boot-starter-provider</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>spring-boot-starter-provider</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>handler-flowcontrol-qps</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>handler-bizkeeper</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>handler-tracing-zipkin</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.servicecomb</groupId> + <artifactId>inspector</artifactId> + </dependency> + + <dependency> + <groupId>org.hibernate.validator</groupId> + <artifactId>hibernate-validator</artifactId> + </dependency> + + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + <version>2.0.1.Final</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.1</version> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>3.0.0</version> + <configuration> + <encoding>UTF-8</encoding> + </configuration> + </plugin> + + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <version>1.5.12.RELEASE</version> + <configuration> + <fork>true</fork> + <mainClass>{{mainClassPackage}}.Application</mainClass> + <outputDirectory>target/bin</outputDirectory> + </configuration> + <executions> + <execution> + <goals> + <goal>repackage</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> \ No newline at end of file diff --git a/code-generator/src/main/resources/ServiceComb/libraries/SpringBoot/operationMethod.mustache b/code-generator/src/main/resources/ServiceComb/libraries/SpringBoot/operationMethod.mustache index 948212d..f6c2ef9 100755 --- a/code-generator/src/main/resources/ServiceComb/libraries/SpringBoot/operationMethod.mustache +++ b/code-generator/src/main/resources/ServiceComb/libraries/SpringBoot/operationMethod.mustache @@ -1,4 +1,5 @@ {{#operation}} + @RequestMapping(value = "{{path}}", {{#hasProduces}}produces = { {{#produces}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}} }, {{/hasProduces}} {{#hasConsumes}}consumes = { {{#consumes}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}} method = RequestMethod.{{httpMethod}}) public ResponseEntity<{{>returnTypes}}> {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { // do something