Skip to content

Commit ce83a90

Browse files
committed
Merge pull request #2211 from ePaul/feature/1255-suffix+prefix-for-model-name
Feature/1255 suffix+prefix for model name
2 parents 04ede6d + 36f7ffd commit ce83a90

File tree

6 files changed

+70
-11
lines changed

6 files changed

+70
-11
lines changed

modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ public class Generate implements Runnable {
7373
@Option(name = {"--model-package"}, title = "model package", description = CodegenConstants.MODEL_PACKAGE_DESC)
7474
private String modelPackage;
7575

76+
@Option(name = {"--model-name-prefix"}, title = "model name prefix", description = CodegenConstants.MODEL_NAME_PREFIX_DESC)
77+
private String modelNamePrefix;
78+
79+
@Option(name = {"--model-name-suffix"}, title = "model name suffix", description = CodegenConstants.MODEL_NAME_SUFFIX_DESC)
80+
private String modelNameSuffix;
81+
7682
@Option(name = {"--instantiation-types"}, title = "instantiation types", description = "sets instantiation type mappings in the format of type=instantiatedType,type=instantiatedType." +
7783
"For example (in Java): array=ArrayList,map=HashMap. In other words array types will get instantiated as ArrayList in generated code.")
7884
private String instantiationTypes;
@@ -156,6 +162,14 @@ public void run() {
156162
configurator.setModelPackage(modelPackage);
157163
}
158164

165+
if(isNotEmpty(modelNamePrefix)){
166+
configurator.setModelNamePrefix(modelNamePrefix);
167+
}
168+
169+
if(isNotEmpty(modelNameSuffix)){
170+
configurator.setModelNameSuffix(modelNameSuffix);
171+
}
172+
159173
if(isNotEmpty(invokerPackage)) {
160174
configurator.setInvokerPackage(invokerPackage);
161175
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,9 @@ public class CodegenConstants {
8282

8383
public static enum MODEL_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, original}
8484

85+
public static final String MODEL_NAME_PREFIX = "modelNamePrefix";
86+
public static final String MODEL_NAME_PREFIX_DESC = "Prefix that will be prepended to all model names. Default is the empty string.";
87+
88+
public static final String MODEL_NAME_SUFFIX = "modelNameSuffix";
89+
public static final String MODEL_NAME_SUFFIX_DESC = "Suffix that will be appended to all model names. Default is the empty string.";
8590
}

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class DefaultCodegen {
6363
protected Set<String> languageSpecificPrimitives = new HashSet<String>();
6464
protected Map<String, String> importMapping = new HashMap<String, String>();
6565
protected String modelPackage = "", apiPackage = "", fileSuffix;
66+
protected String modelNamePrefix = "", modelNameSuffix = "";
6667
protected String testPackage = "";
6768
protected Map<String, String> apiTemplateFiles = new HashMap<String, String>();
6869
protected Map<String, String> modelTemplateFiles = new HashMap<String, String>();
@@ -107,6 +108,14 @@ public void processOpts() {
107108
this.setEnsureUniqueParams(Boolean.valueOf(additionalProperties
108109
.get(CodegenConstants.ENSURE_UNIQUE_PARAMS).toString()));
109110
}
111+
112+
if(additionalProperties.containsKey(CodegenConstants.MODEL_NAME_PREFIX)){
113+
this.setModelNamePrefix((String) additionalProperties.get(CodegenConstants.MODEL_NAME_PREFIX));
114+
}
115+
116+
if(additionalProperties.containsKey(CodegenConstants.MODEL_NAME_SUFFIX)){
117+
this.setModelNameSuffix((String) additionalProperties.get(CodegenConstants.MODEL_NAME_SUFFIX));
118+
}
110119
}
111120

112121
// override with any special post-processing for all models
@@ -283,6 +292,14 @@ public void setModelPackage(String modelPackage) {
283292
this.modelPackage = modelPackage;
284293
}
285294

295+
public void setModelNamePrefix(String modelNamePrefix){
296+
this.modelNamePrefix = modelNamePrefix;
297+
}
298+
299+
public void setModelNameSuffix(String modelNameSuffix){
300+
this.modelNameSuffix = modelNameSuffix;
301+
}
302+
286303
public void setApiPackage(String apiPackage) {
287304
this.apiPackage = apiPackage;
288305
}
@@ -826,8 +843,8 @@ public String toApiName(String name) {
826843
* @param name the name of the model
827844
* @return capitalized model name
828845
*/
829-
public String toModelName(String name) {
830-
return initialCaps(name);
846+
public String toModelName(final String name) {
847+
return initialCaps(modelNamePrefix + name + modelNameSuffix);
831848
}
832849

833850
/**

modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public class CodegenConfigurator {
4848
private String apiPackage;
4949
private String modelPackage;
5050
private String invokerPackage;
51+
private String modelNamePrefix;
52+
private String modelNameSuffix;
5153
private String groupId;
5254
private String artifactId;
5355
private String artifactVersion;
@@ -97,6 +99,24 @@ public CodegenConfigurator setModelPackage(String modelPackage) {
9799
return this;
98100
}
99101

102+
public String getModelNamePrefix() {
103+
return modelNamePrefix;
104+
}
105+
106+
public CodegenConfigurator setModelNamePrefix(String prefix) {
107+
this.modelNamePrefix = prefix;
108+
return this;
109+
}
110+
111+
public String getModelNameSuffix() {
112+
return modelNameSuffix;
113+
}
114+
115+
public CodegenConfigurator setModelNameSuffix(String suffix) {
116+
this.modelNameSuffix = suffix;
117+
return this;
118+
}
119+
100120
public boolean isVerbose() {
101121
return verbose;
102122
}
@@ -300,6 +320,8 @@ public ClientOptInput toClientOptInput() {
300320
checkAndSetAdditionalProperty(artifactId, CodegenConstants.ARTIFACT_ID);
301321
checkAndSetAdditionalProperty(artifactVersion, CodegenConstants.ARTIFACT_VERSION);
302322
checkAndSetAdditionalProperty(templateDir, toAbsolutePathStr(templateDir), CodegenConstants.TEMPLATE_DIR);
323+
checkAndSetAdditionalProperty(modelNamePrefix, CodegenConstants.MODEL_NAME_PREFIX);
324+
checkAndSetAdditionalProperty(modelNameSuffix, CodegenConstants.MODEL_NAME_SUFFIX);
303325

304326
handleDynamicProperties(config);
305327

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ public String getTypeDeclaration(Property p) {
468468

469469
@Override
470470
public String toModelName(String name) {
471-
name = sanitizeName(name);
471+
name = sanitizeName(modelNamePrefix + name + modelNameSuffix);
472472

473473
// model name cannot use reserved keyword, e.g. return
474474
if (isReservedWord(name)) {

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -376,21 +376,21 @@ public String toParamName(String name) {
376376
}
377377

378378
@Override
379-
public String toModelName(String name) {
380-
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
379+
public String toModelName(final String name) {
380+
final String sanitizedName = sanitizeName(modelNamePrefix + name + modelNameSuffix);
381381

382382
// camelize the model name
383383
// phone_number => PhoneNumber
384-
name = camelize(name);
384+
final String camelizedName = camelize(sanitizedName);
385385

386386
// model name cannot use reserved keyword, e.g. return
387-
if (isReservedWord(name)) {
388-
String modelName = "Object" + name;
389-
LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + modelName);
387+
if (isReservedWord(camelizedName)) {
388+
final String modelName = "Object" + camelizedName;
389+
LOGGER.warn(camelizedName + " (reserved word) cannot be used as model name. Renamed to " + modelName);
390390
return modelName;
391391
}
392392

393-
return name;
393+
return camelizedName;
394394
}
395395

396396
@Override
@@ -486,7 +486,8 @@ public String getSwaggerType(Property p) {
486486
String type = null;
487487
if (typeMapping.containsKey(swaggerType)) {
488488
type = typeMapping.get(swaggerType);
489-
if (languageSpecificPrimitives.contains(type) || type.indexOf(".") >= 0) {
489+
if (languageSpecificPrimitives.contains(type) || type.indexOf(".") >= 0 ||
490+
type.equals("Map") || type.equals("List")) {
490491
return type;
491492
}
492493
} else {

0 commit comments

Comments
 (0)