Skip to content

Commit fd7a80d

Browse files
authored
Merge pull request #10190 from swagger-api/issue-10187
avoid creation of classes from primitive types models
2 parents 644f313 + d79f421 commit fd7a80d

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ public void run() {
280280
}
281281

282282
if (skipAliasGeneration != null) {
283-
configurator.setSkipAliasGeneration(removeOperationIdPrefix);
283+
configurator.setSkipAliasGeneration(skipAliasGeneration);
284284
}
285285

286286
if (ignoreImportMappings != null) {

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3995,4 +3995,14 @@ public void setIgnoreImportMapping(boolean ignoreImportMapping) {
39953995
public boolean defaultIgnoreImportMappingOption() {
39963996
return false;
39973997
}
3998+
3999+
protected boolean isModelObject(ModelImpl model) {
4000+
if ("object".equalsIgnoreCase(model.getType())) {
4001+
return true;
4002+
}
4003+
if ((StringUtils.EMPTY.equalsIgnoreCase(model.getType()) || model.getType() == null) && (model.getProperties() != null && !model.getProperties().isEmpty())) {
4004+
return true;
4005+
}
4006+
return false;
4007+
}
39984008
}

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44
import com.samskivert.mustache.Mustache;
55
import io.swagger.codegen.*;
66
import io.swagger.models.Model;
7+
import io.swagger.models.ModelImpl;
8+
import io.swagger.models.Swagger;
79
import io.swagger.models.properties.ArrayProperty;
810
import io.swagger.models.properties.Property;
11+
import io.swagger.models.properties.PropertyBuilder;
12+
import io.swagger.models.properties.RefProperty;
13+
import org.apache.commons.lang3.StringUtils;
914
import org.slf4j.Logger;
1015
import org.slf4j.LoggerFactory;
1116

@@ -29,6 +34,8 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
2934
// Defines the sdk option for targeted frameworks, which differs from targetFramework and targetFrameworkNuget
3035
private static final String MCS_NET_VERSION_KEY = "x-mcs-sdk";
3136

37+
protected Swagger swagger;
38+
3239
protected String packageGuid = "{" + java.util.UUID.randomUUID().toString().toUpperCase() + "}";
3340
protected String clientPackage = "IO.Swagger.Client";
3441
protected String localVariablePrefix = "";
@@ -433,6 +440,10 @@ public void processOpts() {
433440

434441
additionalProperties.put("apiDocPath", apiDocPath);
435442
additionalProperties.put("modelDocPath", modelDocPath);
443+
444+
if (skipAliasGeneration == null) {
445+
skipAliasGeneration = true;
446+
}
436447
}
437448

438449
public void setModelPropertyNaming(String naming) {
@@ -477,6 +488,26 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
477488
return objs;
478489
}
479490

491+
@Override
492+
public String getSwaggerType(Property p) {
493+
String swaggerType = super.getSwaggerType(p);
494+
if (p instanceof RefProperty && this.swagger != null) {
495+
final Map<String, Model> allDefinitions = this.swagger.getDefinitions();
496+
final Model referencedModel = allDefinitions.get(swaggerType);
497+
if (referencedModel == null) {
498+
return swaggerType;
499+
}
500+
if (referencedModel instanceof ModelImpl) {
501+
final ModelImpl model = (ModelImpl) referencedModel;
502+
if (!this.isModelObject(model) && (model.getEnum() == null || model.getEnum().isEmpty())) {
503+
final Property property = PropertyBuilder.build(model.getType(), model.getFormat(), null);
504+
swaggerType = getSwaggerType(property);
505+
}
506+
}
507+
}
508+
return swaggerType;
509+
}
510+
480511
@Override
481512
public CodegenType getTag() {
482513
return CodegenType.CLIENT;
@@ -803,4 +834,9 @@ public Mustache.Compiler processCompiler(Mustache.Compiler compiler) {
803834
// To avoid unexpected behaviors when options are passed programmatically such as { "supportsAsync": "" }
804835
return super.processCompiler(compiler).emptyStringIsFalse(true);
805836
}
837+
838+
@Override
839+
public void preprocessSwagger(Swagger swagger) {
840+
this.swagger = swagger;
841+
}
806842
}

0 commit comments

Comments
 (0)