Skip to content

Commit 90d1e28

Browse files
committed
Merge pull request #1805 from lugaru1234/options-default-value
Default values have been added to the boolean options
2 parents 563cabe + b88e96a commit 90d1e28

File tree

9 files changed

+77
-25
lines changed

9 files changed

+77
-25
lines changed

modules/swagger-codegen/src/main/java/io/swagger/codegen/CliOption.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.swagger.codegen;
22

33
import io.swagger.annotations.ApiModelProperty;
4+
import io.swagger.models.properties.BooleanProperty;
45
import io.swagger.models.properties.StringProperty;
56

67
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -78,6 +79,14 @@ public void setEnum(Map<String, String> enumValues) {
7879
this.enumValues = enumValues;
7980
}
8081

82+
public static CliOption newBoolean(String opt, String description) {
83+
return new CliOption(opt, description, BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString());
84+
}
85+
86+
public static CliOption newString(String opt, String description) {
87+
return new CliOption(opt, description, StringProperty.TYPE);
88+
}
89+
8190
@JsonIgnore
8291
public String getOptionHelp() {
8392
StringBuilder sb = new StringBuilder(description);

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class CodegenConstants {
3838
public static final String SERIALIZABLE_MODEL_DESC = "boolean - toggle \"implements Serializable\" for generated models";
3939

4040
public static final String SERIALIZE_BIG_DECIMAL_AS_STRING = "bigDecimalAsString";
41-
public static final String SERIALIZE_BIG_DECIMAL_AS_STRING_DESC = "boolean - treat BigDecimal values as Strings to avoid precision loss. Default: false";
41+
public static final String SERIALIZE_BIG_DECIMAL_AS_STRING_DESC = "Treat BigDecimal values as Strings to avoid precision loss.";
4242

4343
public static final String LIBRARY = "library";
4444
public static final String LIBRARY_DESC = "library template (sub-template)";

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -439,11 +439,10 @@ public DefaultCodegen() {
439439
importMapping.put("LocalDate", "org.joda.time.*");
440440
importMapping.put("LocalTime", "org.joda.time.*");
441441

442-
cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
443-
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE)
444-
.defaultValue(Boolean.TRUE.toString()));
445-
cliOptions.add(new CliOption(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants.ENSURE_UNIQUE_PARAMS_DESC,
446-
BooleanProperty.TYPE).defaultValue(Boolean.TRUE.toString()));
442+
cliOptions.add(CliOption.newBoolean(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
443+
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
444+
cliOptions.add(CliOption.newBoolean(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants
445+
.ENSURE_UNIQUE_PARAMS_DESC).defaultValue(Boolean.TRUE.toString()));
447446
}
448447

449448
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ public AndroidClientCodegen() {
6868
cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_ID, "artifactId for use in the generated build.gradle and pom.xml"));
6969
cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, "artifact version for use in the generated build.gradle and pom.xml"));
7070
cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC));
71-
cliOptions.add(new CliOption(USE_ANDROID_MAVEN_GRADLE_PLUGIN, "A flag to toggle android-maven gradle plugin.",
72-
BooleanProperty.TYPE).defaultValue(Boolean.TRUE.toString()));
71+
cliOptions.add(CliOption.newBoolean(USE_ANDROID_MAVEN_GRADLE_PLUGIN, "A flag to toggle android-maven gradle plugin.")
72+
.defaultValue(Boolean.TRUE.toString()));
7373
}
7474

7575
@Override

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,10 @@ public CSharpClientCodegen() {
9494
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "C# package name (convention: Camel.Case).")
9595
.defaultValue("IO.Swagger"));
9696
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "C# package version.").defaultValue("1.0.0"));
97-
cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
98-
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE));
99-
cliOptions.add(new CliOption(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "C# Optional method argument, " +
100-
"e.g. void square(int x=10) (.net 4.0+ only).", BooleanProperty.TYPE)
101-
.defaultValue(Boolean.FALSE.toString()));
97+
cliOptions.add(CliOption.newBoolean(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
98+
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
99+
cliOptions.add(CliOption.newBoolean(CodegenConstants.OPTIONAL_METHOD_ARGUMENT, "C# Optional method argument, " +
100+
"e.g. void square(int x=10) (.net 4.0+ only)."));
102101
}
103102

104103
@Override

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,10 @@ public JavaClientCodegen() {
7676
cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, CodegenConstants.ARTIFACT_VERSION_DESC));
7777
cliOptions.add(new CliOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC));
7878
cliOptions.add(new CliOption(CodegenConstants.LOCAL_VARIABLE_PREFIX, CodegenConstants.LOCAL_VARIABLE_PREFIX_DESC));
79-
cliOptions.add(new CliOption(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC,
80-
BooleanProperty.TYPE));
81-
cliOptions.add(new CliOption(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING_DESC,
82-
BooleanProperty.TYPE));
83-
cliOptions.add(new CliOption(FULL_JAVA_UTIL, "whether to use fully qualified name for classes under java.util",
84-
BooleanProperty.TYPE).defaultValue(Boolean.FALSE.toString()));
79+
cliOptions.add(CliOption.newBoolean(CodegenConstants.SERIALIZABLE_MODEL, CodegenConstants.SERIALIZABLE_MODEL_DESC));
80+
cliOptions.add(CliOption.newBoolean(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, CodegenConstants
81+
.SERIALIZE_BIG_DECIMAL_AS_STRING_DESC));
82+
cliOptions.add(CliOption.newBoolean(FULL_JAVA_UTIL, "whether to use fully qualified name for classes under java.util"));
8583

8684
supportedLibraries.put(DEFAULT_LIBRARY, "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2");
8785
supportedLibraries.put("feign", "HTTP client: Netflix Feign 8.1.1");

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,10 @@ public PerlClientCodegen() {
7474
cliOptions.clear();
7575
cliOptions.add(new CliOption(MODULE_NAME, "Perl module name (convention: CamelCase).").defaultValue("SwaggerClient"));
7676
cliOptions.add(new CliOption(MODULE_VERSION, "Perl module version.").defaultValue("1.0.0"));
77-
cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
78-
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE));
79-
cliOptions.add(new CliOption(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants.ENSURE_UNIQUE_PARAMS_DESC,
80-
BooleanProperty.TYPE));
77+
cliOptions.add(CliOption.newBoolean(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
78+
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
79+
cliOptions.add(CliOption.newBoolean(CodegenConstants.ENSURE_UNIQUE_PARAMS, CodegenConstants
80+
.ENSURE_UNIQUE_PARAMS_DESC).defaultValue(Boolean.TRUE.toString()));
8181

8282
}
8383

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ public PythonClientCodegen() {
6565
.defaultValue("swagger_client"));
6666
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_VERSION, "python package version.")
6767
.defaultValue("1.0.0"));
68-
cliOptions.add(new CliOption(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
69-
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC, BooleanProperty.TYPE));
68+
cliOptions.add(CliOption.newBoolean(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG,
69+
CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG_DESC).defaultValue(Boolean.TRUE.toString()));
7070
}
7171

7272
@Override
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package io.swagger.codegen.languages;
2+
3+
import io.swagger.codegen.CliOption;
4+
import io.swagger.codegen.DefaultCodegen;
5+
import io.swagger.models.properties.BooleanProperty;
6+
import org.reflections.Reflections;
7+
import org.testng.Assert;
8+
import org.testng.annotations.DataProvider;
9+
import org.testng.annotations.Test;
10+
11+
import java.lang.reflect.Modifier;
12+
import java.util.ArrayList;
13+
import java.util.Iterator;
14+
import java.util.List;
15+
16+
public class BooleanOptionsTest {
17+
private static final String OPTIONS_PROVIDER = "Codegen";
18+
19+
@DataProvider(name = OPTIONS_PROVIDER)
20+
private Iterator<Object[]> listOptions() throws IllegalAccessException, InstantiationException {
21+
final String packageName = "io.swagger.codegen.languages";
22+
final Reflections reflections = new Reflections(packageName);
23+
final List<Object[]> codegenList = new ArrayList<Object[]>();
24+
25+
for (Class<? extends DefaultCodegen> codegen : reflections.getSubTypesOf(DefaultCodegen.class)) {
26+
if (!Modifier.isAbstract(codegen.getModifiers())) {
27+
codegenList.add((new Object[] {codegen.newInstance()}));
28+
}
29+
}
30+
if (codegenList.size() == 0) {
31+
Assert.fail(String.format("No classes for testing have been found in the package %s", packageName));
32+
}
33+
34+
return codegenList.iterator();
35+
}
36+
37+
@Test(dataProvider = OPTIONS_PROVIDER)
38+
public void booleanOptionsTest(DefaultCodegen codegen) {
39+
for (CliOption option : codegen.cliOptions()) {
40+
if (option.getType().equals(BooleanProperty.TYPE)) {
41+
Assert.assertNotNull(option.getDefault());
42+
Assert.assertTrue(option.getDefault().equals(Boolean.TRUE.toString()) ||
43+
option.getDefault().equals(Boolean.FALSE.toString()));
44+
}
45+
}
46+
}
47+
}

0 commit comments

Comments
 (0)