forked from loafle/openapi-generator-original
Added 'modelPropertyNaming' option for Scala (#3685)
* Closed #3675 1. Added 'modelPropertyNaming' option for scala 2. Executed ./bin/scala-petstore.sh (no changes). * Removed unwanted code #3675
This commit is contained in:
parent
062e6fc3ac
commit
e7ec360ba8
@ -29,6 +29,7 @@ import java.util.Map;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
protected String modelPropertyNaming= "camelCase";
|
||||||
protected String invokerPackage = "io.swagger.client";
|
protected String invokerPackage = "io.swagger.client";
|
||||||
protected String groupId = "io.swagger";
|
protected String groupId = "io.swagger";
|
||||||
protected String artifactId = "swagger-scala-client";
|
protected String artifactId = "swagger-scala-client";
|
||||||
@ -136,6 +137,44 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
|
|
||||||
cliOptions.add(new CliOption(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC));
|
cliOptions.add(new CliOption(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC));
|
||||||
cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC));
|
cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC));
|
||||||
|
cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void processOpts() {
|
||||||
|
super.processOpts();
|
||||||
|
|
||||||
|
if (additionalProperties.containsKey(CodegenConstants.MODEL_PROPERTY_NAMING)) {
|
||||||
|
setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModelPropertyNaming(String naming) {
|
||||||
|
if ("original".equals(naming) || "camelCase".equals(naming) ||
|
||||||
|
"PascalCase".equals(naming) || "snake_case".equals(naming)) {
|
||||||
|
this.modelPropertyNaming = naming;
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Invalid model property naming '" +
|
||||||
|
naming + "'. Must be 'original', 'camelCase', " +
|
||||||
|
"'PascalCase' or 'snake_case'");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getModelPropertyNaming() {
|
||||||
|
return this.modelPropertyNaming;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNameUsingModelPropertyNaming(String name) {
|
||||||
|
switch (CodegenConstants.MODEL_PROPERTY_NAMING_TYPE.valueOf(getModelPropertyNaming())) {
|
||||||
|
case original: return name;
|
||||||
|
case camelCase: return camelize(name, true);
|
||||||
|
case PascalCase: return camelize(name);
|
||||||
|
case snake_case: return underscore(name);
|
||||||
|
default: throw new IllegalArgumentException("Invalid model property naming '" +
|
||||||
|
name + "'. Must be 'original', 'camelCase', " +
|
||||||
|
"'PascalCase' or 'snake_case'");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -287,9 +326,7 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
// camelize (lower first character) the variable name
|
name = getNameUsingModelPropertyNaming(name);
|
||||||
// pet_id => petId
|
|
||||||
name = camelize(name, true);
|
|
||||||
|
|
||||||
// for reserved word or word starting with number, append _
|
// for reserved word or word starting with number, append _
|
||||||
if (isReservedWord(name) || name.matches("^\\d.*")) {
|
if (isReservedWord(name) || name.matches("^\\d.*")) {
|
||||||
|
@ -11,6 +11,7 @@ public class ScalaClientOptionsProvider implements OptionsProvider {
|
|||||||
public static final String API_PACKAGE_VALUE = "apiPackage";
|
public static final String API_PACKAGE_VALUE = "apiPackage";
|
||||||
public static final String SORT_PARAMS_VALUE = "false";
|
public static final String SORT_PARAMS_VALUE = "false";
|
||||||
public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true";
|
public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true";
|
||||||
|
public static final String MODEL_PROPERTY_NAMING = "modelPropertyNaming";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getLanguage() {
|
public String getLanguage() {
|
||||||
@ -24,6 +25,7 @@ public class ScalaClientOptionsProvider implements OptionsProvider {
|
|||||||
.put(CodegenConstants.API_PACKAGE, API_PACKAGE_VALUE)
|
.put(CodegenConstants.API_PACKAGE, API_PACKAGE_VALUE)
|
||||||
.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE)
|
.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE)
|
||||||
.put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE)
|
.put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE)
|
||||||
|
.put(CodegenConstants.MODEL_PROPERTY_NAMING, MODEL_PROPERTY_NAMING)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,8 @@ public class ScalaClientOptionsTest extends AbstractOptionsTest {
|
|||||||
times = 1;
|
times = 1;
|
||||||
clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(ScalaClientOptionsProvider.SORT_PARAMS_VALUE));
|
clientCodegen.setSortParamsByRequiredFlag(Boolean.valueOf(ScalaClientOptionsProvider.SORT_PARAMS_VALUE));
|
||||||
times = 1;
|
times = 1;
|
||||||
|
clientCodegen.setModelPropertyNaming(ScalaClientOptionsProvider.MODEL_PROPERTY_NAMING);
|
||||||
|
times = 1;
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user