Skip to content

Commit 0e8a5b9

Browse files
committed
[feature] Prefix and Suffix for generated models
see swagger-api#1255
1 parent 2416a6a commit 0e8a5b9

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
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/DefaultCodegen.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,14 @@ public void processOpts() {
108108
this.setEnsureUniqueParams(Boolean.valueOf(additionalProperties
109109
.get(CodegenConstants.ENSURE_UNIQUE_PARAMS).toString()));
110110
}
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+
}
111119
}
112120

113121
// override with any special post-processing for all models
@@ -284,6 +292,14 @@ public void setModelPackage(String modelPackage) {
284292
this.modelPackage = modelPackage;
285293
}
286294

295+
public void setModelNamePrefix(String modelNamePrefix){
296+
this.modelNamePrefix = modelNamePrefix;
297+
}
298+
299+
public void setModelNameSuffix(String modelNameSuffix){
300+
this.modelNameSuffix = modelNameSuffix;
301+
}
302+
287303
public void setApiPackage(String apiPackage) {
288304
this.apiPackage = apiPackage;
289305
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,8 @@ public ClientOptInput toClientOptInput() {
320320
checkAndSetAdditionalProperty(artifactId, CodegenConstants.ARTIFACT_ID);
321321
checkAndSetAdditionalProperty(artifactVersion, CodegenConstants.ARTIFACT_VERSION);
322322
checkAndSetAdditionalProperty(templateDir, toAbsolutePathStr(templateDir), CodegenConstants.TEMPLATE_DIR);
323+
checkAndSetAdditionalProperty(modelNamePrefix, CodegenConstants.MODEL_NAME_PREFIX);
324+
checkAndSetAdditionalProperty(modelNameSuffix, CodegenConstants.MODEL_NAME_SUFFIX);
323325

324326
handleDynamicProperties(config);
325327

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
public abstract class AbstractCSharpCodegen extends DefaultCodegen implements CodegenConfig {
1313

14+
private String modelPrefix = "";
15+
private String modelSuffix = "";
16+
1417
protected boolean optionalAssemblyInfoFlag = true;
1518
protected boolean optionalProjectFileFlag = false;
1619
protected boolean optionalMethodArgumentFlag = true;
@@ -189,6 +192,14 @@ public void processOpts() {
189192
if (additionalProperties.containsKey(CodegenConstants.RETURN_ICOLLECTION)) {
190193
setReturnICollection(Boolean.valueOf(additionalProperties.get(CodegenConstants.RETURN_ICOLLECTION).toString()));
191194
}
195+
196+
if (additionalProperties.containsKey(CodegenConstants.MODEL_NAME_PREFIX)){
197+
modelPrefix = (String) additionalProperties.get(CodegenConstants.MODEL_NAME_PREFIX);
198+
}
199+
200+
if (additionalProperties.containsKey(CodegenConstants.MODEL_NAME_SUFFIX)){
201+
modelSuffix = (String) additionalProperties.get(CodegenConstants.MODEL_NAME_SUFFIX);
202+
}
192203
}
193204

194205
@Override
@@ -467,7 +478,7 @@ public String getTypeDeclaration(Property p) {
467478

468479
@Override
469480
public String toModelName(String name) {
470-
name = sanitizeName(name);
481+
name = sanitizeName(modelNamePrefix + name + modelNameSuffix);
471482

472483
// model name cannot use reserved keyword, e.g. return
473484
if (reservedWords.contains(name)) {

0 commit comments

Comments
 (0)