|
3 | 3 | import com.fasterxml.jackson.databind.JsonNode;
|
4 | 4 | import com.github.jknack.handlebars.Handlebars;
|
5 | 5 | import com.samskivert.mustache.Mustache;
|
6 |
| -import io.swagger.codegen.v3.CliOption; |
7 |
| -import io.swagger.codegen.v3.CodegenArgument; |
8 |
| -import io.swagger.codegen.v3.CodegenConfig; |
9 |
| -import io.swagger.codegen.v3.CodegenConstants; |
10 |
| -import io.swagger.codegen.v3.CodegenContent; |
11 |
| -import io.swagger.codegen.v3.CodegenModel; |
12 |
| -import io.swagger.codegen.v3.CodegenModelFactory; |
13 |
| -import io.swagger.codegen.v3.CodegenModelType; |
14 |
| -import io.swagger.codegen.v3.CodegenOperation; |
15 |
| -import io.swagger.codegen.v3.CodegenParameter; |
16 |
| -import io.swagger.codegen.v3.CodegenProperty; |
17 |
| -import io.swagger.codegen.v3.CodegenResponse; |
18 |
| -import io.swagger.codegen.v3.CodegenSecurity; |
19 |
| -import io.swagger.codegen.v3.ISchemaHandler; |
20 |
| -import io.swagger.codegen.v3.SupportingFile; |
| 6 | +import io.swagger.codegen.v3.*; |
21 | 7 | import io.swagger.codegen.v3.generators.examples.ExampleGenerator;
|
22 |
| -import io.swagger.codegen.v3.generators.handlebars.BaseItemsHelper; |
23 |
| -import io.swagger.codegen.v3.generators.handlebars.BracesHelper; |
24 |
| -import io.swagger.codegen.v3.generators.handlebars.HasHelper; |
25 |
| -import io.swagger.codegen.v3.generators.handlebars.HasNotHelper; |
26 |
| -import io.swagger.codegen.v3.generators.handlebars.IsHelper; |
27 |
| -import io.swagger.codegen.v3.generators.handlebars.IsNotHelper; |
28 |
| -import io.swagger.codegen.v3.generators.handlebars.NotEmptyHelper; |
29 |
| -import io.swagger.codegen.v3.generators.handlebars.StringUtilHelper; |
| 8 | +import io.swagger.codegen.v3.generators.handlebars.*; |
30 | 9 | import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
|
31 | 10 | import io.swagger.codegen.v3.templates.HandlebarTemplateEngine;
|
32 | 11 | import io.swagger.codegen.v3.templates.MustacheTemplateEngine;
|
|
38 | 17 | import io.swagger.v3.oas.models.Operation;
|
39 | 18 | import io.swagger.v3.oas.models.examples.Example;
|
40 | 19 | import io.swagger.v3.oas.models.headers.Header;
|
41 |
| -import io.swagger.v3.oas.models.media.ArraySchema; |
42 |
| -import io.swagger.v3.oas.models.media.BinarySchema; |
43 |
| -import io.swagger.v3.oas.models.media.BooleanSchema; |
44 |
| -import io.swagger.v3.oas.models.media.ByteArraySchema; |
45 |
| -import io.swagger.v3.oas.models.media.ComposedSchema; |
46 |
| -import io.swagger.v3.oas.models.media.Content; |
47 |
| -import io.swagger.v3.oas.models.media.DateSchema; |
48 |
| -import io.swagger.v3.oas.models.media.DateTimeSchema; |
49 |
| -import io.swagger.v3.oas.models.media.EmailSchema; |
50 |
| -import io.swagger.v3.oas.models.media.FileSchema; |
51 |
| -import io.swagger.v3.oas.models.media.IntegerSchema; |
52 |
| -import io.swagger.v3.oas.models.media.MapSchema; |
53 |
| -import io.swagger.v3.oas.models.media.MediaType; |
54 |
| -import io.swagger.v3.oas.models.media.NumberSchema; |
55 |
| -import io.swagger.v3.oas.models.media.ObjectSchema; |
56 |
| -import io.swagger.v3.oas.models.media.Schema; |
57 |
| -import io.swagger.v3.oas.models.media.StringSchema; |
58 |
| -import io.swagger.v3.oas.models.media.UUIDSchema; |
59 |
| -import io.swagger.v3.oas.models.parameters.CookieParameter; |
60 |
| -import io.swagger.v3.oas.models.parameters.HeaderParameter; |
61 |
| -import io.swagger.v3.oas.models.parameters.Parameter; |
62 |
| -import io.swagger.v3.oas.models.parameters.PathParameter; |
63 |
| -import io.swagger.v3.oas.models.parameters.QueryParameter; |
64 |
| -import io.swagger.v3.oas.models.parameters.RequestBody; |
| 20 | +import io.swagger.v3.oas.models.media.*; |
| 21 | +import io.swagger.v3.oas.models.parameters.*; |
65 | 22 | import io.swagger.v3.oas.models.responses.ApiResponse;
|
66 | 23 | import io.swagger.v3.oas.models.responses.ApiResponses;
|
67 | 24 | import io.swagger.v3.oas.models.security.OAuthFlow;
|
|
99 | 56 | import java.util.regex.Pattern;
|
100 | 57 | import java.util.stream.Collectors;
|
101 | 58 |
|
102 |
| -import static io.swagger.codegen.v3.CodegenConstants.HAS_ONLY_READ_ONLY_EXT_NAME; |
103 |
| -import static io.swagger.codegen.v3.CodegenConstants.HAS_OPTIONAL_EXT_NAME; |
104 |
| -import static io.swagger.codegen.v3.CodegenConstants.HAS_REQUIRED_EXT_NAME; |
105 |
| -import static io.swagger.codegen.v3.CodegenConstants.IS_ARRAY_MODEL_EXT_NAME; |
106 |
| -import static io.swagger.codegen.v3.CodegenConstants.IS_CONTAINER_EXT_NAME; |
107 |
| -import static io.swagger.codegen.v3.CodegenConstants.IS_ENUM_EXT_NAME; |
108 |
| -import static io.swagger.codegen.v3.generators.CodegenHelper.getDefaultIncludes; |
109 |
| -import static io.swagger.codegen.v3.generators.CodegenHelper.getImportMappings; |
110 |
| -import static io.swagger.codegen.v3.generators.CodegenHelper.getTypeMappings; |
111 |
| -import static io.swagger.codegen.v3.generators.CodegenHelper.initalizeSpecialCharacterMapping; |
| 59 | +import static io.swagger.codegen.v3.CodegenConstants.*; |
| 60 | +import static io.swagger.codegen.v3.generators.CodegenHelper.*; |
112 | 61 | import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
|
113 | 62 |
|
114 | 63 | public abstract class DefaultCodegenConfig implements CodegenConfig {
|
@@ -1345,9 +1294,7 @@ public CodegenModel fromModel(String name, Schema schema, Map<String, Schema> al
|
1345 | 1294 | codegenModel.getVendorExtensions().put(CodegenConstants.IS_ALIAS_EXT_NAME, typeAliases.containsKey(name));
|
1346 | 1295 |
|
1347 | 1296 | codegenModel.discriminator = schema.getDiscriminator();
|
1348 |
| - if (codegenModel.discriminator != null && codegenModel.discriminator.getPropertyName() != null) { |
1349 |
| - codegenModel.discriminator.setPropertyName(toVarName(codegenModel.discriminator.getPropertyName())); |
1350 |
| - } |
| 1297 | + |
1351 | 1298 |
|
1352 | 1299 | if (schema.getXml() != null) {
|
1353 | 1300 | codegenModel.xmlPrefix = schema.getXml().getPrefix();
|
@@ -1398,6 +1345,33 @@ else if (schema instanceof ComposedSchema) {
|
1398 | 1345 | }
|
1399 | 1346 | }
|
1400 | 1347 | }
|
| 1348 | + |
| 1349 | + if (codegenModel.discriminator != null && codegenModel.discriminator.getPropertyName() != null) { |
| 1350 | + codegenModel.discriminator.setPropertyName(toVarName(codegenModel.discriminator.getPropertyName())); |
| 1351 | + Map<String, String> classnameKeys = new HashMap<>(); |
| 1352 | + |
| 1353 | + if (composed.getOneOf()!=null) { |
| 1354 | + composed.getOneOf().forEach( s -> { |
| 1355 | + |
| 1356 | + codegenModel.discriminator.getMapping().keySet().stream().filter( key -> codegenModel.discriminator.getMapping().get(key).equals(s.get$ref())) |
| 1357 | + .forEach(key -> { |
| 1358 | + String mappingValue = codegenModel.discriminator.getMapping().get(key); |
| 1359 | + if (classnameKeys.containsKey(codegenModel.classname)) { |
| 1360 | + throw new IllegalArgumentException("Duplicate shema name in discriminator mapping"); |
| 1361 | + } |
| 1362 | + classnameKeys.put(toModelName(mappingValue.replace("#/components/schemas/", "")),key); |
| 1363 | + }); |
| 1364 | + |
| 1365 | + }); |
| 1366 | + |
| 1367 | + codegenModel.discriminator.getMapping().putAll(classnameKeys); |
| 1368 | + |
| 1369 | + } |
| 1370 | + |
| 1371 | + |
| 1372 | + } |
| 1373 | + |
| 1374 | + |
1401 | 1375 | } else {
|
1402 | 1376 | allProperties = null;
|
1403 | 1377 | allRequired = null;
|
|
0 commit comments