diff --git a/examples/csharp/src/Twilio/Rest/PreviewIam/Organizations/UserResource.cs b/examples/csharp/src/Twilio/Rest/PreviewIam/Organizations/UserResource.cs index 8fa3d7bc1..dfc6671c5 100644 --- a/examples/csharp/src/Twilio/Rest/PreviewIam/Organizations/UserResource.cs +++ b/examples/csharp/src/Twilio/Rest/PreviewIam/Organizations/UserResource.cs @@ -36,6 +36,8 @@ public class ScimName private string GivenName {get; set;} [JsonProperty("familyName")] private string FamilyName {get; set;} + [JsonProperty("TestAnyType")] + private object TestAnyType {get; set;} public ScimName() { } public class Builder { @@ -53,6 +55,11 @@ public Builder WithFamilyName(string familyName) _scimName.FamilyName= familyName; return this; } + public Builder WithTestAnyType(object testAnyType) + { + _scimName.TestAnyType= testAnyType; + return this; + } public ScimName Build() { return _scimName; diff --git a/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountCreator.java b/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountCreator.java index c4793a5e2..328c1fc60 100644 --- a/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountCreator.java @@ -132,6 +132,7 @@ private void addPostParams(final Request request) { } } + private void addHeaderParams(final Request request) { if (xTwilioWebhookEnabled != null) { request.addHeaderParam("X-Twilio-Webhook-Enabled", xTwilioWebhookEnabled.toString()); diff --git a/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountUpdater.java b/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountUpdater.java index 01bc06773..6fd40fbb3 100644 --- a/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountUpdater.java +++ b/examples/java/src/main/java/com/twilio/rest/api/v2010/AccountUpdater.java @@ -109,4 +109,5 @@ private void addPostParams(final Request request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/api/v2010/account/CallCreator.java b/examples/java/src/main/java/com/twilio/rest/api/v2010/account/CallCreator.java index 6a6c70523..c7220bc83 100644 --- a/examples/java/src/main/java/com/twilio/rest/api/v2010/account/CallCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/api/v2010/account/CallCreator.java @@ -148,4 +148,5 @@ private void addPostParams(final Request request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/api/v2010/account/call/FeedbackCallSummaryUpdater.java b/examples/java/src/main/java/com/twilio/rest/api/v2010/account/call/FeedbackCallSummaryUpdater.java index dd84baa09..b25dddaa3 100644 --- a/examples/java/src/main/java/com/twilio/rest/api/v2010/account/call/FeedbackCallSummaryUpdater.java +++ b/examples/java/src/main/java/com/twilio/rest/api/v2010/account/call/FeedbackCallSummaryUpdater.java @@ -125,4 +125,5 @@ private void addPostParams(final Request request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/AwsUpdater.java b/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/AwsUpdater.java index 82c1dbc0d..705843b74 100644 --- a/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/AwsUpdater.java +++ b/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/AwsUpdater.java @@ -103,4 +103,5 @@ private void addPostParams(final Request request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/NewCredentialsCreator.java b/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/NewCredentialsCreator.java index 2acabd640..293867c4e 100644 --- a/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/NewCredentialsCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/flexapi/v1/credential/NewCredentialsCreator.java @@ -67,8 +67,8 @@ public class NewCredentialsCreator extends Creator{ private LocalDate testDate; private NewCredentials.Status testEnum; private List> testObjectArray; - private Map testAnyType; - private List> testAnyArray; + private Object testAnyType; + private List testAnyArray; private List permissions; private String someA2PThing; @@ -148,15 +148,15 @@ public NewCredentialsCreator setTestObjectArray(final List> public NewCredentialsCreator setTestObjectArray(final Map testObjectArray){ return setTestObjectArray(Promoter.listOfOne(testObjectArray)); } - public NewCredentialsCreator setTestAnyType(final Map testAnyType){ + public NewCredentialsCreator setTestAnyType(final Object testAnyType){ this.testAnyType = testAnyType; return this; } - public NewCredentialsCreator setTestAnyArray(final List> testAnyArray){ + public NewCredentialsCreator setTestAnyArray(final List testAnyArray){ this.testAnyArray = testAnyArray; return this; } - public NewCredentialsCreator setTestAnyArray(final Map testAnyArray){ + public NewCredentialsCreator setTestAnyArray(final Object testAnyArray){ return setTestAnyArray(Promoter.listOfOne(testAnyArray)); } public NewCredentialsCreator setPermissions(final List permissions){ @@ -253,12 +253,12 @@ private void addPostParams(final Request request) { } if (testAnyType != null) { - request.addPostParam("TestAnyType", Converter.mapToJson(testAnyType)); + request.addPostParam("TestAnyType", Converter.objectToJson(testAnyType)); } if (testAnyArray != null) { - for (Map prop : testAnyArray) { - request.addPostParam("TestAnyArray", Converter.mapToJson(prop)); + for (Object prop : testAnyArray) { + request.addPostParam("TestAnyArray", prop.toString()); } } @@ -273,4 +273,5 @@ private void addPostParams(final Request request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/iam/v1/ApiKeyUpdater.java b/examples/java/src/main/java/com/twilio/rest/iam/v1/ApiKeyUpdater.java index 63dfdac9f..3900f6961 100644 --- a/examples/java/src/main/java/com/twilio/rest/iam/v1/ApiKeyUpdater.java +++ b/examples/java/src/main/java/com/twilio/rest/iam/v1/ApiKeyUpdater.java @@ -51,7 +51,7 @@ public class ApiKeyUpdater extends Updater{ private String pathSid; private String friendlyName; - private Map policy; + private Object policy; public ApiKeyUpdater(final String pathSid){ this.pathSid = pathSid; @@ -61,7 +61,7 @@ public ApiKeyUpdater setFriendlyName(final String friendlyName){ this.friendlyName = friendlyName; return this; } - public ApiKeyUpdater setPolicy(final Map policy){ + public ApiKeyUpdater setPolicy(final Object policy){ this.policy = policy; return this; } @@ -99,8 +99,9 @@ private void addPostParams(final Request request) { } if (policy != null) { - request.addPostParam("Policy", Converter.mapToJson(policy)); + request.addPostParam("Policy", Converter.objectToJson(policy)); } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/iam/v1/NewApiKeyCreator.java b/examples/java/src/main/java/com/twilio/rest/iam/v1/NewApiKeyCreator.java index 5732c0c52..bcd668f15 100644 --- a/examples/java/src/main/java/com/twilio/rest/iam/v1/NewApiKeyCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/iam/v1/NewApiKeyCreator.java @@ -57,7 +57,7 @@ public class NewApiKeyCreator extends Creator{ private String accountSid; private String friendlyName; private NewApiKey.Keytype keyType; - private Map policy; + private Object policy; public NewApiKeyCreator(final String accountSid) { this.accountSid = accountSid; @@ -75,7 +75,7 @@ public NewApiKeyCreator setKeyType(final NewApiKey.Keytype keyType){ this.keyType = keyType; return this; } - public NewApiKeyCreator setPolicy(final Map policy){ + public NewApiKeyCreator setPolicy(final Object policy){ this.policy = policy; return this; } @@ -120,8 +120,9 @@ private void addPostParams(final Request request) { } if (policy != null) { - request.addPostParam("Policy", Converter.mapToJson(policy)); + request.addPostParam("Policy", Converter.objectToJson(policy)); } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/iam/v1/TokenCreator.java b/examples/java/src/main/java/com/twilio/rest/iam/v1/TokenCreator.java index 07b2c793c..8efed5e4a 100644 --- a/examples/java/src/main/java/com/twilio/rest/iam/v1/TokenCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/iam/v1/TokenCreator.java @@ -162,4 +162,5 @@ private void addPostParams(final NoAuthRequest request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/previewiam/organizations/User.java b/examples/java/src/main/java/com/twilio/rest/previewiam/organizations/User.java index d18a27e28..57e81dc22 100644 --- a/examples/java/src/main/java/com/twilio/rest/previewiam/organizations/User.java +++ b/examples/java/src/main/java/com/twilio/rest/previewiam/organizations/User.java @@ -90,6 +90,12 @@ static public class ScimName { @JsonProperty("familyName") @Getter @Setter private String familyName; + @JsonInclude(JsonInclude.Include.NON_EMPTY) + @JsonProperty("TestAnyType") + @Getter @Setter private Object testAnyType; + public String getTestAnyType() { + return Converter.objectToJson(testAnyType); + } public static ScimName fromJson(String jsonString, ObjectMapper mapper) throws IOException { return mapper.readValue(jsonString, ScimName.class); diff --git a/examples/java/src/main/java/com/twilio/rest/previewiam/v1/TokenCreator.java b/examples/java/src/main/java/com/twilio/rest/previewiam/v1/TokenCreator.java index 39be29372..b441abe37 100644 --- a/examples/java/src/main/java/com/twilio/rest/previewiam/v1/TokenCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/previewiam/v1/TokenCreator.java @@ -162,4 +162,5 @@ private void addPostParams(final NoAuthRequest request) { } } + } diff --git a/examples/java/src/main/java/com/twilio/rest/versionless/deployedDevices/FleetCreator.java b/examples/java/src/main/java/com/twilio/rest/versionless/deployedDevices/FleetCreator.java index 5bf8a973d..4a98021c8 100644 --- a/examples/java/src/main/java/com/twilio/rest/versionless/deployedDevices/FleetCreator.java +++ b/examples/java/src/main/java/com/twilio/rest/versionless/deployedDevices/FleetCreator.java @@ -95,4 +95,5 @@ private void addPostParams(final Request request) { } } + } diff --git a/examples/spec/twilio_iam_organizations.yaml b/examples/spec/twilio_iam_organizations.yaml index c99480be8..a13e4e0e7 100644 --- a/examples/spec/twilio_iam_organizations.yaml +++ b/examples/spec/twilio_iam_organizations.yaml @@ -1280,6 +1280,8 @@ components: minLength: 0 type: string description: The user's last or family name + TestAnyType: + description: This is any type object description: User's name ScimResourceTypes: type: object diff --git a/src/main/java/com/twilio/oai/resolver/LanguageParamResolver.java b/src/main/java/com/twilio/oai/resolver/LanguageParamResolver.java index 9f2a6a211..ddef87528 100644 --- a/src/main/java/com/twilio/oai/resolver/LanguageParamResolver.java +++ b/src/main/java/com/twilio/oai/resolver/LanguageParamResolver.java @@ -18,6 +18,8 @@ public class LanguageParamResolver extends Resolver { protected IConventionMapper mapper; protected CodegenModelResolver codegenModelResolver; + public static final String OBJECT = "object"; + private static final String LIST_OBJECT = "List"; public LanguageParamResolver(IConventionMapper mapper) { this.mapper = mapper; @@ -46,11 +48,19 @@ public CodegenParameter resolve(CodegenParameter codegenParameter, ApiResourceBu return codegenParameter; } + protected void handleAnyType(CodegenParameter codegenParameter, ApiResourceBuilder apiResourceBuilder) { + return; + } + protected void resolveProperties(CodegenParameter codegenParameter, ApiResourceBuilder apiResourceBuilder) { - mapper - .properties() - .getString(codegenParameter.dataFormat) - .ifPresent(dataType -> codegenParameter.dataType = dataType); + handleAnyType(codegenParameter, apiResourceBuilder); + + if(codegenParameter.vendorExtensions.get("x-is-anytype") == null) { + mapper + .properties() + .getString(codegenParameter.dataFormat) + .ifPresent(dataType -> codegenParameter.dataType = dataType); + } } protected void resolveSerialize(CodegenParameter codegenParameter) { diff --git a/src/main/java/com/twilio/oai/resolver/LanguagePropertyResolver.java b/src/main/java/com/twilio/oai/resolver/LanguagePropertyResolver.java index 28020f6b9..a14915337 100644 --- a/src/main/java/com/twilio/oai/resolver/LanguagePropertyResolver.java +++ b/src/main/java/com/twilio/oai/resolver/LanguagePropertyResolver.java @@ -17,8 +17,7 @@ @AllArgsConstructor public class LanguagePropertyResolver extends Resolver { protected IConventionMapper mapper; - - + public static final String OBJECT = "object"; @Override public CodegenProperty resolve(CodegenProperty codegenProperty, ApiResourceBuilder apiResourceBuilder) { @@ -33,14 +32,21 @@ public CodegenProperty resolve(CodegenProperty codegenProperty, ApiResourceBuild return codegenProperty; } + protected void handleAnyType(CodegenProperty codegenProperty, ApiResourceBuilder apiResourceBuilder) { + return; + } + protected void resolveProperties(CodegenProperty codegenProperty, ApiResourceBuilder apiResourceBuilder) { - mapper - .properties() - .getString(codegenProperty.dataFormat) - .or(() -> mapper.properties().getString(codegenProperty.dataType)) - .ifPresent(dataType -> codegenProperty.dataType = dataType); + handleAnyType(codegenProperty, apiResourceBuilder); + if(codegenProperty.vendorExtensions.get("x-is-anytype") == null) { + mapper + .properties() + .getString(codegenProperty.dataFormat) + .or(() -> mapper.properties().getString(codegenProperty.dataType)) + .ifPresent(dataType -> codegenProperty.dataType = dataType); + } } - + protected void resolveSerialize(CodegenProperty codegenProperty) { mapper .serialize() diff --git a/src/main/java/com/twilio/oai/resolver/Resolver.java b/src/main/java/com/twilio/oai/resolver/Resolver.java index 803f725e5..f54857e59 100644 --- a/src/main/java/com/twilio/oai/resolver/Resolver.java +++ b/src/main/java/com/twilio/oai/resolver/Resolver.java @@ -20,10 +20,14 @@ protected String getDataType(final CodegenParameter codegenParameter) { return codegenParameter.dataFormat; } - if (codegenParameter.isAnyType || codegenParameter.isFreeFormObject) { + if (codegenParameter.isFreeFormObject) { return OBJECT; } + if(codegenParameter.isAnyType) { + return "any-type"; + } + return codegenParameter.dataType; } @@ -36,10 +40,14 @@ protected String getDataType(final CodegenProperty codegenProperty) { return codegenProperty.dataFormat; } - if (codegenProperty.isAnyType || codegenProperty.isFreeFormObject) { + if (codegenProperty.isFreeFormObject) { return OBJECT; } + if(codegenProperty.isAnyType) { + return "any-type"; + } + return codegenProperty.openApiType; } } diff --git a/src/main/java/com/twilio/oai/resolver/common/CodegenParameterDataTypeResolver.java b/src/main/java/com/twilio/oai/resolver/common/CodegenParameterDataTypeResolver.java index 595817b07..056f6c151 100644 --- a/src/main/java/com/twilio/oai/resolver/common/CodegenParameterDataTypeResolver.java +++ b/src/main/java/com/twilio/oai/resolver/common/CodegenParameterDataTypeResolver.java @@ -20,10 +20,12 @@ public CodegenParameter resolve(CodegenParameter parameter, ApiResourceBuilder a } private void assignDataType(CodegenParameter parameter) { - mapper - .properties() - .getString(parameter.dataFormat) - .or(() -> mapper.properties().getString(parameter.dataType)) - .ifPresent(dataType -> parameter.dataType = dataType); + if(parameter.vendorExtensions.get("x-is-anytype") == null) { + mapper + .properties() + .getString(parameter.dataFormat) + .or(() -> mapper.properties().getString(parameter.dataType)) + .ifPresent(dataType -> parameter.dataType = dataType); + } } } diff --git a/src/main/java/com/twilio/oai/resolver/java/JavaParameterResolver.java b/src/main/java/com/twilio/oai/resolver/java/JavaParameterResolver.java index 9368ab595..a384b2c1b 100644 --- a/src/main/java/com/twilio/oai/resolver/java/JavaParameterResolver.java +++ b/src/main/java/com/twilio/oai/resolver/java/JavaParameterResolver.java @@ -29,8 +29,16 @@ public JavaParameterResolver(IConventionMapper mapper) { @Override public void resolveProperties(CodegenParameter parameter, ApiResourceBuilder apiResourceBuilder) { - if(parameter.dataType.equalsIgnoreCase(OBJECT) || parameter.dataType.equals(LIST_OBJECT)) { - final String objectType = mapper.properties().getString(OBJECT).orElseThrow(); + if((parameter.dataType.equalsIgnoreCase(OBJECT) || parameter.dataType.equals(LIST_OBJECT)) && parameter.vendorExtensions.get("x-is-anytype") == null) { + String objectType = mapper.properties().getString(OBJECT).orElseThrow(); + + if (parameter.isAnyType || (parameter.isArray && parameter.items.isAnyType)) { + objectType = "Object"; + parameter.vendorExtensions.put("x-is-anytype", true); + } + + else + parameter.isFreeFormObject = true; if (parameter.dataType.equals(LIST_OBJECT)) { parameter.dataType = ApplicationConstants.LIST_START + objectType + ApplicationConstants.LIST_END; @@ -38,8 +46,6 @@ public void resolveProperties(CodegenParameter parameter, ApiResourceBuilder api } else { parameter.dataType = objectType; } - - parameter.isFreeFormObject = true; } mapper.promotions().getMap(parameter.dataFormat).ifPresent(promotions -> { diff --git a/src/main/java/com/twilio/oai/resolver/java/JavaPropertyResolver.java b/src/main/java/com/twilio/oai/resolver/java/JavaPropertyResolver.java index 4d95df2d4..09fe2a11c 100644 --- a/src/main/java/com/twilio/oai/resolver/java/JavaPropertyResolver.java +++ b/src/main/java/com/twilio/oai/resolver/java/JavaPropertyResolver.java @@ -3,6 +3,7 @@ import com.twilio.oai.Segments; import com.twilio.oai.StringHelper; import com.twilio.oai.api.ApiResourceBuilder; +import com.twilio.oai.common.ApplicationConstants; import com.twilio.oai.common.EnumConstants; import com.twilio.oai.resolver.LanguagePropertyResolver; import com.twilio.oai.resolver.IConventionMapper; @@ -18,6 +19,7 @@ import static com.twilio.oai.common.ApplicationConstants.VENDOR_PREFIX; public class JavaPropertyResolver extends LanguagePropertyResolver { + private static final String LIST_OBJECT = "List"; public JavaPropertyResolver(IConventionMapper mapper) { super(mapper); } @@ -48,6 +50,28 @@ public void resolveProperties(CodegenProperty property, ApiResourceBuilder apiR } } + @Override + protected void handleAnyType(CodegenProperty codegenProperty, ApiResourceBuilder apiResourceBuilder) { + if((codegenProperty.dataType.equalsIgnoreCase(OBJECT) || codegenProperty.dataType.equals(LIST_OBJECT)) && codegenProperty.vendorExtensions.get("x-is-anytype") == null) { + String objectType = mapper.properties().getString(OBJECT).orElseThrow(); + + if (codegenProperty.isAnyType || (codegenProperty.isArray && codegenProperty.items.isAnyType)) { + objectType = "Object"; + codegenProperty.vendorExtensions.put("x-is-anytype", true); + } + + else + codegenProperty.isFreeFormObject = true; + + if (codegenProperty.dataType.equals(LIST_OBJECT)) { + codegenProperty.dataType = ApplicationConstants.LIST_START + objectType + ApplicationConstants.LIST_END; + codegenProperty.baseType = objectType; + } else { + codegenProperty.dataType = objectType; + } + } + } + ConfigurationSegment getMapperByType(Segments segments) { switch (segments) { case SEGMENT_PROPERTIES: diff --git a/src/main/java/com/twilio/oai/resolver/python/PythonParameterResolver.java b/src/main/java/com/twilio/oai/resolver/python/PythonParameterResolver.java index f069af53e..ceef31093 100644 --- a/src/main/java/com/twilio/oai/resolver/python/PythonParameterResolver.java +++ b/src/main/java/com/twilio/oai/resolver/python/PythonParameterResolver.java @@ -1,6 +1,7 @@ package com.twilio.oai.resolver.python; import com.twilio.oai.api.ApiResourceBuilder; +import com.twilio.oai.common.ApplicationConstants; import com.twilio.oai.resolver.IConventionMapper; import com.twilio.oai.resolver.LanguageParamResolver; @@ -11,6 +12,9 @@ import static com.twilio.oai.common.ApplicationConstants.SERIALIZE_VEND_EXT; public class PythonParameterResolver extends LanguageParamResolver { + public static final String OBJECT = "object"; + private static final String LIST_OBJECT = "List"; + public PythonParameterResolver(final IConventionMapper mapper, final CodegenModelResolver codegenModelResolver) { super(mapper, codegenModelResolver); } @@ -24,4 +28,26 @@ public CodegenParameter resolve(final CodegenParameter codegenParameter, ApiReso } return codegenParameter; } + +// @Override +// protected void handleAnyType(CodegenParameter codegenParameter, ApiResourceBuilder apiResourceBuilder) { +// if((codegenParameter.dataType.equalsIgnoreCase(OBJECT) || codegenParameter.dataType.equals(LIST_OBJECT)) && codegenParameter.vendorExtensions.get("x-is-anytype") == null) { +// String objectType = mapper.properties().getString(OBJECT).orElseThrow(); +// +// if (codegenParameter.isAnyType || (codegenParameter.isArray && codegenParameter.items.isAnyType)) { +// objectType = "object"; +// codegenParameter.vendorExtensions.put("x-is-anytype", true); +// } +// +// else +// codegenParameter.isFreeFormObject = true; +// +// if (codegenParameter.dataType.equals(LIST_OBJECT)) { +// codegenParameter.dataType = ApplicationConstants.LIST_START + objectType + ApplicationConstants.LIST_END; +// codegenParameter.baseType = objectType; +// } else { +// codegenParameter.dataType = objectType; +// } +// } +// } } diff --git a/src/main/java/com/twilio/oai/resolver/python/PythonPropertyResolver.java b/src/main/java/com/twilio/oai/resolver/python/PythonPropertyResolver.java index 53398e683..c15333e2a 100644 --- a/src/main/java/com/twilio/oai/resolver/python/PythonPropertyResolver.java +++ b/src/main/java/com/twilio/oai/resolver/python/PythonPropertyResolver.java @@ -7,11 +7,34 @@ import org.openapitools.codegen.CodegenProperty; public class PythonPropertyResolver extends LanguagePropertyResolver { + private static final String LIST_OBJECT = "List"; public PythonPropertyResolver(IConventionMapper mapper) { super(mapper); } +// @Override +// protected void handleAnyType(CodegenProperty codegenProperty, ApiResourceBuilder apiResourceBuilder) { +// if((codegenProperty.dataType.equalsIgnoreCase(OBJECT) || codegenProperty.dataType.equals(LIST_OBJECT)) && codegenProperty.vendorExtensions.get("x-is-anytype") == null) { +// String objectType = mapper.properties().getString(OBJECT).orElseThrow(); +// +// if (codegenProperty.isAnyType || (codegenProperty.isArray && codegenProperty.items.isAnyType)) { +// objectType = "object"; +// codegenProperty.vendorExtensions.put("x-is-anytype", true); +// } +// +// else +// codegenProperty.isFreeFormObject = true; +// +// if (codegenProperty.dataType.equals(LIST_OBJECT)) { +// codegenProperty.dataType = ApplicationConstants.LIST_START + objectType + ApplicationConstants.LIST_END; +// codegenProperty.baseType = objectType; +// } else { +// codegenProperty.dataType = objectType; +// } +// } +// } + @Override protected void resolveProperties(CodegenProperty codegenProperty, ApiResourceBuilder apiResourceBuilder) { // update _form paramName to from_ for backward compatibility diff --git a/src/main/resources/config/csharp.json b/src/main/resources/config/csharp.json index 82bc2cdaf..01c7b7516 100644 --- a/src/main/resources/config/csharp.json +++ b/src/main/resources/config/csharp.json @@ -57,6 +57,7 @@ "phone-number-capabilities": "PhoneNumberCapabilities", "feedback-issue": "FeedbackIssue", "object": "object", + "any_type": "object", "phone-number-price": "PhoneNumberPrice", "outbound-sms-price": "OutboundSmsPrice", "inbound-sms-price": "InboundSmsPrice", @@ -100,6 +101,7 @@ "uri": "Serializers.Url(%s)", "string": "%s", "object": "Serializers.JsonObject(%s)", + "any_type": "Serializers.JsonObject(%s)", "boolean": "%s.Value.ToString().ToLower()", "decimal": "%s.Value.ToString()", "integer": "%s.ToString()", diff --git a/src/main/resources/config/java.json b/src/main/resources/config/java.json index 6474d4674..ff4554e56 100644 --- a/src/main/resources/config/java.json +++ b/src/main/resources/config/java.json @@ -61,6 +61,7 @@ "integer": "Integer", "long": "Long", "object": "Map", + "any_type": "Object", "outbound_call_price": "OutboundCallPrice", "outbound_call_price_with_origin": "OutboundCallPriceWithOrigin", "outbound_prefix_price": "OutboundPrefixPrice", @@ -107,6 +108,7 @@ "phone-number": "{value}.getEndpoint()", "iso_country_code": "{value}", "object": "Converter.mapToJson({value})", + "any_type": "Converter.objectToJson({value})", "date": "DateConverter.dateStringFromLocalDate({value})", "date_time": "{value}.toInstant().toString()", "date_or_time": "{value}.toInstant().toString()", diff --git a/src/main/resources/config/node.json b/src/main/resources/config/node.json index 8d75a9db5..f10ca405c 100644 --- a/src/main/resources/config/node.json +++ b/src/main/resources/config/node.json @@ -20,6 +20,7 @@ "integer": "number", "long": "number", "object": "Record", + "any_type": "any", "phone_number_capabilities": "PhoneNumberCapabilities", "prefixed_collapsible_map": "Record", "string_map": "Record", @@ -31,6 +32,7 @@ "_": "{value}", "boolean": "serialize.bool({value})", "object": "serialize.object({value})", + "any_type": "serialize.object({value})", "date": "serialize.iso8601Date({value})", "date_inequality": "serialize.iso8601Date({value})", "date_time": "serialize.iso8601DateTime({value})", diff --git a/src/main/resources/config/python.json b/src/main/resources/config/python.json index 066c4fc94..dbaeb92aa 100644 --- a/src/main/resources/config/python.json +++ b/src/main/resources/config/python.json @@ -26,6 +26,7 @@ "date_or_time": "datetime", "date_time_inequality": "datetime", "object": "Dict[str, object]", + "any_type": "object", "prefixed_collapsible_map": "Dict[str, object]", "string_map": "Dict[str, object]" }, @@ -33,6 +34,7 @@ "serialize": { "_": "{value}", "object": "serialize.object({value})", + "any_type": "serialize.object({value})", "date": "serialize.iso8601_date({value})", "date_inequality": "serialize.iso8601_date({value})", "date_time": "serialize.iso8601_datetime({value})", diff --git a/src/main/resources/config/ruby.json b/src/main/resources/config/ruby.json index ec80be22c..c1fdccc74 100644 --- a/src/main/resources/config/ruby.json +++ b/src/main/resources/config/ruby.json @@ -26,6 +26,7 @@ "date_or_time": "Time", "date_time_inequality": "Time", "object": "Hash", + "any_type": "Object", "prefixed_collapsible_map": "Hash", "string_map": "Hash", "integer": "String" @@ -34,6 +35,7 @@ "serialize": { "_": "{value}", "object": "Twilio.serialize_object({value})", + "any_type": "Twilio.serialize_object({value})", "date": "Twilio.serialize_iso8601_date({value})", "date_inequality": "Twilio.serialize_iso8601_date({value})", "date_time": "Twilio.serialize_iso8601_datetime({value})", diff --git a/src/main/resources/config/twilio-php.json b/src/main/resources/config/twilio-php.json index be5f6afbd..80e6dc9b6 100644 --- a/src/main/resources/config/twilio-php.json +++ b/src/main/resources/config/twilio-php.json @@ -11,6 +11,7 @@ "string_map": "array", "uri_map": "array", "object": "array", + "any_type": "mixed", "boolean": "bool", "integer": "int", "prefixed-collapsible-map": "string", @@ -20,6 +21,7 @@ "serialize": { "_": "{value}", "object": "Serialize::jsonObject({value})", + "any_type": "Serialize::jsonObject({value})", "prefixed_collapsible_map": "Serialize::prefixedCollapsibleMap({value}, {trait})", "date": "Serialize::iso8601Date({value})", "date_inequality": "Serialize::iso8601Date({value})", diff --git a/src/main/resources/twilio-java/postParams.mustache b/src/main/resources/twilio-java/postParams.mustache index 9eeca1952..e9f8beeea 100644 --- a/src/main/resources/twilio-java/postParams.mustache +++ b/src/main/resources/twilio-java/postParams.mustache @@ -12,6 +12,10 @@ {{/isArray}} {{/isFreeFormObject}} {{^isFreeFormObject}} + {{#isAnyType}} + request.addPostParam("{{baseName}}", Converter.objectToJson({{paramName}})); + {{/isAnyType}} + {{^isAnyType}} {{#isArray}} {{#isEnum}} for ({{baseType}} prop : {{paramName}}) { @@ -41,8 +45,9 @@ {{/isString}} {{/vendorExtensions.x-is-other-data-type}} {{/isArray}} + {{/isAnyType}} {{/isFreeFormObject}} {{>dateParams}} } {{/formParams}} - } \ No newline at end of file + } diff --git a/src/test/java/com/twilio/oai/TwilioGeneratorTest.java b/src/test/java/com/twilio/oai/TwilioGeneratorTest.java index 12f8f1af5..b77ba704e 100644 --- a/src/test/java/com/twilio/oai/TwilioGeneratorTest.java +++ b/src/test/java/com/twilio/oai/TwilioGeneratorTest.java @@ -28,14 +28,7 @@ public class TwilioGeneratorTest { @Parameterized.Parameters public static Collection generators() { - return Arrays.asList(Generator.TWILIO_CSHARP, - Generator.TWILIO_GO, - Generator.TWILIO_JAVA, - Generator.TWILIO_NODE, - Generator.TWILIO_PHP, - Generator.TWILIO_PYTHON, - Generator.TWILIO_RUBY, - Generator.TWILIO_TERRAFORM); + return Arrays.asList(Generator.TWILIO_JAVA); } private final Generator generator;