Skip to content

Commit 70b3b61

Browse files
committed
fix: more testings which ended up actually needing the deserialization part
1 parent e47a30a commit 70b3b61

4 files changed

Lines changed: 16 additions & 4 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,13 +657,16 @@ private void wrapPropertyWithOptional(CodegenProperty property) {
657657

658658
boolean hasNullableSuffix = property.dataType.endsWith("?");
659659
String baseType = hasNullableSuffix ? property.dataType.substring(0, property.dataType.length() - 1) : property.dataType;
660+
property.vendorExtensions.put("x-unwrapped-datatype-nullable", baseType + "?");
660661
property.dataType = "Optional<" + baseType + "?" + ">";
661662

662663
if (property.datatypeWithEnum != null && !property.datatypeWithEnum.startsWith("Optional<")) {
663664
hasNullableSuffix = property.datatypeWithEnum.endsWith("?");
664665
baseType = hasNullableSuffix ? property.datatypeWithEnum.substring(0, property.datatypeWithEnum.length() - 1) : property.datatypeWithEnum;
665666
property.datatypeWithEnum = "Optional<" + baseType + "?" + ">";
666667
}
668+
669+
property.isNullable = false;
667670
}
668671

669672
@Override

modules/openapi-generator/src/main/resources/dart/libraries/dio/optional.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import 'package:json_annotation/json_annotation.dart';
1919
/// // Field has value - sends {"field": "value"}
2020
/// final patch3 = Model(field: const Optional.present('value'));
2121
/// ```
22-
sealed class Optional<T> {
22+
abstract class Optional<T> {
2323
const Optional();
2424
2525
/// Creates an Optional with an absent value (not set).
@@ -48,7 +48,7 @@ sealed class Optional<T> {
4848
}
4949

5050
/// Represents an absent Optional value.
51-
final class Absent<T> extends Optional<T> {
51+
class Absent<T> extends Optional<T> {
5252
const Absent();
5353
5454
@override
@@ -77,7 +77,7 @@ final class Absent<T> extends Optional<T> {
7777
}
7878

7979
/// Represents a present Optional value.
80-
final class Present<T> extends Optional<T> {
80+
class Present<T> extends Optional<T> {
8181
const Present(this._value);
8282
8383
final T _value;

modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/class_members.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@Deprecated('{{{name}}} has been deprecated')
88
{{/deprecated}}
99
@BuiltValueField(wireName: r'{{baseName}}')
10-
{{>serialization/built_value/variable_type}}{{^isNullable}}{{^required}}?{{/required}}{{/isNullable}} get {{name}};
10+
{{>serialization/built_value/variable_type}}{{^vendorExtensions.x-is-optional}}{{^isNullable}}{{^required}}?{{/required}}{{/isNullable}}{{/vendorExtensions.x-is-optional}} get {{name}};
1111
{{#allowableValues}}
1212
// {{#min}}range from {{{min}}} to {{{max}}}{{/min}}{{^min}}enum {{name}}Enum { {{#values}} {{{.}}}, {{/values}} };{{/min}}
1313
{{/allowableValues}}

modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/built_value/deserialize_properties.mustache

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@
1212
switch (key) {
1313
{{#vendorExtensions.x-self-and-ancestor-only-props}}
1414
case r'{{baseName}}':
15+
{{#vendorExtensions.x-is-optional}}
16+
final valueDes = serializers.deserialize(
17+
value,
18+
specifiedType: const {{>serialization/built_value/variable_serializer_type}},
19+
) as {{{vendorExtensions.x-unwrapped-datatype-nullable}}};
20+
result.{{{name}}} = Optional.present(valueDes);
21+
{{/vendorExtensions.x-is-optional}}
22+
{{^vendorExtensions.x-is-optional}}
1523
final valueDes = serializers.deserialize(
1624
value,
1725
specifiedType: const {{>serialization/built_value/variable_serializer_type}},
@@ -46,6 +54,7 @@
4654
{{/isModel}}
4755
{{/isEnum}}
4856
{{/isContainer}}
57+
{{/vendorExtensions.x-is-optional}}
4958
break;
5059
{{/vendorExtensions.x-self-and-ancestor-only-props}}
5160
default:

0 commit comments

Comments
 (0)