mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-06-28 19:50:49 +00:00
Merge remote-tracking branch 'main/master' into jmaster
This commit is contained in:
commit
e23626b05c
@ -8,6 +8,7 @@ public class CodegenModel {
|
|||||||
public String parent, parentSchema;
|
public String parent, parentSchema;
|
||||||
public String name, classname, description, classVarName, modelJson, dataType;
|
public String name, classname, description, classVarName, modelJson, dataType;
|
||||||
public String unescapedDescription;
|
public String unescapedDescription;
|
||||||
|
public String discriminator;
|
||||||
public String defaultValue;
|
public String defaultValue;
|
||||||
public List<CodegenProperty> vars = new ArrayList<CodegenProperty>();
|
public List<CodegenProperty> vars = new ArrayList<CodegenProperty>();
|
||||||
public List<String> allowableValues;
|
public List<String> allowableValues;
|
||||||
|
@ -881,6 +881,10 @@ public class DefaultCodegen {
|
|||||||
m.externalDocs = model.getExternalDocs();
|
m.externalDocs = model.getExternalDocs();
|
||||||
m.vendorExtensions = model.getVendorExtensions();
|
m.vendorExtensions = model.getVendorExtensions();
|
||||||
|
|
||||||
|
if (model instanceof ModelImpl) {
|
||||||
|
m.discriminator = ((ModelImpl) model).getDiscriminator();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (model instanceof ArrayModel) {
|
if (model instanceof ArrayModel) {
|
||||||
ArrayModel am = (ArrayModel) model;
|
ArrayModel am = (ArrayModel) model;
|
||||||
|
@ -16,6 +16,31 @@
|
|||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{{#discriminator}}
|
||||||
|
/**
|
||||||
|
Maps "discriminator" value to the sub-class name, so that inheritance is supported.
|
||||||
|
*/
|
||||||
|
- (id)initWithDictionary:(NSDictionary *)dict error:(NSError *__autoreleasing *)err {
|
||||||
|
|
||||||
|
|
||||||
|
NSString * discriminatedClassName = [dict valueForKey:@"{{discriminator}}"];
|
||||||
|
|
||||||
|
if(discriminatedClassName == nil ){
|
||||||
|
return [super initWithDictionary:dict error:err];
|
||||||
|
}
|
||||||
|
|
||||||
|
Class class = NSClassFromString([@"{{classPrefix}}" stringByAppendingString:discriminatedClassName]);
|
||||||
|
|
||||||
|
if([self class ] == class) {
|
||||||
|
return [super initWithDictionary:dict error:err];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return [[class alloc] initWithDictionary:dict error: err];
|
||||||
|
|
||||||
|
}
|
||||||
|
{{/discriminator}}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maps json key to property name.
|
* Maps json key to property name.
|
||||||
* This method is used by `JSONModel`.
|
* This method is used by `JSONModel`.
|
||||||
|
@ -35,7 +35,8 @@ public class ObjcModelTest {
|
|||||||
.property("name", new StringProperty())
|
.property("name", new StringProperty())
|
||||||
.property("createdAt", new DateTimeProperty())
|
.property("createdAt", new DateTimeProperty())
|
||||||
.required("id")
|
.required("id")
|
||||||
.required("name");
|
.required("name")
|
||||||
|
.discriminator("test");
|
||||||
final DefaultCodegen codegen = new ObjcClientCodegen();
|
final DefaultCodegen codegen = new ObjcClientCodegen();
|
||||||
final CodegenModel cm = codegen.fromModel("sample", model);
|
final CodegenModel cm = codegen.fromModel("sample", model);
|
||||||
|
|
||||||
@ -43,6 +44,7 @@ public class ObjcModelTest {
|
|||||||
Assert.assertEquals(cm.classname, "SWGSample");
|
Assert.assertEquals(cm.classname, "SWGSample");
|
||||||
Assert.assertEquals(cm.description, "a sample model");
|
Assert.assertEquals(cm.description, "a sample model");
|
||||||
Assert.assertEquals(cm.vars.size(), 3);
|
Assert.assertEquals(cm.vars.size(), 3);
|
||||||
|
Assert.assertEquals(cm.discriminator,"test");
|
||||||
|
|
||||||
final CodegenProperty property1 = cm.vars.get(0);
|
final CodegenProperty property1 = cm.vars.get(0);
|
||||||
Assert.assertEquals(property1.baseName, "id");
|
Assert.assertEquals(property1.baseName, "id");
|
||||||
|
@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"swagger" : "2.0",
|
||||||
|
"info" : {},
|
||||||
|
"basePath" : "/v1",
|
||||||
|
"tags" : [ {
|
||||||
|
"name" : "pets",
|
||||||
|
"description" : "some pets"
|
||||||
|
}],
|
||||||
|
"paths" : {
|
||||||
|
"/pets" : {
|
||||||
|
"get" : {
|
||||||
|
"tags" : [ "pets" ],
|
||||||
|
"summary" : "Get your pets",
|
||||||
|
"description" : "Returns pets of different types",
|
||||||
|
"operationId" : "getPets",
|
||||||
|
"consumes" : [ "application/x-www-form-urlencoded" ],
|
||||||
|
"produces" : [ "application/json" ],
|
||||||
|
"parameters" : [ ],
|
||||||
|
"responses" : {
|
||||||
|
"200" : {
|
||||||
|
"description" : "successful operation",
|
||||||
|
"schema" : {
|
||||||
|
"$ref" : "#/definitions/Animal"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"409" : {
|
||||||
|
"description" : "User already has an account or an account request."
|
||||||
|
},
|
||||||
|
"500" : {
|
||||||
|
"description" : "Error creating the account request"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"definitions" : {
|
||||||
|
"Dog" : {
|
||||||
|
"allOf" : [ {
|
||||||
|
"$ref" : "#/definitions/Animal"
|
||||||
|
}, {
|
||||||
|
"type" : "object",
|
||||||
|
"properties" : {
|
||||||
|
"breed" : {
|
||||||
|
"type" : "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ]
|
||||||
|
},
|
||||||
|
"Cat" : {
|
||||||
|
"allOf" : [ {
|
||||||
|
"$ref" : "#/definitions/Animal"
|
||||||
|
}, {
|
||||||
|
"type" : "object",
|
||||||
|
"properties" : {
|
||||||
|
"declawed" : {
|
||||||
|
"type" : "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ]
|
||||||
|
},
|
||||||
|
"Animal" : {
|
||||||
|
"type" : "object",
|
||||||
|
"discriminator": "className",
|
||||||
|
"required": [
|
||||||
|
"className"
|
||||||
|
],
|
||||||
|
"properties" : {
|
||||||
|
"className" : {
|
||||||
|
"type" : "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user