diff --git a/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/OpenAPI2TDLTranslatorNext.java b/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/OpenAPI2TDLTranslatorNext.java index d4cccf9e0c07d0cc3580e8cf8e44391bb165b4fb..2d7f94b7edafb6f1e1696a9d8e1992bb6fa6a520 100644 --- a/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/OpenAPI2TDLTranslatorNext.java +++ b/plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/OpenAPI2TDLTranslatorNext.java @@ -32,7 +32,6 @@ import org.etsi.mts.tdl.SimpleDataInstance; import org.etsi.mts.tdl.SimpleDataType; import org.etsi.mts.tdl.StructuredDataInstance; import org.etsi.mts.tdl.StructuredDataType; -import org.etsi.mts.tdl.UnassignedMemberTreatment; import org.etsi.mts.tdl.tdlFactory; import org.etsi.mts.tdl.tdlPackage; import org.etsi.mts.tdl.helper.TDLHelper; @@ -57,7 +56,6 @@ import io.swagger.v3.oas.models.Paths; import io.swagger.v3.oas.models.media.MediaType; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.parameters.Parameter; -import io.swagger.v3.oas.models.parameters.QueryParameter; import io.swagger.v3.oas.models.parameters.RequestBody; import io.swagger.v3.parser.core.models.ParseOptions; import io.swagger.v3.parser.util.InlineModelResolver; @@ -207,7 +205,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { if (jsonContent != null) { Schema schema = jsonContent.getSchema(); boolean array = false; - if (schema.getType() != null && schema.getType().equals("array")) { + if (getSchemaType(schema) != null && getSchemaType(schema).equals("array")) { schema = schema.getItems(); array = true; } @@ -269,6 +267,16 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { ensureUniqueNames(getGeneratedPackage()); } + private String getSchemaType(Schema schema) { + String type = schema.getType(); + if (type == null) { + Set types = schema.getTypes(); + if (types != null && !types.isEmpty()) + type = types.iterator().next(); + } + return type; + } + private void createOperationWrapper(Set ops, StructuredDataType httpRequest, EnumDataType httpMethodEnum, CollectionDataType httpRequestParameters, EnumDataType httpParameterLocationEnum) { @@ -416,7 +424,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { } private DataType translate(Schema schema, String prefix, DataType superType) { - if (schema.getType() == null && (schema.getProperties() == null || schema.getProperties().isEmpty())) { + if (getSchemaType(schema) == null && (schema.getProperties() == null || schema.getProperties().isEmpty())) { if (schema.getName() == null) { System.out.println("Why?"); } @@ -427,11 +435,11 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { name = prefix + "___item"; } if (schema.getProperties() != null && !schema.getProperties().isEmpty() - || schema.getType().equals("object")) { + || getSchemaType(schema).equals("object")) { DataType t = translateObject(schema, name); addSuperType(t, superType); return t; - } else if (schema.getType().equals("array")) { + } else if (getSchemaType(schema).equals("array")) { return translateArray(schema, name); } else { return translateSimpleType(schema, superType); @@ -442,7 +450,8 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { private DataType translateSimpleType(Schema schema, DataType superType) { String name = schema.getName(); if (name == null) - name = schema.getType(); + name = getSchemaType(schema); + if (this.theTdlPackage != null) { if (name.equals("string") || name.equals("integer") || name.equals("boolean")) {