Skip to content

Commit 33b2e1e

Browse files
authored
Merge pull request #8454 from john-french/addOutputFileNameOption
add output file options for swagger codegen
2 parents 0eca1ff + cf0bb36 commit 33b2e1e

File tree

6 files changed

+52
-8
lines changed

6 files changed

+52
-8
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerGenerator.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.io.File;
44

5+
import io.swagger.codegen.CliOption;
56
import org.apache.commons.io.FileUtils;
7+
import org.apache.commons.lang3.StringUtils;
68
import org.slf4j.Logger;
79
import org.slf4j.LoggerFactory;
810

@@ -17,11 +19,20 @@ public class SwaggerGenerator extends DefaultCodegen implements CodegenConfig {
1719

1820
private static final Logger LOGGER = LoggerFactory.getLogger(SwaggerGenerator.class);
1921

22+
public static final String OUTPUT_NAME = "outputFile";
23+
24+
public static final String SWAGGER_FILENAME_DEFAULT_JSON = "swagger.json";
25+
26+
protected String outputFile = SWAGGER_FILENAME_DEFAULT_JSON;
27+
2028
public SwaggerGenerator() {
2129
super();
2230
embeddedTemplateDir = templateDir = "swagger";
2331
outputFolder = "generated-code/swagger";
2432

33+
cliOptions.add(new CliOption(OUTPUT_NAME,
34+
"output filename")
35+
.defaultValue(SWAGGER_FILENAME_DEFAULT_JSON));
2536
supportingFiles.add(new SupportingFile("README.md", "", "README.md"));
2637
}
2738

@@ -45,14 +56,27 @@ public void processSwagger(Swagger swagger) {
4556
String swaggerString = Json.pretty(swagger);
4657

4758
try {
48-
String outputFile = outputFolder + File.separator + "swagger.json";
59+
String outputFile = outputFolder + File.separator + this.outputFile;
4960
FileUtils.writeStringToFile(new File(outputFile), swaggerString);
5061
LOGGER.debug("wrote file to " + outputFile);
5162
} catch (Exception e) {
5263
LOGGER.error(e.getMessage(), e);
5364
}
5465
}
5566

67+
@Override
68+
public void processOpts() {
69+
super.processOpts();
70+
71+
if (additionalProperties.containsKey(OUTPUT_NAME) && !StringUtils.isBlank((String) additionalProperties.get(OUTPUT_NAME))) {
72+
setOutputFile((String) additionalProperties.get(OUTPUT_NAME));
73+
}
74+
}
75+
76+
public void setOutputFile(String outputFile) {
77+
this.outputFile = outputFile;
78+
}
79+
5680
@Override
5781
public String escapeQuotationMark(String input) {
5882
// just return the original string

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SwaggerYamlGenerator.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,31 @@
1414
import io.swagger.util.DeserializationModule;
1515
import io.swagger.util.Yaml;
1616
import org.apache.commons.io.FileUtils;
17+
import org.apache.commons.lang3.StringUtils;
1718
import org.slf4j.Logger;
1819
import org.slf4j.LoggerFactory;
1920

2021
import java.io.File;
2122

2223
public class SwaggerYamlGenerator extends DefaultCodegen implements CodegenConfig {
23-
public static final String OUTPUT_NAME = "outputFile";
2424

2525
private static final Logger LOGGER = LoggerFactory.getLogger(SwaggerYamlGenerator.class);
2626

27-
protected String outputFile = "swagger.yaml";
27+
public static final String OUTPUT_NAME = "outputFile";
28+
29+
public static final String SWAGGER_FILENAME_DEFAULT_YAML = "swagger.yaml";
30+
31+
protected String outputFile = SWAGGER_FILENAME_DEFAULT_YAML;
32+
2833

2934
public SwaggerYamlGenerator() {
3035
super();
3136
embeddedTemplateDir = templateDir = "swagger";
3237
outputFolder = "generated-code/swagger";
3338

34-
cliOptions.add(new CliOption(OUTPUT_NAME, "output filename"));
39+
cliOptions.add(new CliOption(OUTPUT_NAME,
40+
"output filename")
41+
.defaultValue(SWAGGER_FILENAME_DEFAULT_YAML));
3542

3643
supportingFiles.add(new SupportingFile("README.md", "", "README.md"));
3744
}
@@ -51,15 +58,19 @@ public String getHelp() {
5158
return "Creates a static swagger.yaml file.";
5259
}
5360

54-
5561
@Override
5662
public void processOpts() {
5763
super.processOpts();
58-
if(additionalProperties.containsKey(OUTPUT_NAME)) {
59-
this.outputFile = additionalProperties.get(OUTPUT_NAME).toString();
64+
65+
if (additionalProperties.containsKey(OUTPUT_NAME) && !StringUtils.isBlank((String) additionalProperties.get(OUTPUT_NAME))) {
66+
setOutputFile((String) additionalProperties.get(OUTPUT_NAME));
6067
}
6168
}
6269

70+
public void setOutputFile(String outputFile) {
71+
this.outputFile = outputFile;
72+
}
73+
6374
@Override
6475
public void processSwagger(Swagger swagger) {
6576
try {

modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SwaggerOptionsProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import io.swagger.codegen.CodegenConstants;
44

55
import com.google.common.collect.ImmutableMap;
6+
import io.swagger.codegen.languages.SwaggerGenerator;
67

78
import java.util.Map;
89

910
public class SwaggerOptionsProvider implements OptionsProvider {
1011
public static final String SORT_PARAMS_VALUE = "false";
1112
public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true";
13+
public static final String OUTPUT_NAME = "swagger.json";
1214
public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false";
1315

1416

@@ -22,6 +24,7 @@ public Map<String, String> createOptions() {
2224
ImmutableMap.Builder<String, String> builder = new ImmutableMap.Builder<String, String>();
2325
return builder.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE)
2426
.put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE)
27+
.put(SwaggerGenerator.OUTPUT_NAME, OUTPUT_NAME)
2528
.put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE)
2629
.build();
2730
}

modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SwaggerYamlOptionsProvider.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import io.swagger.codegen.CodegenConstants;
44

55
import com.google.common.collect.ImmutableMap;
6+
import io.swagger.codegen.languages.SwaggerYamlGenerator;
67

78
import java.util.Map;
89

910
public class SwaggerYamlOptionsProvider implements OptionsProvider {
1011
public static final String SORT_PARAMS_VALUE = "false";
1112
public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true";
13+
public static final String OUTPUT_NAME = "swagger.yaml";
1214
public static final String ALLOW_UNICODE_IDENTIFIERS_VALUE = "false";
1315

1416
@Override
@@ -21,7 +23,7 @@ public Map<String, String> createOptions() {
2123
ImmutableMap.Builder<String, String> builder = new ImmutableMap.Builder<String, String>();
2224
return builder.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE)
2325
.put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE)
24-
.put("outputFile", "swagger.yaml")
26+
.put(SwaggerYamlGenerator.OUTPUT_NAME, OUTPUT_NAME)
2527
.put(CodegenConstants.ALLOW_UNICODE_IDENTIFIERS, ALLOW_UNICODE_IDENTIFIERS_VALUE)
2628
.build();
2729
}

modules/swagger-codegen/src/test/java/io/swagger/codegen/swagger/SwaggerOptionsTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ protected void setExpectations() {
2828
new Expectations(clientCodegen) {{
2929
clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(SwaggerOptionsProvider.SORT_PARAMS_VALUE));
3030
times = 1;
31+
clientCodegen.setOutputFile(SwaggerOptionsProvider.OUTPUT_NAME);
32+
times = 1;
3133
}};
3234
}
3335
}

modules/swagger-codegen/src/test/java/io/swagger/codegen/swaggeryaml/SwaggerYamlOptionsTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ protected void setExpectations() {
2828
new Expectations(clientCodegen) {{
2929
clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(SwaggerYamlOptionsProvider.SORT_PARAMS_VALUE));
3030
times = 1;
31+
clientCodegen.setOutputFile(SwaggerYamlOptionsProvider.OUTPUT_NAME);
32+
times = 1;
3133
}};
3234
}
3335
}

0 commit comments

Comments
 (0)