forked from loafle/openapi-generator-original
[dart-dio] Generate the correct serializers (#8357)
* only generate actually used serializers (anything used in body or response) * generate previously missing serializers for collection types * improve formatting
This commit is contained in:
parent
3b6c2b2342
commit
c43234711a
@ -289,6 +289,7 @@ public class DartDioClientCodegen extends DartClientCodegen {
|
||||
Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
|
||||
List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
|
||||
|
||||
Set<Map<String, Object>> serializers = new HashSet<>();
|
||||
Set<String> modelImports = new HashSet<>();
|
||||
Set<String> fullImports = new HashSet<>();
|
||||
|
||||
@ -314,6 +315,13 @@ public class DartDioClientCodegen extends DartClientCodegen {
|
||||
param.baseType = "MultipartFile";
|
||||
param.dataType = "MultipartFile";
|
||||
}
|
||||
if (param.isContainer) {
|
||||
final Map<String, Object> serializer = new HashMap<>();
|
||||
serializer.put("isArray", param.isArray);
|
||||
serializer.put("isMap", param.isMap);
|
||||
serializer.put("baseType", param.baseType);
|
||||
serializers.add(serializer);
|
||||
}
|
||||
}
|
||||
|
||||
op.vendorExtensions.put("x-is-json", isJson);
|
||||
@ -336,10 +344,19 @@ public class DartDioClientCodegen extends DartClientCodegen {
|
||||
}
|
||||
modelImports.addAll(imports);
|
||||
op.imports = imports;
|
||||
|
||||
if (op.returnContainer != null) {
|
||||
final Map<String, Object> serializer = new HashMap<>();
|
||||
serializer.put("isArray", Objects.equals("array", op.returnContainer));
|
||||
serializer.put("isMap", Objects.equals("map", op.returnContainer));
|
||||
serializer.put("baseType", op.returnBaseType);
|
||||
serializers.add(serializer);
|
||||
}
|
||||
}
|
||||
|
||||
objs.put("modelImports", modelImports);
|
||||
objs.put("fullImports", fullImports);
|
||||
objs.put("serializers", serializers);
|
||||
|
||||
return objs;
|
||||
}
|
||||
|
@ -10,25 +10,26 @@ import 'package:built_value/standard_json_plugin.dart';
|
||||
import 'package:{{pubName}}/local_date_serializer.dart';{{/timeMachine}}
|
||||
{{#models}}{{#model}}import 'package:{{pubName}}/model/{{classFilename}}.dart';
|
||||
{{/model}}{{/models}}
|
||||
|
||||
part 'serializers.g.dart';
|
||||
|
||||
@SerializersFor(const [
|
||||
{{#models}}{{#model}}{{classname}},
|
||||
{{/model}}{{/models}}
|
||||
@SerializersFor(const [{{#models}}{{#model}}
|
||||
{{classname}},{{/model}}{{/models}}
|
||||
])
|
||||
|
||||
//allow all models to be serialized within a list
|
||||
Serializers serializers = (_$serializers.toBuilder()
|
||||
{{#models}}{{#model}}..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType({{classname}})]),
|
||||
() => new ListBuilder<{{classname}}>())
|
||||
{{/model}}{{/models}}
|
||||
..add(Iso8601DateTimeSerializer())
|
||||
).build();
|
||||
Serializers serializers = (_$serializers.toBuilder(){{#apiInfo}}{{#apis}}{{#serializers}}
|
||||
..addBuilderFactory(
|
||||
{{#isArray}}
|
||||
const FullType(BuiltList, [FullType({{baseType}})]),
|
||||
() => ListBuilder<{{baseType}}>(),
|
||||
{{/isArray}}
|
||||
{{#isMap}}
|
||||
const FullType(BuiltMap, [FullType(String), FullType({{baseType}})]),
|
||||
() => MapBuilder<String, {{baseType}}>(),
|
||||
{{/isMap}}
|
||||
){{/serializers}}{{/apis}}{{/apiInfo}}{{#timeMachine}}
|
||||
..add(OffsetDateSerializer())
|
||||
..add(OffsetDateTimeSerializer()){{/timeMachine}}
|
||||
..add(Iso8601DateTimeSerializer()))
|
||||
.build();
|
||||
|
||||
Serializers standardSerializers =
|
||||
(serializers.toBuilder()
|
||||
{{#timeMachine}}..add(OffsetDateSerializer())
|
||||
..add(OffsetDateTimeSerializer())
|
||||
{{/timeMachine}}..addPlugin(StandardJsonPlugin())).build();
|
||||
(serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
|
||||
|
@ -20,7 +20,6 @@ import 'package:openapi/model/pet.dart';
|
||||
import 'package:openapi/model/tag.dart';
|
||||
import 'package:openapi/model/user.dart';
|
||||
|
||||
|
||||
part 'serializers.g.dart';
|
||||
|
||||
@SerializersFor(const [
|
||||
@ -30,33 +29,22 @@ Order,
|
||||
Pet,
|
||||
Tag,
|
||||
User,
|
||||
|
||||
])
|
||||
|
||||
//allow all models to be serialized within a list
|
||||
Serializers serializers = (_$serializers.toBuilder()
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ApiResponse)]),
|
||||
() => new ListBuilder<ApiResponse>())
|
||||
const FullType(BuiltList, [FullType(Pet)]),
|
||||
() => ListBuilder<Pet>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Category)]),
|
||||
() => new ListBuilder<Category>())
|
||||
const FullType(BuiltMap, [FullType(String), FullType(int)]),
|
||||
() => MapBuilder<String, int>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Order)]),
|
||||
() => new ListBuilder<Order>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Pet)]),
|
||||
() => new ListBuilder<Pet>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Tag)]),
|
||||
() => new ListBuilder<Tag>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(User)]),
|
||||
() => new ListBuilder<User>())
|
||||
|
||||
..add(Iso8601DateTimeSerializer())
|
||||
).build();
|
||||
const FullType(BuiltList, [FullType(User)]),
|
||||
() => ListBuilder<User>(),
|
||||
)
|
||||
..add(Iso8601DateTimeSerializer()))
|
||||
.build();
|
||||
|
||||
Serializers standardSerializers =
|
||||
(serializers.toBuilder()
|
||||
..addPlugin(StandardJsonPlugin())).build();
|
||||
(serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
|
||||
|
@ -20,7 +20,6 @@ import 'package:openapi/model/pet.dart';
|
||||
import 'package:openapi/model/tag.dart';
|
||||
import 'package:openapi/model/user.dart';
|
||||
|
||||
|
||||
part 'serializers.g.dart';
|
||||
|
||||
@SerializersFor(const [
|
||||
@ -30,33 +29,22 @@ Order,
|
||||
Pet,
|
||||
Tag,
|
||||
User,
|
||||
|
||||
])
|
||||
|
||||
//allow all models to be serialized within a list
|
||||
Serializers serializers = (_$serializers.toBuilder()
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ApiResponse)]),
|
||||
() => new ListBuilder<ApiResponse>())
|
||||
const FullType(BuiltList, [FullType(Pet)]),
|
||||
() => ListBuilder<Pet>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Category)]),
|
||||
() => new ListBuilder<Category>())
|
||||
const FullType(BuiltMap, [FullType(String), FullType(int)]),
|
||||
() => MapBuilder<String, int>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Order)]),
|
||||
() => new ListBuilder<Order>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Pet)]),
|
||||
() => new ListBuilder<Pet>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Tag)]),
|
||||
() => new ListBuilder<Tag>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(User)]),
|
||||
() => new ListBuilder<User>())
|
||||
|
||||
..add(Iso8601DateTimeSerializer())
|
||||
).build();
|
||||
const FullType(BuiltList, [FullType(User)]),
|
||||
() => ListBuilder<User>(),
|
||||
)
|
||||
..add(Iso8601DateTimeSerializer()))
|
||||
.build();
|
||||
|
||||
Serializers standardSerializers =
|
||||
(serializers.toBuilder()
|
||||
..addPlugin(StandardJsonPlugin())).build();
|
||||
(serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
|
||||
|
@ -57,7 +57,6 @@ import 'package:openapi/model/special_model_name.dart';
|
||||
import 'package:openapi/model/tag.dart';
|
||||
import 'package:openapi/model/user.dart';
|
||||
|
||||
|
||||
part 'serializers.g.dart';
|
||||
|
||||
@SerializersFor(const [
|
||||
@ -104,144 +103,26 @@ ReadOnlyFirst,
|
||||
SpecialModelName,
|
||||
Tag,
|
||||
User,
|
||||
|
||||
])
|
||||
|
||||
//allow all models to be serialized within a list
|
||||
Serializers serializers = (_$serializers.toBuilder()
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(AdditionalPropertiesClass)]),
|
||||
() => new ListBuilder<AdditionalPropertiesClass>())
|
||||
const FullType(BuiltMap, [FullType(String), FullType(String)]),
|
||||
() => MapBuilder<String, String>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Animal)]),
|
||||
() => new ListBuilder<Animal>())
|
||||
const FullType(BuiltList, [FullType(Pet)]),
|
||||
() => ListBuilder<Pet>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ApiResponse)]),
|
||||
() => new ListBuilder<ApiResponse>())
|
||||
const FullType(BuiltMap, [FullType(String), FullType(int)]),
|
||||
() => MapBuilder<String, int>(),
|
||||
)
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ArrayOfArrayOfNumberOnly)]),
|
||||
() => new ListBuilder<ArrayOfArrayOfNumberOnly>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ArrayOfNumberOnly)]),
|
||||
() => new ListBuilder<ArrayOfNumberOnly>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ArrayTest)]),
|
||||
() => new ListBuilder<ArrayTest>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Capitalization)]),
|
||||
() => new ListBuilder<Capitalization>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Cat)]),
|
||||
() => new ListBuilder<Cat>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(CatAllOf)]),
|
||||
() => new ListBuilder<CatAllOf>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Category)]),
|
||||
() => new ListBuilder<Category>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ClassModel)]),
|
||||
() => new ListBuilder<ClassModel>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Dog)]),
|
||||
() => new ListBuilder<Dog>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(DogAllOf)]),
|
||||
() => new ListBuilder<DogAllOf>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(EnumArrays)]),
|
||||
() => new ListBuilder<EnumArrays>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(EnumTest)]),
|
||||
() => new ListBuilder<EnumTest>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(FileSchemaTestClass)]),
|
||||
() => new ListBuilder<FileSchemaTestClass>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Foo)]),
|
||||
() => new ListBuilder<Foo>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(FormatTest)]),
|
||||
() => new ListBuilder<FormatTest>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(HasOnlyReadOnly)]),
|
||||
() => new ListBuilder<HasOnlyReadOnly>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(HealthCheckResult)]),
|
||||
() => new ListBuilder<HealthCheckResult>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(InlineResponseDefault)]),
|
||||
() => new ListBuilder<InlineResponseDefault>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(MapTest)]),
|
||||
() => new ListBuilder<MapTest>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(MixedPropertiesAndAdditionalPropertiesClass)]),
|
||||
() => new ListBuilder<MixedPropertiesAndAdditionalPropertiesClass>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Model200Response)]),
|
||||
() => new ListBuilder<Model200Response>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ModelClient)]),
|
||||
() => new ListBuilder<ModelClient>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ModelEnumClass)]),
|
||||
() => new ListBuilder<ModelEnumClass>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ModelFile)]),
|
||||
() => new ListBuilder<ModelFile>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ModelList)]),
|
||||
() => new ListBuilder<ModelList>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ModelReturn)]),
|
||||
() => new ListBuilder<ModelReturn>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Name)]),
|
||||
() => new ListBuilder<Name>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(NullableClass)]),
|
||||
() => new ListBuilder<NullableClass>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(NumberOnly)]),
|
||||
() => new ListBuilder<NumberOnly>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Order)]),
|
||||
() => new ListBuilder<Order>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(OuterComposite)]),
|
||||
() => new ListBuilder<OuterComposite>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(OuterEnum)]),
|
||||
() => new ListBuilder<OuterEnum>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(OuterEnumDefaultValue)]),
|
||||
() => new ListBuilder<OuterEnumDefaultValue>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(OuterEnumInteger)]),
|
||||
() => new ListBuilder<OuterEnumInteger>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(OuterEnumIntegerDefaultValue)]),
|
||||
() => new ListBuilder<OuterEnumIntegerDefaultValue>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Pet)]),
|
||||
() => new ListBuilder<Pet>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(ReadOnlyFirst)]),
|
||||
() => new ListBuilder<ReadOnlyFirst>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(SpecialModelName)]),
|
||||
() => new ListBuilder<SpecialModelName>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(Tag)]),
|
||||
() => new ListBuilder<Tag>())
|
||||
..addBuilderFactory(
|
||||
const FullType(BuiltList, const [const FullType(User)]),
|
||||
() => new ListBuilder<User>())
|
||||
|
||||
..add(Iso8601DateTimeSerializer())
|
||||
).build();
|
||||
const FullType(BuiltList, [FullType(User)]),
|
||||
() => ListBuilder<User>(),
|
||||
)
|
||||
..add(Iso8601DateTimeSerializer()))
|
||||
.build();
|
||||
|
||||
Serializers standardSerializers =
|
||||
(serializers.toBuilder()
|
||||
..addPlugin(StandardJsonPlugin())).build();
|
||||
(serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
|
||||
|
Loading…
x
Reference in New Issue
Block a user