Skip to content

Commit 32d9756

Browse files
authored
Merge pull request #548 from swagger-api/codegen-issue-9339-typescript
set composed schemas alias in order to fix issue
2 parents 81497c4 + 5757dbc commit 32d9756

File tree

4 files changed

+36
-5
lines changed

4 files changed

+36
-5
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,9 +1387,11 @@ else if (schema instanceof ComposedSchema) {
13871387
}
13881388
}
13891389
if (oneOf != null && !oneOf.isEmpty()) {
1390+
codegenModel.dataType = getSchemaType(composed);
13901391
this.schemaHandler.configureOneOfModel(codegenModel, oneOf);
13911392
}
13921393
if (anyOf != null && !anyOf.isEmpty()) {
1394+
codegenModel.dataType = getSchemaType(composed);
13931395
this.schemaHandler.configureAnyOfModel(codegenModel, anyOf);
13941396
}
13951397
if (parent != null) {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import io.swagger.codegen.v3.CodegenProperty;
77
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
88
import io.swagger.v3.oas.models.media.ComposedSchema;
9-
import io.swagger.v3.oas.models.media.ObjectSchema;
109
import io.swagger.v3.oas.models.media.Schema;
1110
import org.apache.commons.lang3.StringUtils;
1211

@@ -15,7 +14,7 @@
1514

1615
public class SchemaHandler {
1716

18-
private DefaultCodegenConfig codegenConfig;
17+
protected DefaultCodegenConfig codegenConfig;
1918

2019
public SchemaHandler(DefaultCodegenConfig codegenConfig) {
2120
this.codegenConfig = codegenConfig;

src/main/java/io/swagger/codegen/v3/generators/typescript/AbstractTypeScriptClientCodegen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ public AbstractTypeScriptClientCodegen() {
114114
cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase"));
115115
cliOptions.add(new CliOption(CodegenConstants.SUPPORTS_ES6, CodegenConstants.SUPPORTS_ES6_DESC).defaultValue("false"));
116116

117+
schemaHandler = new TypeScriptSchemaHandler(this);
117118
}
118119

119120
@Override
@@ -242,7 +243,7 @@ public String getTypeDeclaration(Schema propertySchema) {
242243
}
243244

244245
@Override
245-
protected void addImport(CodegenModel codegenModel, String type) {
246+
public void addImport(CodegenModel codegenModel, String type) {
246247
if (type == null) {
247248
return;
248249
}
@@ -286,9 +287,9 @@ public String toDefaultValue(Schema propertySchema) {
286287
}
287288

288289
@Override
289-
public String getSchemaType(Schema schema) {
290+
public String getSchemaType(Schema schema) {
290291
String swaggerType = super.getSchemaType(schema);
291-
if (swaggerType == null && schema instanceof ComposedSchema) {
292+
if (schema instanceof ComposedSchema) {
292293
ComposedSchema composedSchema = (ComposedSchema)schema;
293294
if (composedSchema.getAllOf() != null && !composedSchema.getAllOf().isEmpty()) {
294295
return String.join(" & ", getTypesFromInterfaces(composedSchema.getAllOf()));
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package io.swagger.codegen.v3.generators.typescript;
2+
3+
import io.swagger.codegen.v3.CodegenConstants;
4+
import io.swagger.codegen.v3.CodegenModel;
5+
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
6+
import io.swagger.codegen.v3.generators.SchemaHandler;
7+
import io.swagger.v3.oas.models.media.Schema;
8+
9+
import java.util.List;
10+
11+
public class TypeScriptSchemaHandler extends SchemaHandler {
12+
13+
private AbstractTypeScriptClientCodegen codegenConfig;
14+
15+
public TypeScriptSchemaHandler(DefaultCodegenConfig codegenConfig) {
16+
super(codegenConfig);
17+
this.codegenConfig = (AbstractTypeScriptClientCodegen) codegenConfig;
18+
}
19+
20+
public void configureOneOfModel(CodegenModel codegenModel, List<Schema> oneOf) {
21+
codegenModel.getVendorExtensions().put(CodegenConstants.IS_ALIAS_EXT_NAME, Boolean.TRUE);
22+
this.codegenConfig.addImport(codegenModel, codegenModel.dataType);
23+
}
24+
25+
public void configureAnyOfModel(CodegenModel codegenModel, List<Schema> anyOf) {
26+
codegenModel.getVendorExtensions().put(CodegenConstants.IS_ALIAS_EXT_NAME, Boolean.TRUE);
27+
this.codegenConfig.addImport(codegenModel, codegenModel.dataType);
28+
}
29+
}

0 commit comments

Comments
 (0)