Skip to content

Commit fea6d6c

Browse files
committed
feat chaotic: support structs SAX with user-types
Tests: протестировано CI commit_hash:ed67e6ad5eee1fcc76930b983dbc93f18f18e359
1 parent b1d70a2 commit fea6d6c

File tree

12 files changed

+162
-45
lines changed

12 files changed

+162
-45
lines changed

.mapping.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@
324324
"chaotic/integration_tests/schemas/int.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/int.yaml",
325325
"chaotic/integration_tests/schemas/int_minmax.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/int_minmax.yaml",
326326
"chaotic/integration_tests/schemas/invalid_names.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/invalid_names.yaml",
327+
"chaotic/integration_tests/schemas/no_sax.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/no_sax.yaml",
327328
"chaotic/integration_tests/schemas/object_empty.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/object_empty.yaml",
328329
"chaotic/integration_tests/schemas/object_extra.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/object_extra.yaml",
329330
"chaotic/integration_tests/schemas/object_name.yaml":"taxi/uservices/userver/chaotic/integration_tests/schemas/object_name.yaml",

chaotic/chaotic/back/cpp/templates/type.cpp.jinja

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@
4040
{
4141
{% if generate_sax_parser %}
4242
return {{ userver }}::formats::json::parser::ParseToType<
43-
{{ shortest_cpp_name(type) }},
44-
{{ userver }}::chaotic::sax::Parser<{{ shortest_cpp_name(type) }}>
43+
{{ shortest_cpp_name(type) }},
44+
{{ userver }}::chaotic::sax::impl::RemoveUserTypeParser<
45+
{{ userver }}::chaotic::sax::Parser<{{ shortest_cpp_name(type) }}>
46+
>
4547
>(json);
4648
{% else %}
4749
return {{ userver }}::formats::json::FromString(json).As<{{ shortest_cpp_name(type) }}>();

chaotic/golden_tests/output/schemas/allof/allof.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
namespace ns {
88

99
AllOf FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<AllOf>) {
10-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<AllOf, USERVER_NAMESPACE::chaotic::sax::Parser<AllOf>>(
10+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
11+
AllOf,
12+
USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<AllOf>>>(
1113
json);
1214
}
1315

chaotic/golden_tests/output/schemas/enum/enum.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
namespace ns {
88

99
Enum FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<Enum>) {
10-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<Enum, USERVER_NAMESPACE::chaotic::sax::Parser<Enum>>(
10+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
11+
Enum, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<Enum>>>(
1112
json);
1213
}
1314

chaotic/golden_tests/output/schemas/int/int.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
namespace ns {
88

99
Int FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<Int>) {
10-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<Int, USERVER_NAMESPACE::chaotic::sax::Parser<Int> >(
10+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
11+
Int, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<Int> > >(
1112
json);
1213
}
1314

chaotic/golden_tests/output/schemas/oneof/oneof.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
namespace ns {
88

99
OneOf FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<OneOf>) {
10-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<OneOf, USERVER_NAMESPACE::chaotic::sax::Parser<OneOf>>(
10+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
11+
OneOf,
12+
USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<OneOf>>>(
1113
json);
1214
}
1315

chaotic/golden_tests/output/schemas/oneofdiscriminator/oneofdiscriminator.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
namespace ns {
88

99
A FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<A>) {
10-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<A, USERVER_NAMESPACE::chaotic::sax::Parser<A>>(json);
10+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
11+
A, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<A>>>(json);
1112
}
1213

1314
bool operator==(const A& lhs, const A& rhs) {
@@ -49,7 +50,8 @@ USERVER_NAMESPACE::formats::json::Value Serialize(
4950
}
5051

5152
B FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<B>) {
52-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<B, USERVER_NAMESPACE::chaotic::sax::Parser<B>>(json);
53+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
54+
B, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<B>>>(json);
5355
}
5456

5557
bool operator==(const B& lhs, const B& rhs) {
@@ -91,7 +93,8 @@ USERVER_NAMESPACE::formats::json::Value Serialize(
9193
}
9294

9395
C FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<C>) {
94-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<C, USERVER_NAMESPACE::chaotic::sax::Parser<C>>(json);
96+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
97+
C, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<C>>>(json);
9598
}
9699

97100
bool operator==(const C& lhs, const C& rhs) { return lhs.version == rhs.version && true; }
@@ -125,7 +128,8 @@ USERVER_NAMESPACE::formats::json::Value Serialize(
125128
}
126129

127130
D FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<D>) {
128-
return USERVER_NAMESPACE::formats::json::parser::ParseToType<D, USERVER_NAMESPACE::chaotic::sax::Parser<D>>(json);
131+
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
132+
D, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<USERVER_NAMESPACE::chaotic::sax::Parser<D>>>(json);
129133
}
130134

131135
bool operator==(const D& lhs, const D& rhs) { return lhs.version == rhs.version && true; }
@@ -161,7 +165,8 @@ USERVER_NAMESPACE::formats::json::Value Serialize(
161165
IntegerOneOfDiscriminator FromJsonString(std::string_view json,
162166
USERVER_NAMESPACE::formats::parse::To<IntegerOneOfDiscriminator>) {
163167
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
164-
IntegerOneOfDiscriminator, USERVER_NAMESPACE::chaotic::sax::Parser<IntegerOneOfDiscriminator>>(json);
168+
IntegerOneOfDiscriminator, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<
169+
USERVER_NAMESPACE::chaotic::sax::Parser<IntegerOneOfDiscriminator>>>(json);
165170
}
166171

167172
bool operator==(const IntegerOneOfDiscriminator& lhs, const IntegerOneOfDiscriminator& rhs) {
@@ -201,7 +206,8 @@ USERVER_NAMESPACE::formats::json::Value Serialize(
201206

202207
OneOfDiscriminator FromJsonString(std::string_view json, USERVER_NAMESPACE::formats::parse::To<OneOfDiscriminator>) {
203208
return USERVER_NAMESPACE::formats::json::parser::ParseToType<
204-
OneOfDiscriminator, USERVER_NAMESPACE::chaotic::sax::Parser<OneOfDiscriminator>>(json);
209+
OneOfDiscriminator, USERVER_NAMESPACE::chaotic::sax::impl::RemoveUserTypeParser<
210+
USERVER_NAMESPACE::chaotic::sax::Parser<OneOfDiscriminator>>>(json);
205211
}
206212

207213
bool operator==(const OneOfDiscriminator& lhs, const OneOfDiscriminator& rhs) { return lhs.foo == rhs.foo && true; }

0 commit comments

Comments
 (0)