Skip to content

Commit da321e9

Browse files
committed
read properties from allOf inline schemas
1 parent 3be9094 commit da321e9

File tree

4 files changed

+38
-37
lines changed

4 files changed

+38
-37
lines changed

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ public abstract class DefaultCodegenConfig implements CodegenConfig {
174174

175175
protected String ignoreFilePathOverride;
176176
protected boolean useOas2 = false;
177-
protected boolean copyFistAllOfProperties = false;
178177
protected boolean ignoreImportMapping;
179178

180179
public List<CliOption> cliOptions() {
@@ -1406,29 +1405,24 @@ else if (schema instanceof ComposedSchema) {
14061405
final String parentName = getParentName(composed);
14071406
final Schema parent = StringUtils.isBlank(parentName) ? null : allDefinitions.get(parentName);
14081407
final List<Schema> allOf = composed.getAllOf();
1409-
// interfaces (intermediate models)
14101408
if (allOf != null && !allOf.isEmpty()) {
1411-
for (int i = 0; i < allOf.size(); i++) {
1412-
if (i == 0 && !copyFistAllOfProperties) {
1413-
continue;
1414-
}
1415-
Schema interfaceSchema = allOf.get(i);
1416-
if (StringUtils.isBlank(interfaceSchema.get$ref())) {
1417-
continue;
1418-
}
1419-
Schema refSchema = null;
1420-
String ref = OpenAPIUtil.getSimpleRef(interfaceSchema.get$ref());
1421-
if (allDefinitions != null) {
1422-
refSchema = allDefinitions.get(ref);
1409+
final int index = copyFirstAllOfProperties(allOf.get(0)) ? 0 : 1;
1410+
for (int i = index; i < allOf.size(); i++) {
1411+
Schema allOfSchema = allOf.get(i);
1412+
if (StringUtils.isNotBlank(allOfSchema.get$ref())) {
1413+
String ref = OpenAPIUtil.getSimpleRef(allOfSchema.get$ref());
1414+
if (allDefinitions != null) {
1415+
allOfSchema = allDefinitions.get(ref);
1416+
}
1417+
final String modelName = toModelName(ref);
1418+
addImport(codegenModel, modelName);
14231419
}
1424-
final String modelName = toModelName(ref);
1425-
addImport(codegenModel, modelName);
1426-
if (allDefinitions != null && refSchema != null) {
1420+
if (allDefinitions != null && allOfSchema != null) {
14271421
if (!supportsMixins) {
1428-
addProperties(properties, required, refSchema, allDefinitions);
1422+
addProperties(properties, required, allOfSchema, allDefinitions);
14291423
}
14301424
if (supportsInheritance) {
1431-
addProperties(allProperties, allRequired, refSchema, allDefinitions);
1425+
addProperties(allProperties, allRequired, allOfSchema, allDefinitions);
14321426
}
14331427
}
14341428
}
@@ -1477,6 +1471,11 @@ else if (schema instanceof ComposedSchema) {
14771471
return codegenModel;
14781472
}
14791473

1474+
protected boolean copyFirstAllOfProperties(Schema allOfSchema) {
1475+
return StringUtils.isBlank(allOfSchema.get$ref())
1476+
&& allOfSchema.getProperties() != null && !allOfSchema.getProperties().isEmpty();
1477+
}
1478+
14801479
protected void processMapSchema(CodegenModel codegenModel, String name, Schema schema) {
14811480
codegenModel.getVendorExtensions().put(CodegenConstants.IS_MAP_CONTAINER_EXT_NAME, Boolean.TRUE);
14821481
codegenModel.getVendorExtensions().put(IS_CONTAINER_EXT_NAME, Boolean.TRUE);

src/main/java/io/swagger/codegen/v3/generators/swift/Swift5Codegen.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ public void processOpts() {
254254
if (StringUtils.isBlank(templateDir)) {
255255
embeddedTemplateDir = templateDir = getTemplateDir();
256256
}
257-
257+
258258
// Setup project name
259259
if (additionalProperties.containsKey(PROJECT_NAME)) {
260260
setProjectName((String) additionalProperties.get(PROJECT_NAME));
@@ -348,9 +348,6 @@ public void processOpts() {
348348
supportingFiles.add(new SupportingFile("gitignore.mustache",
349349
"",
350350
".gitignore"));
351-
352-
copyFistAllOfProperties = true;
353-
354351
}
355352

356353
@Override
@@ -852,5 +849,10 @@ private static void reconcileProperties(CodegenModel codegenModel,
852849
codegenModel.vars = codegenProperties;
853850
}
854851
}
852+
853+
@Override
854+
protected boolean copyFirstAllOfProperties(Schema allOfSchema) {
855+
return false;
856+
}
855857
}
856858

src/main/resources/handlebars/Java/libraries/resteasy/api.mustache

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {{invokerPackage}}.Configuration;
66
import {{invokerPackage}}.Pair;
77

88
{{#jakarta}}
9-
import jakarta.ws.rs.core.GenericType;
9+
import jakarta.ws.rs.core.GenericType;
1010
{{/jakarta}}
1111
{{^jakarta}}
12-
import javax.ws.rs.core.GenericType;
12+
import javax.ws.rs.core.GenericType;
1313
{{/jakarta}}
1414

1515
{{#imports}}import {{import}};
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{{#jackson}}
2-
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true )
3-
@JsonSubTypes({
4-
{{#if discriminator.mapping}}
5-
{{#each discriminator.mapping}}
6-
@JsonSubTypes.Type(value = {{this}}.class, name = "{{@key}}"),
7-
{{/each}}
8-
{{else}}
9-
{{#children}}
10-
@JsonSubTypes.Type(value = {{classname}}.class, name = "{{name}}"),
11-
{{/children}}
12-
{{/if}}
13-
})
2+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "{{discriminator.propertyName}}", visible = true )
3+
@JsonSubTypes({
4+
{{#if discriminator.mapping}}
5+
{{#each discriminator.mapping}}
6+
@JsonSubTypes.Type(value = {{this}}.class, name = "{{@key}}"),
7+
{{/each}}
8+
{{else}}
9+
{{#children}}
10+
@JsonSubTypes.Type(value = {{classname}}.class, name = "{{name}}"),
11+
{{/children}}
12+
{{/if}}
13+
})
1414
{{/jackson}}

0 commit comments

Comments
 (0)