Skip to content

Commit 2dd5477

Browse files
authored
[dart-dio] Adds support for generating inline enums (#5668)
* [dart-dio] Adds support for generating inline enums Previously these were generated as strings if declared inline in the spec. * Adds more detailed comment about inline enums
1 parent ae2b693 commit 2dd5477

File tree

9 files changed

+76
-9
lines changed

9 files changed

+76
-9
lines changed

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde
1111
@nullable
1212
{{/isNullable}}
1313
@BuiltValueField(wireName: r'{{baseName}}')
14-
{{{dataType}}} get {{name}};
14+
{{#isEnum}}{{classname}}{{{nameInCamelCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}} get {{name}};
1515
{{#allowableValues}}
1616
{{#min}} // range from {{min}} to {{max}}{{/min}}//{{^min}}enum {{name}}Enum { {{#values}} {{.}}, {{/values}} };{{/min}}
1717
{{/allowableValues}}
@@ -22,5 +22,17 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde
2222

2323
factory {{classname}}([updates({{classname}}Builder b)]) = _${{classname}};
2424
static Serializer<{{classname}}> get serializer => _${{classVarName}}Serializer;
25-
2625
}
26+
{{!
27+
Generate an enum for any variables that are declared as inline enums
28+
isEnum is only true for inline variables that are enums.
29+
If an enum is declared as a definition, isEnum is false and the enum is generated from the
30+
enum.mustache template.
31+
}}
32+
{{#vars}}
33+
{{#isEnum}}
34+
35+
{{>enum_inline}}
36+
37+
{{/isEnum}}
38+
{{/vars}}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class {{classname}}{{nameInCamelCase}} extends EnumClass {
2+
3+
{{#allowableValues}}
4+
{{#enumVars}}
5+
{{#description}}
6+
/// {{description}}
7+
{{/description}}
8+
@BuiltValueEnumConst(wireName: {{{value}}})
9+
static const {{classname}}{{nameInCamelCase}} {{name}} = _${{name}};
10+
{{/enumVars}}
11+
{{/allowableValues}}
12+
13+
static Serializer<{{classname}}{{nameInCamelCase}}> get serializer => _${{classVarName}}{{nameInCamelCase}}Serializer;
14+
15+
const {{classname}}{{nameInCamelCase}}._(String name): super(name);
16+
17+
static BuiltSet<{{classname}}{{nameInCamelCase}}> get values => _${{classVarName}}{{nameInCamelCase}}Values;
18+
static {{classname}}{{nameInCamelCase}} valueOf(String name) => _${{classVarName}}{{nameInCamelCase}}ValueOf(name);
19+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5.0.0-SNAPSHOT
1+
5.0.0-SNAPSHOT

samples/client/petstore/dart-dio/lib/model/api_response.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,5 @@ abstract class ApiResponse implements Built<ApiResponse, ApiResponseBuilder> {
2323

2424
factory ApiResponse([updates(ApiResponseBuilder b)]) = _$ApiResponse;
2525
static Serializer<ApiResponse> get serializer => _$apiResponseSerializer;
26-
2726
}
2827

samples/client/petstore/dart-dio/lib/model/category.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,5 @@ abstract class Category implements Built<Category, CategoryBuilder> {
1919

2020
factory Category([updates(CategoryBuilder b)]) = _$Category;
2121
static Serializer<Category> get serializer => _$categorySerializer;
22-
2322
}
2423

samples/client/petstore/dart-dio/lib/model/order.dart

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ abstract class Order implements Built<Order, OrderBuilder> {
2424
/* Order Status */
2525
@nullable
2626
@BuiltValueField(wireName: r'status')
27-
String get status;
27+
OrderStatus get status;
2828
//enum statusEnum { placed, approved, delivered, };
2929

3030
@nullable
@@ -36,6 +36,26 @@ abstract class Order implements Built<Order, OrderBuilder> {
3636

3737
factory Order([updates(OrderBuilder b)]) = _$Order;
3838
static Serializer<Order> get serializer => _$orderSerializer;
39+
}
40+
41+
class OrderStatus extends EnumClass {
42+
43+
/// Order Status
44+
@BuiltValueEnumConst(wireName: "placed")
45+
static const OrderStatus placed = _$placed;
46+
/// Order Status
47+
@BuiltValueEnumConst(wireName: "approved")
48+
static const OrderStatus approved = _$approved;
49+
/// Order Status
50+
@BuiltValueEnumConst(wireName: "delivered")
51+
static const OrderStatus delivered = _$delivered;
3952

53+
static Serializer<OrderStatus> get serializer => _$orderStatusSerializer;
54+
55+
const OrderStatus._(String name): super(name);
56+
57+
static BuiltSet<OrderStatus> get values => _$orderStatusValues;
58+
static OrderStatus valueOf(String name) => _$orderStatusValueOf(name);
4059
}
4160

61+

samples/client/petstore/dart-dio/lib/model/pet.dart

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,34 @@ abstract class Pet implements Built<Pet, PetBuilder> {
3131
/* pet status in the store */
3232
@nullable
3333
@BuiltValueField(wireName: r'status')
34-
String get status;
34+
PetStatus get status;
3535
//enum statusEnum { available, pending, sold, };
3636

3737
// Boilerplate code needed to wire-up generated code
3838
Pet._();
3939

4040
factory Pet([updates(PetBuilder b)]) = _$Pet;
4141
static Serializer<Pet> get serializer => _$petSerializer;
42+
}
43+
44+
class PetStatus extends EnumClass {
45+
46+
/// pet status in the store
47+
@BuiltValueEnumConst(wireName: "available")
48+
static const PetStatus available = _$available;
49+
/// pet status in the store
50+
@BuiltValueEnumConst(wireName: "pending")
51+
static const PetStatus pending = _$pending;
52+
/// pet status in the store
53+
@BuiltValueEnumConst(wireName: "sold")
54+
static const PetStatus sold = _$sold;
4255

56+
static Serializer<PetStatus> get serializer => _$petStatusSerializer;
57+
58+
const PetStatus._(String name): super(name);
59+
60+
static BuiltSet<PetStatus> get values => _$petStatusValues;
61+
static PetStatus valueOf(String name) => _$petStatusValueOf(name);
4362
}
4463

64+

samples/client/petstore/dart-dio/lib/model/tag.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,5 @@ abstract class Tag implements Built<Tag, TagBuilder> {
1919

2020
factory Tag([updates(TagBuilder b)]) = _$Tag;
2121
static Serializer<Tag> get serializer => _$tagSerializer;
22-
2322
}
2423

samples/client/petstore/dart-dio/lib/model/user.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,5 @@ abstract class User implements Built<User, UserBuilder> {
4343

4444
factory User([updates(UserBuilder b)]) = _$User;
4545
static Serializer<User> get serializer => _$userSerializer;
46-
4746
}
4847

0 commit comments

Comments
 (0)