Loading plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/OpenAPI2TDLTranslatorNext.java +92 −12 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import org.etsi.mts.tdl.DataElementUse; import org.etsi.mts.tdl.DataInstance; import org.etsi.mts.tdl.DataResourceMapping; import org.etsi.mts.tdl.DataType; import org.etsi.mts.tdl.DataUse; import org.etsi.mts.tdl.ElementImport; import org.etsi.mts.tdl.EnumDataType; import org.etsi.mts.tdl.Extension; Loading @@ -28,11 +29,13 @@ import org.etsi.mts.tdl.MemberAssignment; import org.etsi.mts.tdl.NamedElement; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.PackageableElement; import org.etsi.mts.tdl.ParameterBinding; import org.etsi.mts.tdl.ParameterMapping; 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; Loading @@ -56,6 +59,8 @@ import io.swagger.v3.oas.models.PathItem.HttpMethod; 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; Loading Loading @@ -226,6 +231,8 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { StructuredDataType httpRequest = null; CollectionDataType httpRequestParameters = null; EnumDataType httpParameterLocationEnum = null; EnumDataType httpMethodEnum = null; if (httpMessageBasedPackage != null) { for (PackageableElement e : httpMessageBasedPackage.getPackagedElement()) { Loading @@ -235,12 +242,17 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { } else if (e.eClass().equals(tdlPackage.eINSTANCE.getEnumDataType())) { if (e.getName().equals("Method")) httpMethodEnum = (EnumDataType) e; else if (e.getName().equals("Location")) httpParameterLocationEnum = (EnumDataType) e; } else if (e.eClass().equals(tdlPackage.eINSTANCE.getCollectionDataType())) { if (e.getName().equals("Parameters")) httpRequestParameters = (CollectionDataType) e; } } } if (useMessageBasedApi) { createOperationWrapper(noContentOperations, httpRequest, httpMethodEnum); createOperationWrapper(noContentOperations, httpRequest, httpMethodEnum, httpRequestParameters, httpParameterLocationEnum); } for (String schemaName : model.getComponents().getSchemas().keySet()) { Schema<?> schema = model.getComponents().getSchemas().get(schemaName); Loading @@ -250,7 +262,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { if (useMessageBasedApi) { Set<PathOperation> ops = schemaOperations.get(schemaName); if (ops != null) createOperationWrapper(ops, httpRequest, httpMethodEnum); createOperationWrapper(ops, httpRequest, httpMethodEnum, httpRequestParameters, httpParameterLocationEnum); } } Loading @@ -260,7 +272,9 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { ensureUniqueNames(getGeneratedPackage()); } private void createOperationWrapper(Set<PathOperation> ops, StructuredDataType httpRequest, EnumDataType httpMethodEnum) { private void createOperationWrapper(Set<PathOperation> ops, StructuredDataType httpRequest, EnumDataType httpMethodEnum, CollectionDataType httpRequestParameters, EnumDataType httpParameterLocationEnum) { for (PathOperation pathOperation : ops) { Operation op = pathOperation.operation; Loading @@ -277,9 +291,52 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { SimpleDataInstance methodValue = findContentWithName(pathOperation.method.name(), httpMethodEnum, tdlPackage.eINSTANCE.getSimpleDataInstance()); setMemberValue(requestData, "method", methodValue); // for (Parameter par: op.getParameters()) { // System.out.println(par); // } List<Parameter> opParams = op.getParameters(); if (opParams != null && opParams.size() > 0) { /* * Not the best approach DataElementUse parametersCollection = tdlFactory.eINSTANCE.createDataElementUse(); parametersCollection.setUnassignedMember(UnassignedMemberTreatment.ANY_VALUE_OR_OMIT); parametersCollection.setDataElement(httpRequestParameters); setMemberValue(requestData, "parameters", parametersCollection); */ Map<String, Parameter> params = model.getComponents().getParameters(); for (Parameter par: op.getParameters()) { if (par.get$ref() != null) { String paraName = par.get$ref(); paraName = paraName.replace("#/components/parameters/", ""); Parameter p = params.get(paraName); if (p == null) System.err.println("Invalid parameter reference at " + par.get$ref()); par = p; } String in = par.getIn(); if (in.equals("query") || in.equals("path")) { String parameterName = par.getName(); DataType parameterType = httpRequestParameters.getItemType(); /* DataElementUse parameter = tdlFactory.eINSTANCE.createDataElementUse(); parameter.setDataElement(parameterType); */ StructuredDataInstance parameter = getStructuredDataInstanceFor(name + "__" + parameterName); parameter.setDataType(parameterType); SimpleDataInstance queryValue = findContentWithName(in, httpParameterLocationEnum, tdlPackage.eINSTANCE.getSimpleDataInstance()); /* setParameterValue(parameter, parameterType, "location", queryValue); setParameterValue(parameter, parameterType, "name", par.getName()); parametersCollection.getItem().add(parameter); */ setMemberValue(parameter, "location", queryValue); setMemberValue(parameter, "name", parameterName); } else System.err.println("Unsupported parameter type: " + in + " at " + par.get$ref()); } } // Member headersMember = findContentWithName("headers", httpRequest, tdlPackage.eINSTANCE.getMember()); // Member parametersMember = findContentWithName("parameters", httpRequest, tdlPackage.eINSTANCE.getMember()); } Loading @@ -287,9 +344,9 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { private void setMemberValue(StructuredDataInstance data, String memberName, Object value) { Member uriMember = findContentWithName(memberName, data.getDataType(), tdlPackage.eINSTANCE.getMember()); Member member = findContentWithName(memberName, data.getDataType(), tdlPackage.eINSTANCE.getMember()); MemberAssignment assignment = tdlFactory.eINSTANCE.createMemberAssignment(); assignment.setMember(uriMember); assignment.setMember(member); if (value instanceof String) { LiteralValueUse dataUse = tdlFactory.eINSTANCE.createLiteralValueUse(); dataUse.setValue((String) value); Loading @@ -299,11 +356,34 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { DataElementUse dataUse = tdlFactory.eINSTANCE.createDataElementUse(); dataUse.setDataElement((DataInstance) value); assignment.setMemberSpec(dataUse); } else if (value instanceof DataUse) { assignment.setMemberSpec((DataUse) value); } data.getMemberAssignment().add(assignment); } private void setParameterValue(DataElementUse data, DataType type, String parameterName, Object value) { org.etsi.mts.tdl.Parameter parameter = findContentWithName(parameterName, type, tdlPackage.eINSTANCE.getParameter()); ParameterBinding binding = tdlFactory.eINSTANCE.createParameterBinding(); binding.setParameter(parameter); if (value instanceof String) { LiteralValueUse dataUse = tdlFactory.eINSTANCE.createLiteralValueUse(); dataUse.setValue((String) value); binding.setDataUse(dataUse); } else if (value instanceof DataInstance) { DataElementUse dataUse = tdlFactory.eINSTANCE.createDataElementUse(); dataUse.setDataElement((DataInstance) value); binding.setDataUse(dataUse); } else if (value instanceof DataUse) { binding.setDataUse((DataUse) value); } data.getArgument().add(binding); } @Override public void setTargetResource(Resource targetResource) { super.setTargetResource(targetResource); Loading Loading
plugins/org.etsi.mts.tdl.openapi2tdl.next/src/org/etsi/mts/tdl/openapi2tdl/next/OpenAPI2TDLTranslatorNext.java +92 −12 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import org.etsi.mts.tdl.DataElementUse; import org.etsi.mts.tdl.DataInstance; import org.etsi.mts.tdl.DataResourceMapping; import org.etsi.mts.tdl.DataType; import org.etsi.mts.tdl.DataUse; import org.etsi.mts.tdl.ElementImport; import org.etsi.mts.tdl.EnumDataType; import org.etsi.mts.tdl.Extension; Loading @@ -28,11 +29,13 @@ import org.etsi.mts.tdl.MemberAssignment; import org.etsi.mts.tdl.NamedElement; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.PackageableElement; import org.etsi.mts.tdl.ParameterBinding; import org.etsi.mts.tdl.ParameterMapping; 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; Loading @@ -56,6 +59,8 @@ import io.swagger.v3.oas.models.PathItem.HttpMethod; 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; Loading Loading @@ -226,6 +231,8 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { StructuredDataType httpRequest = null; CollectionDataType httpRequestParameters = null; EnumDataType httpParameterLocationEnum = null; EnumDataType httpMethodEnum = null; if (httpMessageBasedPackage != null) { for (PackageableElement e : httpMessageBasedPackage.getPackagedElement()) { Loading @@ -235,12 +242,17 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { } else if (e.eClass().equals(tdlPackage.eINSTANCE.getEnumDataType())) { if (e.getName().equals("Method")) httpMethodEnum = (EnumDataType) e; else if (e.getName().equals("Location")) httpParameterLocationEnum = (EnumDataType) e; } else if (e.eClass().equals(tdlPackage.eINSTANCE.getCollectionDataType())) { if (e.getName().equals("Parameters")) httpRequestParameters = (CollectionDataType) e; } } } if (useMessageBasedApi) { createOperationWrapper(noContentOperations, httpRequest, httpMethodEnum); createOperationWrapper(noContentOperations, httpRequest, httpMethodEnum, httpRequestParameters, httpParameterLocationEnum); } for (String schemaName : model.getComponents().getSchemas().keySet()) { Schema<?> schema = model.getComponents().getSchemas().get(schemaName); Loading @@ -250,7 +262,7 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { if (useMessageBasedApi) { Set<PathOperation> ops = schemaOperations.get(schemaName); if (ops != null) createOperationWrapper(ops, httpRequest, httpMethodEnum); createOperationWrapper(ops, httpRequest, httpMethodEnum, httpRequestParameters, httpParameterLocationEnum); } } Loading @@ -260,7 +272,9 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { ensureUniqueNames(getGeneratedPackage()); } private void createOperationWrapper(Set<PathOperation> ops, StructuredDataType httpRequest, EnumDataType httpMethodEnum) { private void createOperationWrapper(Set<PathOperation> ops, StructuredDataType httpRequest, EnumDataType httpMethodEnum, CollectionDataType httpRequestParameters, EnumDataType httpParameterLocationEnum) { for (PathOperation pathOperation : ops) { Operation op = pathOperation.operation; Loading @@ -277,9 +291,52 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { SimpleDataInstance methodValue = findContentWithName(pathOperation.method.name(), httpMethodEnum, tdlPackage.eINSTANCE.getSimpleDataInstance()); setMemberValue(requestData, "method", methodValue); // for (Parameter par: op.getParameters()) { // System.out.println(par); // } List<Parameter> opParams = op.getParameters(); if (opParams != null && opParams.size() > 0) { /* * Not the best approach DataElementUse parametersCollection = tdlFactory.eINSTANCE.createDataElementUse(); parametersCollection.setUnassignedMember(UnassignedMemberTreatment.ANY_VALUE_OR_OMIT); parametersCollection.setDataElement(httpRequestParameters); setMemberValue(requestData, "parameters", parametersCollection); */ Map<String, Parameter> params = model.getComponents().getParameters(); for (Parameter par: op.getParameters()) { if (par.get$ref() != null) { String paraName = par.get$ref(); paraName = paraName.replace("#/components/parameters/", ""); Parameter p = params.get(paraName); if (p == null) System.err.println("Invalid parameter reference at " + par.get$ref()); par = p; } String in = par.getIn(); if (in.equals("query") || in.equals("path")) { String parameterName = par.getName(); DataType parameterType = httpRequestParameters.getItemType(); /* DataElementUse parameter = tdlFactory.eINSTANCE.createDataElementUse(); parameter.setDataElement(parameterType); */ StructuredDataInstance parameter = getStructuredDataInstanceFor(name + "__" + parameterName); parameter.setDataType(parameterType); SimpleDataInstance queryValue = findContentWithName(in, httpParameterLocationEnum, tdlPackage.eINSTANCE.getSimpleDataInstance()); /* setParameterValue(parameter, parameterType, "location", queryValue); setParameterValue(parameter, parameterType, "name", par.getName()); parametersCollection.getItem().add(parameter); */ setMemberValue(parameter, "location", queryValue); setMemberValue(parameter, "name", parameterName); } else System.err.println("Unsupported parameter type: " + in + " at " + par.get$ref()); } } // Member headersMember = findContentWithName("headers", httpRequest, tdlPackage.eINSTANCE.getMember()); // Member parametersMember = findContentWithName("parameters", httpRequest, tdlPackage.eINSTANCE.getMember()); } Loading @@ -287,9 +344,9 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { private void setMemberValue(StructuredDataInstance data, String memberName, Object value) { Member uriMember = findContentWithName(memberName, data.getDataType(), tdlPackage.eINSTANCE.getMember()); Member member = findContentWithName(memberName, data.getDataType(), tdlPackage.eINSTANCE.getMember()); MemberAssignment assignment = tdlFactory.eINSTANCE.createMemberAssignment(); assignment.setMember(uriMember); assignment.setMember(member); if (value instanceof String) { LiteralValueUse dataUse = tdlFactory.eINSTANCE.createLiteralValueUse(); dataUse.setValue((String) value); Loading @@ -299,11 +356,34 @@ public class OpenAPI2TDLTranslatorNext extends AbstractTranslator { DataElementUse dataUse = tdlFactory.eINSTANCE.createDataElementUse(); dataUse.setDataElement((DataInstance) value); assignment.setMemberSpec(dataUse); } else if (value instanceof DataUse) { assignment.setMemberSpec((DataUse) value); } data.getMemberAssignment().add(assignment); } private void setParameterValue(DataElementUse data, DataType type, String parameterName, Object value) { org.etsi.mts.tdl.Parameter parameter = findContentWithName(parameterName, type, tdlPackage.eINSTANCE.getParameter()); ParameterBinding binding = tdlFactory.eINSTANCE.createParameterBinding(); binding.setParameter(parameter); if (value instanceof String) { LiteralValueUse dataUse = tdlFactory.eINSTANCE.createLiteralValueUse(); dataUse.setValue((String) value); binding.setDataUse(dataUse); } else if (value instanceof DataInstance) { DataElementUse dataUse = tdlFactory.eINSTANCE.createDataElementUse(); dataUse.setDataElement((DataInstance) value); binding.setDataUse(dataUse); } else if (value instanceof DataUse) { binding.setDataUse((DataUse) value); } data.getArgument().add(binding); } @Override public void setTargetResource(Resource targetResource) { super.setTargetResource(targetResource); Loading