Better handling of x-nullable in codegen property (#14800)

* add failed tests

* add logic to handle x-nullable in property

* update samples

* update test
This commit is contained in:
William Cheng 2023-02-24 15:24:34 +08:00 committed by GitHub
parent b527f3b816
commit d400d7fb15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 247 additions and 7 deletions

View File

@ -3877,8 +3877,12 @@ public class DefaultCodegen implements CodegenConfig {
} }
} }
// set isNullable using nullable or x-nullable in the schema
if (referencedSchema.getNullable() != null) { if (referencedSchema.getNullable() != null) {
property.isNullable = referencedSchema.getNullable(); property.isNullable = referencedSchema.getNullable();
} else if (referencedSchema.getExtensions() != null &&
referencedSchema.getExtensions().containsKey("x-nullable")) {
property.isNullable = (Boolean) referencedSchema.getExtensions().get("x-nullable");
} }
property.dataType = getTypeDeclaration(p); property.dataType = getTypeDeclaration(p);

View File

@ -451,6 +451,11 @@ components:
type: array type: array
items: items:
type: string type: string
array_string_extension_nullable:
x-nullable: true
type: array
items:
type: string
string_nullable: string_nullable:
type: string type: string
nullable: true nullable: true

View File

@ -466,6 +466,11 @@ components:
type: string type: string
nullable: true nullable: true
type: array type: array
array_string_extension_nullable:
items:
type: string
type: array
x-nullable: true
string_nullable: string_nullable:
nullable: true nullable: true
type: string type: string

View File

@ -14,6 +14,7 @@ to test the default value of properties
|**arrayIntegerDefault** | **List<Integer>** | | [optional] | |**arrayIntegerDefault** | **List<Integer>** | | [optional] |
|**arrayString** | **List<String>** | | [optional] | |**arrayString** | **List<String>** | | [optional] |
|**arrayStringNullable** | **List<String>** | | [optional] | |**arrayStringNullable** | **List<String>** | | [optional] |
|**arrayStringExtensionNullable** | **List<String>** | | [optional] |
|**stringNullable** | **String** | | [optional] | |**stringNullable** | **String** | | [optional] |

View File

@ -43,6 +43,7 @@ import java.util.StringJoiner;
DefaultValue.JSON_PROPERTY_ARRAY_INTEGER_DEFAULT, DefaultValue.JSON_PROPERTY_ARRAY_INTEGER_DEFAULT,
DefaultValue.JSON_PROPERTY_ARRAY_STRING, DefaultValue.JSON_PROPERTY_ARRAY_STRING,
DefaultValue.JSON_PROPERTY_ARRAY_STRING_NULLABLE, DefaultValue.JSON_PROPERTY_ARRAY_STRING_NULLABLE,
DefaultValue.JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE,
DefaultValue.JSON_PROPERTY_STRING_NULLABLE DefaultValue.JSON_PROPERTY_STRING_NULLABLE
}) })
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
@ -102,6 +103,9 @@ public class DefaultValue {
public static final String JSON_PROPERTY_ARRAY_STRING_NULLABLE = "array_string_nullable"; public static final String JSON_PROPERTY_ARRAY_STRING_NULLABLE = "array_string_nullable";
private JsonNullable<List<String>> arrayStringNullable = JsonNullable.<List<String>>undefined(); private JsonNullable<List<String>> arrayStringNullable = JsonNullable.<List<String>>undefined();
public static final String JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE = "array_string_extension_nullable";
private JsonNullable<List<String>> arrayStringExtensionNullable = JsonNullable.<List<String>>undefined();
public static final String JSON_PROPERTY_STRING_NULLABLE = "string_nullable"; public static final String JSON_PROPERTY_STRING_NULLABLE = "string_nullable";
private JsonNullable<String> stringNullable = JsonNullable.<String>undefined(); private JsonNullable<String> stringNullable = JsonNullable.<String>undefined();
@ -324,6 +328,52 @@ public class DefaultValue {
} }
public DefaultValue arrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = JsonNullable.<List<String>>of(arrayStringExtensionNullable);
return this;
}
public DefaultValue addArrayStringExtensionNullableItem(String arrayStringExtensionNullableItem) {
if (this.arrayStringExtensionNullable == null || !this.arrayStringExtensionNullable.isPresent()) {
this.arrayStringExtensionNullable = JsonNullable.<List<String>>of(new ArrayList<>());
}
try {
this.arrayStringExtensionNullable.get().add(arrayStringExtensionNullableItem);
} catch (java.util.NoSuchElementException e) {
// this can never happen, as we make sure above that the value is present
}
return this;
}
/**
* Get arrayStringExtensionNullable
* @return arrayStringExtensionNullable
**/
@javax.annotation.Nullable
@JsonIgnore
public List<String> getArrayStringExtensionNullable() {
return arrayStringExtensionNullable.orElse(null);
}
@JsonProperty(JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public JsonNullable<List<String>> getArrayStringExtensionNullable_JsonNullable() {
return arrayStringExtensionNullable;
}
@JsonProperty(JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE)
public void setArrayStringExtensionNullable_JsonNullable(JsonNullable<List<String>> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = arrayStringExtensionNullable;
}
public void setArrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = JsonNullable.<List<String>>of(arrayStringExtensionNullable);
}
public DefaultValue stringNullable(String stringNullable) { public DefaultValue stringNullable(String stringNullable) {
this.stringNullable = JsonNullable.<String>of(stringNullable); this.stringNullable = JsonNullable.<String>of(stringNullable);
@ -373,6 +423,7 @@ public class DefaultValue {
Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) && Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) &&
Objects.equals(this.arrayString, defaultValue.arrayString) && Objects.equals(this.arrayString, defaultValue.arrayString) &&
equalsNullable(this.arrayStringNullable, defaultValue.arrayStringNullable) && equalsNullable(this.arrayStringNullable, defaultValue.arrayStringNullable) &&
equalsNullable(this.arrayStringExtensionNullable, defaultValue.arrayStringExtensionNullable) &&
equalsNullable(this.stringNullable, defaultValue.stringNullable); equalsNullable(this.stringNullable, defaultValue.stringNullable);
} }
@ -382,7 +433,7 @@ public class DefaultValue {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, hashCodeNullable(arrayStringNullable), hashCodeNullable(stringNullable)); return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, hashCodeNullable(arrayStringNullable), hashCodeNullable(arrayStringExtensionNullable), hashCodeNullable(stringNullable));
} }
private static <T> int hashCodeNullable(JsonNullable<T> a) { private static <T> int hashCodeNullable(JsonNullable<T> a) {
@ -402,6 +453,7 @@ public class DefaultValue {
sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n"); sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n");
sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n"); sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n");
sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n"); sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n");
sb.append(" arrayStringExtensionNullable: ").append(toIndentedString(arrayStringExtensionNullable)).append("\n");
sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n"); sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n");
sb.append("}"); sb.append("}");
return sb.toString(); return sb.toString();
@ -536,6 +588,20 @@ public class DefaultValue {
} }
} }
// add `array_string_extension_nullable` to the URL query string
if (getArrayStringExtensionNullable() != null) {
for (int i = 0; i < getArrayStringExtensionNullable().size(); i++) {
try {
joiner.add(String.format("%sarray_string_extension_nullable%s%s=%s", prefix, suffix,
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
URLEncoder.encode(String.valueOf(getArrayStringExtensionNullable().get(i)), "UTF-8").replaceAll("\\+", "%20")));
} catch (UnsupportedEncodingException e) {
// Should never happen, UTF-8 is always supported
throw new RuntimeException(e);
}
}
}
// add `string_nullable` to the URL query string // add `string_nullable` to the URL query string
if (getStringNullable() != null) { if (getStringNullable() != null) {
try { try {

View File

@ -220,7 +220,7 @@ public class CustomTest {
Assert.assertNull(d.getArrayStringNullable()); Assert.assertNull(d.getArrayStringNullable());
Assert.assertEquals(d.getArrayString().size(), 0); Assert.assertEquals(d.getArrayString().size(), 0);
Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"success\",\"failure\"],\"array_string_enum_default\":[\"success\",\"failure\"],\"array_string_default\":[\"failure\",\"skipped\"],\"array_integer_default\":[1,3],\"array_string\":[],\"array_string_nullable\":{\"present\":false},\"string_nullable\":{\"present\":false}}"); Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"success\",\"failure\"],\"array_string_enum_default\":[\"success\",\"failure\"],\"array_string_default\":[\"failure\",\"skipped\"],\"array_integer_default\":[1,3],\"array_string\":[],\"array_string_nullable\":{\"present\":false},\"array_string_extension_nullable\":{\"present\":false},\"string_nullable\":{\"present\":false}}");
} }
@Test @Test
@ -248,7 +248,7 @@ public class CustomTest {
Assert.assertNull(d.getArrayStringNullable()); Assert.assertNull(d.getArrayStringNullable());
Assert.assertEquals(d.getArrayString().size(), 0); Assert.assertEquals(d.getArrayString().size(), 0);
Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"unclassified\"],\"array_string_enum_default\":[\"unclassified\"],\"array_string_default\":[\"failure\"],\"array_integer_default\":[1,3],\"array_string\":[],\"array_string_nullable\":{\"present\":false},\"string_nullable\":{\"present\":false}}"); Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"unclassified\"],\"array_string_enum_default\":[\"unclassified\"],\"array_string_default\":[\"failure\"],\"array_integer_default\":[1,3],\"array_string\":[],\"array_string_nullable\":{\"present\":false},\"array_string_extension_nullable\":{\"present\":false},\"string_nullable\":{\"present\":false}}");
} }
@Test @Test

View File

@ -466,6 +466,11 @@ components:
type: string type: string
nullable: true nullable: true
type: array type: array
array_string_extension_nullable:
items:
type: string
type: array
x-nullable: true
string_nullable: string_nullable:
nullable: true nullable: true
type: string type: string

View File

@ -104,6 +104,10 @@ public class DefaultValue {
@SerializedName(SERIALIZED_NAME_ARRAY_STRING_NULLABLE) @SerializedName(SERIALIZED_NAME_ARRAY_STRING_NULLABLE)
private List<String> arrayStringNullable; private List<String> arrayStringNullable;
public static final String SERIALIZED_NAME_ARRAY_STRING_EXTENSION_NULLABLE = "array_string_extension_nullable";
@SerializedName(SERIALIZED_NAME_ARRAY_STRING_EXTENSION_NULLABLE)
private List<String> arrayStringExtensionNullable;
public static final String SERIALIZED_NAME_STRING_NULLABLE = "string_nullable"; public static final String SERIALIZED_NAME_STRING_NULLABLE = "string_nullable";
@SerializedName(SERIALIZED_NAME_STRING_NULLABLE) @SerializedName(SERIALIZED_NAME_STRING_NULLABLE)
private String stringNullable; private String stringNullable;
@ -288,6 +292,33 @@ public class DefaultValue {
} }
public DefaultValue arrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = arrayStringExtensionNullable;
return this;
}
public DefaultValue addArrayStringExtensionNullableItem(String arrayStringExtensionNullableItem) {
this.arrayStringExtensionNullable.add(arrayStringExtensionNullableItem);
return this;
}
/**
* Get arrayStringExtensionNullable
* @return arrayStringExtensionNullable
**/
@javax.annotation.Nullable
public List<String> getArrayStringExtensionNullable() {
return arrayStringExtensionNullable;
}
public void setArrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = arrayStringExtensionNullable;
}
public DefaultValue stringNullable(String stringNullable) { public DefaultValue stringNullable(String stringNullable) {
this.stringNullable = stringNullable; this.stringNullable = stringNullable;
@ -325,6 +356,7 @@ public class DefaultValue {
Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) && Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) &&
Objects.equals(this.arrayString, defaultValue.arrayString) && Objects.equals(this.arrayString, defaultValue.arrayString) &&
Objects.equals(this.arrayStringNullable, defaultValue.arrayStringNullable) && Objects.equals(this.arrayStringNullable, defaultValue.arrayStringNullable) &&
Objects.equals(this.arrayStringExtensionNullable, defaultValue.arrayStringExtensionNullable) &&
Objects.equals(this.stringNullable, defaultValue.stringNullable); Objects.equals(this.stringNullable, defaultValue.stringNullable);
} }
@ -334,7 +366,7 @@ public class DefaultValue {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, arrayStringNullable, stringNullable); return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, arrayStringNullable, arrayStringExtensionNullable, stringNullable);
} }
private static <T> int hashCodeNullable(JsonNullable<T> a) { private static <T> int hashCodeNullable(JsonNullable<T> a) {
@ -354,6 +386,7 @@ public class DefaultValue {
sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n"); sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n");
sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n"); sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n");
sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n"); sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n");
sb.append(" arrayStringExtensionNullable: ").append(toIndentedString(arrayStringExtensionNullable)).append("\n");
sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n"); sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n");
sb.append("}"); sb.append("}");
return sb.toString(); return sb.toString();

View File

@ -466,6 +466,11 @@ components:
type: string type: string
nullable: true nullable: true
type: array type: array
array_string_extension_nullable:
items:
type: string
type: array
x-nullable: true
string_nullable: string_nullable:
nullable: true nullable: true
type: string type: string

View File

@ -14,6 +14,7 @@ to test the default value of properties
|**arrayIntegerDefault** | **List&lt;Integer&gt;** | | [optional] | |**arrayIntegerDefault** | **List&lt;Integer&gt;** | | [optional] |
|**arrayString** | **List&lt;String&gt;** | | [optional] | |**arrayString** | **List&lt;String&gt;** | | [optional] |
|**arrayStringNullable** | **List&lt;String&gt;** | | [optional] | |**arrayStringNullable** | **List&lt;String&gt;** | | [optional] |
|**arrayStringExtensionNullable** | **List&lt;String&gt;** | | [optional] |
|**stringNullable** | **String** | | [optional] | |**stringNullable** | **String** | | [optional] |

View File

@ -45,6 +45,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
DefaultValue.JSON_PROPERTY_ARRAY_INTEGER_DEFAULT, DefaultValue.JSON_PROPERTY_ARRAY_INTEGER_DEFAULT,
DefaultValue.JSON_PROPERTY_ARRAY_STRING, DefaultValue.JSON_PROPERTY_ARRAY_STRING,
DefaultValue.JSON_PROPERTY_ARRAY_STRING_NULLABLE, DefaultValue.JSON_PROPERTY_ARRAY_STRING_NULLABLE,
DefaultValue.JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE,
DefaultValue.JSON_PROPERTY_STRING_NULLABLE DefaultValue.JSON_PROPERTY_STRING_NULLABLE
}) })
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
@ -104,6 +105,9 @@ public class DefaultValue {
public static final String JSON_PROPERTY_ARRAY_STRING_NULLABLE = "array_string_nullable"; public static final String JSON_PROPERTY_ARRAY_STRING_NULLABLE = "array_string_nullable";
private JsonNullable<List<String>> arrayStringNullable = JsonNullable.<List<String>>undefined(); private JsonNullable<List<String>> arrayStringNullable = JsonNullable.<List<String>>undefined();
public static final String JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE = "array_string_extension_nullable";
private JsonNullable<List<String>> arrayStringExtensionNullable = JsonNullable.<List<String>>undefined();
public static final String JSON_PROPERTY_STRING_NULLABLE = "string_nullable"; public static final String JSON_PROPERTY_STRING_NULLABLE = "string_nullable";
private JsonNullable<String> stringNullable = JsonNullable.<String>undefined(); private JsonNullable<String> stringNullable = JsonNullable.<String>undefined();
@ -320,6 +324,51 @@ public class DefaultValue {
} }
public DefaultValue arrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = JsonNullable.<List<String>>of(arrayStringExtensionNullable);
return this;
}
public DefaultValue addArrayStringExtensionNullableItem(String arrayStringExtensionNullableItem) {
if (this.arrayStringExtensionNullable == null || !this.arrayStringExtensionNullable.isPresent()) {
this.arrayStringExtensionNullable = JsonNullable.<List<String>>of(new ArrayList<>());
}
try {
this.arrayStringExtensionNullable.get().add(arrayStringExtensionNullableItem);
} catch (java.util.NoSuchElementException e) {
// this can never happen, as we make sure above that the value is present
}
return this;
}
/**
* Get arrayStringExtensionNullable
* @return arrayStringExtensionNullable
**/
@javax.annotation.Nullable
@JsonIgnore
public List<String> getArrayStringExtensionNullable() {
return arrayStringExtensionNullable.orElse(null);
}
@JsonProperty(JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public JsonNullable<List<String>> getArrayStringExtensionNullable_JsonNullable() {
return arrayStringExtensionNullable;
}
@JsonProperty(JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE)
public void setArrayStringExtensionNullable_JsonNullable(JsonNullable<List<String>> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = arrayStringExtensionNullable;
}
public void setArrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = JsonNullable.<List<String>>of(arrayStringExtensionNullable);
}
public DefaultValue stringNullable(String stringNullable) { public DefaultValue stringNullable(String stringNullable) {
this.stringNullable = JsonNullable.<String>of(stringNullable); this.stringNullable = JsonNullable.<String>of(stringNullable);
return this; return this;
@ -371,6 +420,7 @@ public class DefaultValue {
Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) && Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) &&
Objects.equals(this.arrayString, defaultValue.arrayString) && Objects.equals(this.arrayString, defaultValue.arrayString) &&
equalsNullable(this.arrayStringNullable, defaultValue.arrayStringNullable) && equalsNullable(this.arrayStringNullable, defaultValue.arrayStringNullable) &&
equalsNullable(this.arrayStringExtensionNullable, defaultValue.arrayStringExtensionNullable) &&
equalsNullable(this.stringNullable, defaultValue.stringNullable); equalsNullable(this.stringNullable, defaultValue.stringNullable);
} }
@ -380,7 +430,7 @@ public class DefaultValue {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, hashCodeNullable(arrayStringNullable), hashCodeNullable(stringNullable)); return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, hashCodeNullable(arrayStringNullable), hashCodeNullable(arrayStringExtensionNullable), hashCodeNullable(stringNullable));
} }
private static <T> int hashCodeNullable(JsonNullable<T> a) { private static <T> int hashCodeNullable(JsonNullable<T> a) {
@ -400,6 +450,7 @@ public class DefaultValue {
sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n"); sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n");
sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n"); sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n");
sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n"); sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n");
sb.append(" arrayStringExtensionNullable: ").append(toIndentedString(arrayStringExtensionNullable)).append("\n");
sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n"); sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n");
sb.append("}"); sb.append("}");
return sb.toString(); return sb.toString();
@ -504,6 +555,15 @@ public class DefaultValue {
} }
} }
// add `array_string_extension_nullable` to the URL query string
if (getArrayStringExtensionNullable() != null) {
for (int i = 0; i < getArrayStringExtensionNullable().size(); i++) {
joiner.add(String.format("%sarray_string_extension_nullable%s%s=%s", prefix, suffix,
"".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
URLEncoder.encode(String.valueOf(getArrayStringExtensionNullable().get(i)), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));
}
}
// add `string_nullable` to the URL query string // add `string_nullable` to the URL query string
if (getStringNullable() != null) { if (getStringNullable() != null) {
joiner.add(String.format("%sstring_nullable%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getStringNullable()), StandardCharsets.UTF_8).replaceAll("\\+", "%20"))); joiner.add(String.format("%sstring_nullable%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getStringNullable()), StandardCharsets.UTF_8).replaceAll("\\+", "%20")));

View File

@ -167,8 +167,10 @@ public class CustomTest {
Assert.assertEquals(d.getArrayIntegerDefault().get(1), Integer.valueOf(3)); Assert.assertEquals(d.getArrayIntegerDefault().get(1), Integer.valueOf(3));
Assert.assertNull(d.getArrayStringNullable()); Assert.assertNull(d.getArrayStringNullable());
Assert.assertNull(d.getArrayStringExtensionNullable());
Assert.assertEquals(d.getArrayString().size(), 0); Assert.assertEquals(d.getArrayString().size(), 0);
// test addItem // test addItem
d.addArrayStringEnumDefaultItem(DefaultValue.ArrayStringEnumDefaultEnum.UNCLASSIFIED); d.addArrayStringEnumDefaultItem(DefaultValue.ArrayStringEnumDefaultEnum.UNCLASSIFIED);
Assert.assertEquals(d.getArrayStringEnumDefault().size(), 3); Assert.assertEquals(d.getArrayStringEnumDefault().size(), 3);
@ -209,6 +211,7 @@ public class CustomTest {
Assert.assertEquals(d.getArrayIntegerDefault().get(1), Integer.valueOf(3)); Assert.assertEquals(d.getArrayIntegerDefault().get(1), Integer.valueOf(3));
Assert.assertNull(d.getArrayStringNullable()); Assert.assertNull(d.getArrayStringNullable());
Assert.assertNull(d.getArrayStringExtensionNullable());
Assert.assertEquals(d.getArrayString().size(), 0); Assert.assertEquals(d.getArrayString().size(), 0);
Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"success\",\"failure\"],\"array_string_enum_default\":[\"success\",\"failure\"],\"array_string_default\":[\"failure\",\"skipped\"],\"array_integer_default\":[1,3],\"array_string\":[]}"); Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"success\",\"failure\"],\"array_string_enum_default\":[\"success\",\"failure\"],\"array_string_default\":[\"failure\",\"skipped\"],\"array_integer_default\":[1,3],\"array_string\":[]}");
@ -237,6 +240,7 @@ public class CustomTest {
Assert.assertEquals(d.getArrayIntegerDefault().get(1), Integer.valueOf(3)); Assert.assertEquals(d.getArrayIntegerDefault().get(1), Integer.valueOf(3));
Assert.assertNull(d.getArrayStringNullable()); Assert.assertNull(d.getArrayStringNullable());
Assert.assertNull(d.getArrayStringExtensionNullable());
Assert.assertEquals(d.getArrayString().size(), 0); Assert.assertEquals(d.getArrayString().size(), 0);
Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"unclassified\"],\"array_string_enum_default\":[\"unclassified\"],\"array_string_default\":[\"failure\"],\"array_integer_default\":[1,3],\"array_string\":[]}"); Assert.assertEquals(apiClient.getObjectMapper().writeValueAsString(d), "{\"array_string_enum_ref_default\":[\"unclassified\"],\"array_string_enum_default\":[\"unclassified\"],\"array_string_default\":[\"failure\"],\"array_integer_default\":[1,3],\"array_string\":[]}");

View File

@ -466,6 +466,11 @@ components:
type: string type: string
nullable: true nullable: true
type: array type: array
array_string_extension_nullable:
items:
type: string
type: array
x-nullable: true
string_nullable: string_nullable:
nullable: true nullable: true
type: string type: string

View File

@ -14,6 +14,7 @@ to test the default value of properties
|**arrayIntegerDefault** | **List&lt;Integer&gt;** | | [optional] | |**arrayIntegerDefault** | **List&lt;Integer&gt;** | | [optional] |
|**arrayString** | **List&lt;String&gt;** | | [optional] | |**arrayString** | **List&lt;String&gt;** | | [optional] |
|**arrayStringNullable** | **List&lt;String&gt;** | | [optional] | |**arrayStringNullable** | **List&lt;String&gt;** | | [optional] |
|**arrayStringExtensionNullable** | **List&lt;String&gt;** | | [optional] |
|**stringNullable** | **String** | | [optional] | |**stringNullable** | **String** | | [optional] |

View File

@ -125,6 +125,10 @@ public class DefaultValue {
@SerializedName(SERIALIZED_NAME_ARRAY_STRING_NULLABLE) @SerializedName(SERIALIZED_NAME_ARRAY_STRING_NULLABLE)
private List<String> arrayStringNullable; private List<String> arrayStringNullable;
public static final String SERIALIZED_NAME_ARRAY_STRING_EXTENSION_NULLABLE = "array_string_extension_nullable";
@SerializedName(SERIALIZED_NAME_ARRAY_STRING_EXTENSION_NULLABLE)
private List<String> arrayStringExtensionNullable;
public static final String SERIALIZED_NAME_STRING_NULLABLE = "string_nullable"; public static final String SERIALIZED_NAME_STRING_NULLABLE = "string_nullable";
@SerializedName(SERIALIZED_NAME_STRING_NULLABLE) @SerializedName(SERIALIZED_NAME_STRING_NULLABLE)
private String stringNullable; private String stringNullable;
@ -309,6 +313,33 @@ public class DefaultValue {
} }
public DefaultValue arrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = arrayStringExtensionNullable;
return this;
}
public DefaultValue addArrayStringExtensionNullableItem(String arrayStringExtensionNullableItem) {
this.arrayStringExtensionNullable.add(arrayStringExtensionNullableItem);
return this;
}
/**
* Get arrayStringExtensionNullable
* @return arrayStringExtensionNullable
**/
@javax.annotation.Nullable
public List<String> getArrayStringExtensionNullable() {
return arrayStringExtensionNullable;
}
public void setArrayStringExtensionNullable(List<String> arrayStringExtensionNullable) {
this.arrayStringExtensionNullable = arrayStringExtensionNullable;
}
public DefaultValue stringNullable(String stringNullable) { public DefaultValue stringNullable(String stringNullable) {
this.stringNullable = stringNullable; this.stringNullable = stringNullable;
@ -347,6 +378,7 @@ public class DefaultValue {
Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) && Objects.equals(this.arrayIntegerDefault, defaultValue.arrayIntegerDefault) &&
Objects.equals(this.arrayString, defaultValue.arrayString) && Objects.equals(this.arrayString, defaultValue.arrayString) &&
Objects.equals(this.arrayStringNullable, defaultValue.arrayStringNullable) && Objects.equals(this.arrayStringNullable, defaultValue.arrayStringNullable) &&
Objects.equals(this.arrayStringExtensionNullable, defaultValue.arrayStringExtensionNullable) &&
Objects.equals(this.stringNullable, defaultValue.stringNullable); Objects.equals(this.stringNullable, defaultValue.stringNullable);
} }
@ -356,7 +388,7 @@ public class DefaultValue {
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, arrayStringNullable, stringNullable); return Objects.hash(arrayStringEnumRefDefault, arrayStringEnumDefault, arrayStringDefault, arrayIntegerDefault, arrayString, arrayStringNullable, arrayStringExtensionNullable, stringNullable);
} }
private static <T> int hashCodeNullable(JsonNullable<T> a) { private static <T> int hashCodeNullable(JsonNullable<T> a) {
@ -376,6 +408,7 @@ public class DefaultValue {
sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n"); sb.append(" arrayIntegerDefault: ").append(toIndentedString(arrayIntegerDefault)).append("\n");
sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n"); sb.append(" arrayString: ").append(toIndentedString(arrayString)).append("\n");
sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n"); sb.append(" arrayStringNullable: ").append(toIndentedString(arrayStringNullable)).append("\n");
sb.append(" arrayStringExtensionNullable: ").append(toIndentedString(arrayStringExtensionNullable)).append("\n");
sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n"); sb.append(" stringNullable: ").append(toIndentedString(stringNullable)).append("\n");
sb.append("}"); sb.append("}");
return sb.toString(); return sb.toString();
@ -405,6 +438,7 @@ public class DefaultValue {
openapiFields.add("array_integer_default"); openapiFields.add("array_integer_default");
openapiFields.add("array_string"); openapiFields.add("array_string");
openapiFields.add("array_string_nullable"); openapiFields.add("array_string_nullable");
openapiFields.add("array_string_extension_nullable");
openapiFields.add("string_nullable"); openapiFields.add("string_nullable");
// a set of required properties/fields (JSON key names) // a set of required properties/fields (JSON key names)
@ -455,6 +489,10 @@ public class DefaultValue {
if (jsonObj.get("array_string_nullable") != null && !jsonObj.get("array_string_nullable").isJsonArray()) { if (jsonObj.get("array_string_nullable") != null && !jsonObj.get("array_string_nullable").isJsonArray()) {
throw new IllegalArgumentException(String.format("Expected the field `array_string_nullable` to be an array in the JSON string but got `%s`", jsonObj.get("array_string_nullable").toString())); throw new IllegalArgumentException(String.format("Expected the field `array_string_nullable` to be an array in the JSON string but got `%s`", jsonObj.get("array_string_nullable").toString()));
} }
// ensure the optional json data is an array if present
if (jsonObj.get("array_string_extension_nullable") != null && !jsonObj.get("array_string_extension_nullable").isJsonArray()) {
throw new IllegalArgumentException(String.format("Expected the field `array_string_extension_nullable` to be an array in the JSON string but got `%s`", jsonObj.get("array_string_extension_nullable").toString()));
}
if ((jsonObj.get("string_nullable") != null && !jsonObj.get("string_nullable").isJsonNull()) && !jsonObj.get("string_nullable").isJsonPrimitive()) { if ((jsonObj.get("string_nullable") != null && !jsonObj.get("string_nullable").isJsonNull()) && !jsonObj.get("string_nullable").isJsonPrimitive()) {
throw new IllegalArgumentException(String.format("Expected the field `string_nullable` to be a primitive type in the JSON string but got `%s`", jsonObj.get("string_nullable").toString())); throw new IllegalArgumentException(String.format("Expected the field `string_nullable` to be a primitive type in the JSON string but got `%s`", jsonObj.get("string_nullable").toString()));
} }

View File

@ -11,6 +11,7 @@ Name | Type | Description | Notes
**array_integer_default** | **List[int]** | | [optional] [default to [1,3]] **array_integer_default** | **List[int]** | | [optional] [default to [1,3]]
**array_string** | **List[str]** | | [optional] **array_string** | **List[str]** | | [optional]
**array_string_nullable** | **List[str]** | | [optional] **array_string_nullable** | **List[str]** | | [optional]
**array_string_extension_nullable** | **List[str]** | | [optional]
**string_nullable** | **str** | | [optional] **string_nullable** | **str** | | [optional]
## Example ## Example

View File

@ -34,8 +34,9 @@ class DefaultValue(BaseModel):
array_integer_default: Optional[List[StrictInt]] = None array_integer_default: Optional[List[StrictInt]] = None
array_string: Optional[List[StrictStr]] = None array_string: Optional[List[StrictStr]] = None
array_string_nullable: Optional[List[StrictStr]] = None array_string_nullable: Optional[List[StrictStr]] = None
array_string_extension_nullable: Optional[List[StrictStr]] = None
string_nullable: Optional[StrictStr] = None string_nullable: Optional[StrictStr] = None
__properties = ["array_string_enum_ref_default", "array_string_enum_default", "array_string_default", "array_integer_default", "array_string", "array_string_nullable", "string_nullable"] __properties = ["array_string_enum_ref_default", "array_string_enum_default", "array_string_default", "array_integer_default", "array_string", "array_string_nullable", "array_string_extension_nullable", "string_nullable"]
@validator('array_string_enum_default') @validator('array_string_enum_default')
def array_string_enum_default_validate_enum(cls, v): def array_string_enum_default_validate_enum(cls, v):
@ -73,6 +74,10 @@ class DefaultValue(BaseModel):
if self.array_string_nullable is None: if self.array_string_nullable is None:
_dict['array_string_nullable'] = None _dict['array_string_nullable'] = None
# set to None if array_string_extension_nullable (nullable) is None
if self.array_string_extension_nullable is None:
_dict['array_string_extension_nullable'] = None
# set to None if string_nullable (nullable) is None # set to None if string_nullable (nullable) is None
if self.string_nullable is None: if self.string_nullable is None:
_dict['string_nullable'] = None _dict['string_nullable'] = None
@ -95,6 +100,7 @@ class DefaultValue(BaseModel):
"array_integer_default": obj.get("array_integer_default"), "array_integer_default": obj.get("array_integer_default"),
"array_string": obj.get("array_string"), "array_string": obj.get("array_string"),
"array_string_nullable": obj.get("array_string_nullable"), "array_string_nullable": obj.get("array_string_nullable"),
"array_string_extension_nullable": obj.get("array_string_extension_nullable"),
"string_nullable": obj.get("string_nullable") "string_nullable": obj.get("string_nullable")
}) })
return _obj return _obj