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 1aa7e5d21af830d891532a4fdbaf2165dbbce91c Author: kakulisen <[email protected]> AuthorDate: Mon Jun 3 11:26:31 2019 +0800 Support generating pojo consumer Signed-off-by: kakulisen <[email protected]> --- .../toolkit/codegen/ServiceCombCodegen.java | 44 +++++++++++++++------- .../consumer/formParamsConsumer.mustache | 2 +- .../ServiceComb/libraries/POJO/api.mustache | 28 +++----------- .../POJO/{api.mustache => apiImpl.mustache} | 2 +- .../libraries/POJO/apiInterface.mustache | 17 --------- 5 files changed, 37 insertions(+), 56 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 d6b4fd2..ee1c004 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 @@ -18,6 +18,7 @@ package org.apache.servicecomb.toolkit.codegen; import java.io.File; +import java.util.List; import java.util.Map; import io.swagger.codegen.CliOption; @@ -61,9 +62,11 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo private String apiConsumerTemplate = consumerTemplateFolder + "/apiConsumer.mustache"; + private String apiConsumerTemplateForPojo = consumerTemplateFolder + "/pojo/apiConsumer.mustache"; + private String modelConsumerTemplate = consumerTemplateFolder + "/model.mustache"; - private String pojoApiInterfaceTemplate = "apiInterface.mustache"; + private String pojoApiImplTemplate = "apiImpl.mustache"; private int modelSwitch = 1; @@ -130,15 +133,20 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo @Override public String apiFilename(String templateName, String tag) { - if (apiConsumerTemplate.equals(templateName)) { + if (apiConsumerTemplate.equals(templateName) || apiConsumerTemplateForPojo.equals(templateName)) { String suffix = apiTemplateFiles().get(templateName); return apiConsumerFolder() + File.separator + toApiFilename(tag) + suffix; } - if (pojoApiInterfaceTemplate.equals(templateName)) { - String suffix = apiTemplateFiles().get(templateName); - String pojoApiInterfaceName = pojoApiInterfaceFolder() + File.separator + camelize(tag) + "Api" + suffix; - additionalProperties.put("pojoApiInterfaceName", camelize(tag) + "Api"); - return pojoApiInterfaceName; + + if (POJO_LIBRARY.equals(getLibrary())) { + if ("apiImpl.mustache".equals(templateName)) { + String suffix = apiTemplateFiles().get(templateName); + return apiFileFolder() + File.separator + additionalProperties.get("classnameImpl") + suffix; + } + if ("api.mustache".equals(templateName)) { + String suffix = apiTemplateFiles().get(templateName); + return pojoApiInterfaceFolder() + File.separator + camelize(tag) + "Api" + suffix; + } } return super.apiFilename(templateName, tag); } @@ -152,6 +160,16 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo } @Override + public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> objs, List<Object> allModels) { + + Map operations = (Map) objs.get("operations"); + String classnameImpl = (String) operations.get("classname") + "Impl"; + operations.put("classnameImpl", classnameImpl); + additionalProperties.put("classnameImpl", classnameImpl); + return super.postProcessOperationsWithModels(objs, allModels); + } + + @Override public void processOpts() { super.processOpts(); @@ -176,7 +194,9 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo if (!POJO_LIBRARY.equals(getLibrary())) { return; } - apiTemplateFiles.put(pojoApiInterfaceTemplate, ".java"); + apiTemplateFiles.put(pojoApiImplTemplate, ".java"); + apiTemplateFiles.remove(apiConsumerTemplate); + apiTemplateFiles.put(apiConsumerTemplateForPojo, "Consumer.java"); additionalProperties.put("isPOJO", true); } @@ -265,7 +285,7 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo @Override public String toApiName(String name) { if (name.length() == 0) { - return "DefaultController"; + return "DefaultApi"; } String apiName = (String) additionalProperties.get("apiName"); @@ -273,11 +293,7 @@ public class ServiceCombCodegen extends AbstractJavaCodegen implements CodegenCo return apiName; } - if (POJO_LIBRARY.equals(getLibrary())) { - return initialCaps(name) + "ApiImpl"; - } - - return initialCaps(name) + "Controller"; + return initialCaps(name) + "Api"; } private String mainClassFolder(String projectPath) { diff --git a/code-generator/src/main/resources/ServiceComb/consumer/formParamsConsumer.mustache b/code-generator/src/main/resources/ServiceComb/consumer/formParamsConsumer.mustache index 5e9bb31..3aad37d 100755 --- a/code-generator/src/main/resources/ServiceComb/consumer/formParamsConsumer.mustache +++ b/code-generator/src/main/resources/ServiceComb/consumer/formParamsConsumer.mustache @@ -1 +1 @@ -{{#isFormParam}}{{#notFile}}{{{dataType}}} {{paramName}}{{/notFile}}{{#isFile}} MultipartFile {{baseName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}{{#notFile}}{{{dataType}}} {{paramName}}{{/notFile}}{{#isFile}} {{#isPOJO}}File{{/isPOJO}}{{^isPOJO}}MultipartFile{{/isPOJO}} {{baseName}}{{/isFile}}{{/isFormParam}} \ No newline at end of file diff --git a/code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache b/code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache index ea99a96..fad66ca 100755 --- a/code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache +++ b/code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache @@ -1,35 +1,17 @@ package {{apiPackage}}; -import static org.springframework.http.MediaType.*; import java.util.List; import java.util.Map; +import java.util.HashMap; import java.io.File; {{#imports}}import {{import}}; {{/imports}} import {{modelPackage}}.*; -import org.apache.servicecomb.provider.pojo.RpcSchema; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestPart; -import org.springframework.web.multipart.MultipartFile; -@RpcSchema(schemaId = "{{#camelcase}}{{classname}}{{/camelcase}}") {{#operations}} -public class {{classname}} implements {{#removeImplSuffix}}{{classname}}{{/removeImplSuffix}} { - {{#operation}} - - @Override - public {{>returnTypes}} {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { - // do something - - return null; - } - {{/operation}} +public interface {{classname}} { + {{#operation}} + public {{>returnTypes}} {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); + {{/operation}} } {{/operations}} \ No newline at end of file diff --git a/code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache b/code-generator/src/main/resources/ServiceComb/libraries/POJO/apiImpl.mustache similarity index 91% copy from code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache copy to code-generator/src/main/resources/ServiceComb/libraries/POJO/apiImpl.mustache index ea99a96..7e15375 100755 --- a/code-generator/src/main/resources/ServiceComb/libraries/POJO/api.mustache +++ b/code-generator/src/main/resources/ServiceComb/libraries/POJO/apiImpl.mustache @@ -21,7 +21,7 @@ import org.springframework.web.multipart.MultipartFile; @RpcSchema(schemaId = "{{#camelcase}}{{classname}}{{/camelcase}}") {{#operations}} -public class {{classname}} implements {{#removeImplSuffix}}{{classname}}{{/removeImplSuffix}} { +public class {{classnameImpl}} implements {{classname}} { {{#operation}} @Override diff --git a/code-generator/src/main/resources/ServiceComb/libraries/POJO/apiInterface.mustache b/code-generator/src/main/resources/ServiceComb/libraries/POJO/apiInterface.mustache deleted file mode 100755 index 84cc2c8..0000000 --- a/code-generator/src/main/resources/ServiceComb/libraries/POJO/apiInterface.mustache +++ /dev/null @@ -1,17 +0,0 @@ -package {{apiPackage}}; - -import java.util.List; -import java.util.Map; -import java.util.HashMap; -import java.io.File; -{{#imports}}import {{import}}; -{{/imports}} -import {{modelPackage}}.*; - -{{#operations}} -public interface {{#removeImplSuffix}}{{classname}}{{/removeImplSuffix}} { - {{#operation}} - public {{>returnTypes}} {{operationId}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); - {{/operation}} -} -{{/operations}} \ No newline at end of file
