From 5d0c98cb7834ff3a67ac42e69aa0d031b0644ab2 Mon Sep 17 00:00:00 2001 From: Daniel Zhao Date: Mon, 1 Apr 2019 14:49:33 -0400 Subject: [PATCH 1/6] initial commit - #197 --- light-rest-4j/pom.xml | 10 ++- .../codegen/rest/OpenApiSpecGenerator.java | 77 +++++++++++++++++++ .../rest/OpenApiSpecGeneratorTest.java | 24 ++++++ light-rest-4j/src/test/resources/config.json | 4 + pom.xml | 14 +++- 5 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java create mode 100644 light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java diff --git a/light-rest-4j/pom.xml b/light-rest-4j/pom.xml index 2fdd1c2a8..dc9d5dea8 100644 --- a/light-rest-4j/pom.xml +++ b/light-rest-4j/pom.xml @@ -70,7 +70,15 @@ org.yaml snakeyaml - + + + io.github.classgraph + classgraph + + + io.swagger.core.v3 + swagger-core + ch.qos.logback logback-classic diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java new file mode 100644 index 000000000..ca8f2359a --- /dev/null +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java @@ -0,0 +1,77 @@ +package com.networknt.codegen.rest; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.jsoniter.any.Any; +import com.networknt.codegen.Generator; + +import io.github.classgraph.ClassGraph; +import io.github.classgraph.ScanResult; +import io.swagger.v3.core.converter.ModelConverters; +import io.swagger.v3.core.util.Json; +import io.swagger.v3.core.util.Yaml; +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.Schema; + +public class OpenApiSpecGenerator implements Generator { + private static final Logger logger = LoggerFactory.getLogger(OpenApiSpecGenerator.class); + + private static final String FRAMEWORK="openapi-spec"; + private static final String CONFIG_SPECGENERATION ="specGeneration"; + private static final String CONFIG_BASEPACKAGES ="basePackages"; + private static final String CONFIG_MERGETO ="mergeTo"; + private static final String COMMA = ","; + + + @Override + public String getFramework() { + return FRAMEWORK; + } + + @Override + public void generate(String targetPath, Object model, Any config) throws IOException { + if (!config.keys().contains(CONFIG_SPECGENERATION)) { + logger.error("Missing config: cannot find {} in the specified config file", CONFIG_SPECGENERATION); + return; + } + + Map genConfig = config.get(CONFIG_SPECGENERATION).asMap(); + String basePackages = genConfig.get(CONFIG_BASEPACKAGES).toString(); + String mergeTo = genConfig.get(CONFIG_MERGETO).toString(); + + String[] basePackageArray = basePackages.split(COMMA); + + Map schemas = new HashMap<>(); + + for (String packageName: basePackageArray) { + try (ScanResult scanResult = + new ClassGraph() + .enableClassInfo() + .whitelistPackages(packageName) + .scan()) { + + List> classes = scanResult.getAllClasses().loadClasses(); + + for (Class cls: classes) { + + schemas.putAll(ModelConverters.getInstance().read(cls)); + + } + } + } + + OpenAPI openApi = new OpenAPI(); + + openApi.setComponents(new Components().schemas(schemas)); + + Json.prettyPrint(openApi); + Yaml.prettyPrint(openApi); + } +} diff --git a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java new file mode 100644 index 000000000..81ec89838 --- /dev/null +++ b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java @@ -0,0 +1,24 @@ +package com.networknt.codegen.rest; + +import java.io.IOException; + +import org.junit.Test; + +import com.jsoniter.JsonIterator; +import com.jsoniter.any.Any; +import com.networknt.codegen.OpenApiGeneratorTest; + +public class OpenApiSpecGeneratorTest { + private static String configName = "/config.json"; + + @Test + public void test() throws IOException { + Any anyConfig = JsonIterator.parse(OpenApiGeneratorTest.class.getResourceAsStream(configName), 1024).readAny(); + + OpenApiSpecGenerator generator = new OpenApiSpecGenerator(); + + generator.generate(null, null, anyConfig); + + + } +} diff --git a/light-rest-4j/src/test/resources/config.json b/light-rest-4j/src/test/resources/config.json index 72df874d4..e5c88e0dd 100644 --- a/light-rest-4j/src/test/resources/config.json +++ b/light-rest-4j/src/test/resources/config.json @@ -33,5 +33,9 @@ "handerl.yml", "values.yml" ] + }, + "specGeneration": { + "basePackages": "com.networknt.petstore.model", + "mergeTo": "" } } diff --git a/pom.xml b/pom.xml index d7e114cc0..0f368ce68 100644 --- a/pom.xml +++ b/pom.xml @@ -92,13 +92,15 @@ 3.5.3-beta 0.3 4.0.0 - 1.20 + 1.24 1.2.1 1.72 2.18.1 8.0 2.0-M9 2.4 + 4.8.22 + 2.0.7 -Xmx512m -XX:MaxPermSize=256m @@ -294,6 +296,16 @@ qdox ${version.qdox} + + io.github.classgraph + classgraph + ${versions.classgraph} + + + io.swagger.core.v3 + swagger-core + ${version.swagger} + From 16789ad817c87d772df851762749706c03880a6f Mon Sep 17 00:00:00 2001 From: Daniel Zhao Date: Tue, 2 Apr 2019 10:22:33 -0400 Subject: [PATCH 2/6] add merge function - #197 --- .../codegen/rest/OpenApiSpecGenerator.java | 96 ++++++++++++++++++- light-rest-4j/src/test/resources/config.json | 4 +- pom.xml | 4 +- 3 files changed, 97 insertions(+), 7 deletions(-) diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java index ca8f2359a..7964e759c 100644 --- a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java @@ -1,10 +1,14 @@ package com.networknt.codegen.rest; +import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +31,13 @@ public class OpenApiSpecGenerator implements Generator { private static final String CONFIG_SPECGENERATION ="specGeneration"; private static final String CONFIG_BASEPACKAGES ="basePackages"; private static final String CONFIG_MERGETO ="mergeTo"; + private static final String CONFIG_OUTPUTFORMAT="outputFormat"; + private static final String CONFIG_OUTPUTFILENAME="outputFilename"; private static final String COMMA = ","; + private static final String JSON="json"; + private static final String YAML="yaml"; + private static final String YML="y l"; + private static final String DEFAULT_OUTPUT_NAME="openapi_generated"; @Override @@ -35,8 +45,14 @@ public String getFramework() { return FRAMEWORK; } + @SuppressWarnings("rawtypes") @Override public void generate(String targetPath, Object model, Any config) throws IOException { + if (StringUtils.isBlank(targetPath)) { + logger.error("Output location is not specified."); + return; + } + if (!config.keys().contains(CONFIG_SPECGENERATION)) { logger.error("Missing config: cannot find {} in the specified config file", CONFIG_SPECGENERATION); return; @@ -45,6 +61,16 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep Map genConfig = config.get(CONFIG_SPECGENERATION).asMap(); String basePackages = genConfig.get(CONFIG_BASEPACKAGES).toString(); String mergeTo = genConfig.get(CONFIG_MERGETO).toString(); + String outputFormat = genConfig.get(CONFIG_OUTPUTFORMAT).toString(); + String outputFilename = genConfig.get(CONFIG_OUTPUTFILENAME).toString(); + + File output_dir = new File(targetPath); + + if (!output_dir.exists() || !output_dir.isDirectory()) { + output_dir.mkdirs(); + } + + File outputFile = new File(output_dir, StringUtils.isBlank(outputFilename)?DEFAULT_OUTPUT_NAME:outputFilename); String[] basePackageArray = basePackages.split(COMMA); @@ -60,9 +86,7 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep List> classes = scanResult.getAllClasses().loadClasses(); for (Class cls: classes) { - schemas.putAll(ModelConverters.getInstance().read(cls)); - } } } @@ -71,7 +95,71 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep openApi.setComponents(new Components().schemas(schemas)); - Json.prettyPrint(openApi); - Yaml.prettyPrint(openApi); + openApi = merge(openApi, mergeTo); + + String specStr=StringUtils.EMPTY; + + if (StringUtils.equalsIgnoreCase(outputFormat, JSON)) { + specStr = Json.pretty(openApi); + }else { + specStr = Yaml.pretty(openApi); + } + + Files.write(Paths.get(outputFile.toURI()), specStr.getBytes()); + } + + @SuppressWarnings("rawtypes") + private OpenAPI merge(OpenAPI generatedSpec, String mergeTo) { + if (StringUtils.isNotBlank(mergeTo)) { + File destFile = new File(mergeTo); + + if (destFile.isFile()) { + try { + OpenAPI openAPI=null; + String ext = getFileExtension(destFile); + if (StringUtils.equalsIgnoreCase(ext, JSON)) { + openAPI = Json.mapper().readValue(destFile, OpenAPI.class); + }else if (StringUtils.equalsIgnoreCase(ext, YML)||StringUtils.equalsIgnoreCase(ext, YAML)) { + openAPI = Yaml.mapper().readValue(destFile, OpenAPI.class); + }else { + logger.error("unknow file format: {}", ext); + } + + if (null!=openAPI) { + Components components = openAPI.getComponents(); + + if (null == components) { + components = new Components(); + } + + Map schemas = new HashMap<>(); + + schemas.putAll(components.getSchemas()); + + schemas.putAll(generatedSpec.getComponents().getSchemas()); + + components.setSchemas(schemas); + + openAPI.setComponents(components); + + return openAPI; + } + + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + } + } + + return generatedSpec; + } + + private String getFileExtension(File file) { + String name = file.getName(); + int lastIndexOf = name.lastIndexOf("."); + if (lastIndexOf == -1) { + return ""; // empty extension + } + return name.substring(lastIndexOf); } } diff --git a/light-rest-4j/src/test/resources/config.json b/light-rest-4j/src/test/resources/config.json index e5c88e0dd..8210905d0 100644 --- a/light-rest-4j/src/test/resources/config.json +++ b/light-rest-4j/src/test/resources/config.json @@ -36,6 +36,8 @@ }, "specGeneration": { "basePackages": "com.networknt.petstore.model", - "mergeTo": "" + "mergeTo": "", + "outputFormat": "yaml", + "outputFilename": "" } } diff --git a/pom.xml b/pom.xml index 0f368ce68..718e8ef83 100644 --- a/pom.xml +++ b/pom.xml @@ -103,7 +103,7 @@ 2.0.7 -Xmx512m -XX:MaxPermSize=256m - + codegen-core light-rest-4j @@ -305,7 +305,7 @@ io.swagger.core.v3 swagger-core ${version.swagger} - + From 65ca4cbf5d2e76f228b4c499ba9d79c4b0c05102 Mon Sep 17 00:00:00 2001 From: Daniel Zhao Date: Tue, 2 Apr 2019 10:42:51 -0400 Subject: [PATCH 3/6] add output formats - #197 --- .../codegen/rest/OpenApiSpecGenerator.java | 40 +++++++++++++------ .../rest/OpenApiSpecGeneratorTest.java | 2 - light-rest-4j/src/test/resources/config.json | 2 +- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java index 7964e759c..4c74a8b7e 100644 --- a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java @@ -29,14 +29,18 @@ public class OpenApiSpecGenerator implements Generator { private static final String FRAMEWORK="openapi-spec"; private static final String CONFIG_SPECGENERATION ="specGeneration"; - private static final String CONFIG_BASEPACKAGES ="basePackages"; + // comma delimited package names + private static final String CONFIG_MODELPACKAGES ="modelPackages"; private static final String CONFIG_MERGETO ="mergeTo"; + // comma delimited formats, currently support json, yml, or yaml private static final String CONFIG_OUTPUTFORMAT="outputFormat"; + // the output file name without extension private static final String CONFIG_OUTPUTFILENAME="outputFilename"; + private static final String DOT = "."; private static final String COMMA = ","; private static final String JSON="json"; private static final String YAML="yaml"; - private static final String YML="y l"; + private static final String YML="yml"; private static final String DEFAULT_OUTPUT_NAME="openapi_generated"; @@ -59,7 +63,7 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep } Map genConfig = config.get(CONFIG_SPECGENERATION).asMap(); - String basePackages = genConfig.get(CONFIG_BASEPACKAGES).toString(); + String modelPackages = genConfig.get(CONFIG_MODELPACKAGES).toString(); String mergeTo = genConfig.get(CONFIG_MERGETO).toString(); String outputFormat = genConfig.get(CONFIG_OUTPUTFORMAT).toString(); String outputFilename = genConfig.get(CONFIG_OUTPUTFILENAME).toString(); @@ -70,9 +74,7 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep output_dir.mkdirs(); } - File outputFile = new File(output_dir, StringUtils.isBlank(outputFilename)?DEFAULT_OUTPUT_NAME:outputFilename); - - String[] basePackageArray = basePackages.split(COMMA); + String[] basePackageArray = modelPackages.split(COMMA); Map schemas = new HashMap<>(); @@ -97,15 +99,27 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep openApi = merge(openApi, mergeTo); + String[] formats = outputFormat.split(COMMA); + + String filename = StringUtils.isBlank(outputFilename)?DEFAULT_OUTPUT_NAME:outputFilename; + + for (String format: formats) { + dump(openApi, format, new File(output_dir, filename + DOT + format)); + } + } + + private void dump(OpenAPI openApi, String format, File outputFile) throws IOException { String specStr=StringUtils.EMPTY; - if (StringUtils.equalsIgnoreCase(outputFormat, JSON)) { + if (StringUtils.equalsIgnoreCase(format, JSON)) { specStr = Json.pretty(openApi); - }else { + }else if (StringUtils.equalsIgnoreCase(format, YML) || StringUtils.equalsIgnoreCase(format, YAML)){ specStr = Yaml.pretty(openApi); + }else { + throw new UnsupportedOperationException("Unknow output format " + format); } - Files.write(Paths.get(outputFile.toURI()), specStr.getBytes()); + Files.write(Paths.get(outputFile.toURI()), specStr.getBytes()); } @SuppressWarnings("rawtypes") @@ -122,7 +136,7 @@ private OpenAPI merge(OpenAPI generatedSpec, String mergeTo) { }else if (StringUtils.equalsIgnoreCase(ext, YML)||StringUtils.equalsIgnoreCase(ext, YAML)) { openAPI = Yaml.mapper().readValue(destFile, OpenAPI.class); }else { - logger.error("unknow file format: {}", ext); + throw new UnsupportedOperationException("Unknow file format " + ext); } if (null!=openAPI) { @@ -156,9 +170,9 @@ private OpenAPI merge(OpenAPI generatedSpec, String mergeTo) { private String getFileExtension(File file) { String name = file.getName(); - int lastIndexOf = name.lastIndexOf("."); - if (lastIndexOf == -1) { - return ""; // empty extension + int lastIndexOf = name.lastIndexOf(DOT); + if (lastIndexOf < 0) { + return StringUtils.EMPTY; } return name.substring(lastIndexOf); } diff --git a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java index 81ec89838..275a80586 100644 --- a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java +++ b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java @@ -18,7 +18,5 @@ public void test() throws IOException { OpenApiSpecGenerator generator = new OpenApiSpecGenerator(); generator.generate(null, null, anyConfig); - - } } diff --git a/light-rest-4j/src/test/resources/config.json b/light-rest-4j/src/test/resources/config.json index 8210905d0..0a9d4c3f2 100644 --- a/light-rest-4j/src/test/resources/config.json +++ b/light-rest-4j/src/test/resources/config.json @@ -35,7 +35,7 @@ ] }, "specGeneration": { - "basePackages": "com.networknt.petstore.model", + "modelPackages": "com.networknt.petstore.model", "mergeTo": "", "outputFormat": "yaml", "outputFilename": "" From 15a12633db3834243fb342d7ef364fd89992b86d Mon Sep 17 00:00:00 2001 From: Daniel Zhao Date: Tue, 2 Apr 2019 11:23:14 -0400 Subject: [PATCH 4/6] add spec generator to framework config - #197 --- codegen-cli/src/main/resources/config/service.yml | 1 + .../codegen/rest/OpenApiSpecGenerator.java | 13 +++++++++---- .../codegen/rest/OpenApiSpecGeneratorTest.java | 7 +++++-- light-rest-4j/src/test/resources/config.json | 6 +++--- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/codegen-cli/src/main/resources/config/service.yml b/codegen-cli/src/main/resources/config/service.yml index b70bc2fd1..286553c47 100644 --- a/codegen-cli/src/main/resources/config/service.yml +++ b/codegen-cli/src/main/resources/config/service.yml @@ -9,3 +9,4 @@ singletons: - com.networknt.codegen.graphql.GraphqlGenerator - com.networknt.codegen.eventuate.EventuateOpenApiGenerator - com.networknt.codegen.rest.OpenApiKotlinGenerator + - com.networknt.codegen.rest.OpenApiSpecGenerator diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java index 4c74a8b7e..0c81f4f4e 100644 --- a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java @@ -28,16 +28,21 @@ public class OpenApiSpecGenerator implements Generator { private static final Logger logger = LoggerFactory.getLogger(OpenApiSpecGenerator.class); private static final String FRAMEWORK="openapi-spec"; + + /** -- configuration items begin -- */ private static final String CONFIG_SPECGENERATION ="specGeneration"; // comma delimited package names private static final String CONFIG_MODELPACKAGES ="modelPackages"; + // absolute path of an existing spec file. If this is specified, the generated models (a.k.a. components) will be added to this file and override existing schemas, if any. private static final String CONFIG_MERGETO ="mergeTo"; // comma delimited formats, currently support json, yml, or yaml private static final String CONFIG_OUTPUTFORMAT="outputFormat"; // the output file name without extension private static final String CONFIG_OUTPUTFILENAME="outputFilename"; + /** -- configuration items end -- */ + private static final String DOT = "."; - private static final String COMMA = ","; + private static final String COMMA_SPACE = ",\\s"; private static final String JSON="json"; private static final String YAML="yaml"; private static final String YML="yml"; @@ -74,7 +79,7 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep output_dir.mkdirs(); } - String[] basePackageArray = modelPackages.split(COMMA); + String[] basePackageArray = modelPackages.split(COMMA_SPACE); Map schemas = new HashMap<>(); @@ -99,7 +104,7 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep openApi = merge(openApi, mergeTo); - String[] formats = outputFormat.split(COMMA); + String[] formats = outputFormat.split(COMMA_SPACE); String filename = StringUtils.isBlank(outputFilename)?DEFAULT_OUTPUT_NAME:outputFilename; @@ -174,6 +179,6 @@ private String getFileExtension(File file) { if (lastIndexOf < 0) { return StringUtils.EMPTY; } - return name.substring(lastIndexOf); + return name.substring(lastIndexOf+1); } } diff --git a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java index 275a80586..f6a1bc231 100644 --- a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java +++ b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java @@ -2,14 +2,17 @@ import java.io.IOException; +import org.junit.Ignore; import org.junit.Test; import com.jsoniter.JsonIterator; import com.jsoniter.any.Any; import com.networknt.codegen.OpenApiGeneratorTest; +@Ignore public class OpenApiSpecGeneratorTest { - private static String configName = "/config.json"; + private static final String configName = "/config.json"; + private static final String outputDir = "/tmp/codegen/"; @Test public void test() throws IOException { @@ -17,6 +20,6 @@ public void test() throws IOException { OpenApiSpecGenerator generator = new OpenApiSpecGenerator(); - generator.generate(null, null, anyConfig); + generator.generate(outputDir, null, anyConfig); } } diff --git a/light-rest-4j/src/test/resources/config.json b/light-rest-4j/src/test/resources/config.json index 0a9d4c3f2..72636e4fd 100644 --- a/light-rest-4j/src/test/resources/config.json +++ b/light-rest-4j/src/test/resources/config.json @@ -36,8 +36,8 @@ }, "specGeneration": { "modelPackages": "com.networknt.petstore.model", - "mergeTo": "", - "outputFormat": "yaml", - "outputFilename": "" + "mergeTo": "/tmp/codegen/openapi.json", + "outputFormat": "yaml, json", + "outputFilename": "openapi_gen_test" } } From af40c9ce9c80ed3a4e729b640ba94784a8ea5730 Mon Sep 17 00:00:00 2001 From: Daniel Zhao Date: Wed, 3 Apr 2019 13:45:33 -0400 Subject: [PATCH 5/6] fix string splitting - #197 --- .../networknt/codegen/rest/OpenApiSpecGenerator.java | 10 +++++----- .../codegen/rest/OpenApiSpecGeneratorTest.java | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java index 0c81f4f4e..7e90f9eef 100644 --- a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiSpecGenerator.java @@ -42,7 +42,7 @@ public class OpenApiSpecGenerator implements Generator { /** -- configuration items end -- */ private static final String DOT = "."; - private static final String COMMA_SPACE = ",\\s"; + private static final String COMMA_SPACE = "\\s*,\\s*"; private static final String JSON="json"; private static final String YAML="yaml"; private static final String YML="yml"; @@ -68,10 +68,10 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep } Map genConfig = config.get(CONFIG_SPECGENERATION).asMap(); - String modelPackages = genConfig.get(CONFIG_MODELPACKAGES).toString(); - String mergeTo = genConfig.get(CONFIG_MERGETO).toString(); - String outputFormat = genConfig.get(CONFIG_OUTPUTFORMAT).toString(); - String outputFilename = genConfig.get(CONFIG_OUTPUTFILENAME).toString(); + String modelPackages = StringUtils.trimToEmpty(genConfig.get(CONFIG_MODELPACKAGES).toString()); + String mergeTo = StringUtils.trimToEmpty(genConfig.get(CONFIG_MERGETO).toString()); + String outputFormat = StringUtils.trimToEmpty(genConfig.get(CONFIG_OUTPUTFORMAT).toString()); + String outputFilename = StringUtils.trimToEmpty(genConfig.get(CONFIG_OUTPUTFILENAME).toString()); File output_dir = new File(targetPath); diff --git a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java index f6a1bc231..7e13318d2 100644 --- a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java +++ b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java @@ -2,14 +2,13 @@ import java.io.IOException; -import org.junit.Ignore; import org.junit.Test; import com.jsoniter.JsonIterator; import com.jsoniter.any.Any; import com.networknt.codegen.OpenApiGeneratorTest; -@Ignore +//@Ignore public class OpenApiSpecGeneratorTest { private static final String configName = "/config.json"; private static final String outputDir = "/tmp/codegen/"; From 4a5797d86b5174c9d89a7f8242d9f7ab764012aa Mon Sep 17 00:00:00 2001 From: Daniel Zhao Date: Wed, 3 Apr 2019 13:46:38 -0400 Subject: [PATCH 6/6] ignore unit tests - #197 --- .../com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java index 7e13318d2..f6a1bc231 100644 --- a/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java +++ b/light-rest-4j/src/test/java/com/networknt/codegen/rest/OpenApiSpecGeneratorTest.java @@ -2,13 +2,14 @@ import java.io.IOException; +import org.junit.Ignore; import org.junit.Test; import com.jsoniter.JsonIterator; import com.jsoniter.any.Any; import com.networknt.codegen.OpenApiGeneratorTest; -//@Ignore +@Ignore public class OpenApiSpecGeneratorTest { private static final String configName = "/config.json"; private static final String outputDir = "/tmp/codegen/";