Skip to content

Commit a9515ce

Browse files
committed
Update
1 parent fa93897 commit a9515ce

File tree

7 files changed

+36
-50
lines changed

7 files changed

+36
-50
lines changed

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -744,8 +744,8 @@ private void postProcessPolymorphism(List<ModelMap> allModels) {
744744
}
745745

746746
private static void processPolymorphismDataType(final List<CodegenProperty> cp) {
747-
HashSet<String> dedupDataTypeWithEnum = new HashSet();
748-
HashMap<String, Integer> dedupDataType = new HashMap();
747+
final HashSet<String> dedupDataTypeWithEnum = new HashSet<>();
748+
final HashMap<String, Integer> dedupDataType = new HashMap<>();
749749

750750
int idx = 0;
751751
for (CodegenProperty model : cp) {
@@ -943,7 +943,7 @@ public void addOperationToGroup(String tag, String resourcePath, Operation opera
943943
// restore things to sensible values.
944944
@Override
945945
public CodegenParameter fromRequestBody(RequestBody body, Set<String> imports, String bodyParameterName) {
946-
final Schema original_schema = ModelUtils.getSchemaFromRequestBody(body);
946+
final var original_schema = ModelUtils.getSchemaFromRequestBody(body);
947947
CodegenParameter codegenParameter = super.fromRequestBody(body, imports, bodyParameterName);
948948

949949
if (StringUtils.isNotBlank(original_schema.get$ref())) {
@@ -962,10 +962,10 @@ public CodegenParameter fromRequestBody(RequestBody body, Set<String> imports, S
962962
@Override
963963
public String toInstantiationType(final Schema p) {
964964
if (ModelUtils.isArraySchema(p)) {
965-
final Schema inner = ModelUtils.getSchemaItems(p);
965+
final var inner = ModelUtils.getSchemaItems(p);
966966
return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">";
967967
} else if (ModelUtils.isMapSchema(p)) {
968-
final Schema inner = ModelUtils.getAdditionalProperties(p);
968+
final var inner = ModelUtils.getAdditionalProperties(p);
969969
return instantiationTypes.get("map") + "<" + typeMapping.get("string") + ", " + getSchemaType(inner) + ">";
970970
} else {
971971
return null;
@@ -994,6 +994,10 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> bun
994994
@Override
995995
public String toDefaultValue(final Schema p) {
996996
String defaultValue = null;
997+
998+
if (ModelUtils.isEnumSchema(p))
999+
return null;
1000+
9971001
if ((ModelUtils.isNullable(p)) && (p.getDefault() != null) && ("null".equalsIgnoreCase(p.getDefault().toString())))
9981002
return "Nullable::Null";
9991003

@@ -1138,7 +1142,7 @@ public void postProcessFile(File file, String fileType) {
11381142
}
11391143

11401144
@Override
1141-
protected void updateParameterForString(CodegenParameter codegenParameter, Schema parameterSchema) {
1145+
protected void updateParameterForString(CodegenParameter codegenParameter, final Schema parameterSchema) {
11421146
if (ModelUtils.isEmailSchema(parameterSchema)) {
11431147
codegenParameter.isEmail = true;
11441148
} else if (ModelUtils.isUUIDSchema(parameterSchema)) {
@@ -1165,7 +1169,7 @@ protected void updateParameterForString(CodegenParameter codegenParameter, Schem
11651169
codegenParameter.isDecimal = true;
11661170
codegenParameter.isPrimitiveType = true;
11671171
}
1168-
if (Boolean.TRUE.equals(codegenParameter.isString)) {
1172+
if (codegenParameter.isString) {
11691173
codegenParameter.isPrimitiveType = true;
11701174
}
11711175
}

modules/openapi-generator/src/main/resources/rust-axum/models.mustache

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -913,8 +913,10 @@ pub struct {{{classname}}} {
913913
/// Note: inline enums are not fully supported by openapi-generator
914914
{{/isEnum}}
915915
{{#isDiscriminator}}
916+
{{#isString}}
916917
#[serde(default = "{{{classname}}}::_name_for_{{{name}}}")]
917918
#[serde(serialize_with = "{{{classname}}}::_serialize_{{{name}}}")]
919+
{{/isString}}
918920
{{/isDiscriminator}}
919921
#[serde(rename = "{{{baseName}}}")]
920922
{{#hasValidation}}
@@ -1017,24 +1019,33 @@ pub struct {{{classname}}} {
10171019
{{/isNullable}}
10181020
{{/hasValidation}}
10191021
{{#required}}
1020-
pub {{{name}}}: {{^isDiscriminator}}{{#isNullable}}Nullable<{{/isNullable}}{{{dataType}}}{{#isNullable}}>{{/isNullable}}{{/isDiscriminator}}{{#isDiscriminator}}{{{dataType}}}{{/isDiscriminator}},
1022+
pub {{{name}}}: {{#isNullable}}Nullable<{{/isNullable}}{{{dataType}}}{{#isNullable}}>{{/isNullable}},
10211023
{{/required}}
10221024
{{^required}}
10231025
{{^isDiscriminator}}
10241026
{{#isNullable}}
10251027
#[serde(deserialize_with = "deserialize_optional_nullable")]
10261028
#[serde(default = "default_optional_nullable")]
10271029
{{/isNullable}}
1028-
#[serde(skip_serializing_if="Option::is_none")]
10291030
{{/isDiscriminator}}
1030-
pub {{{name}}}: {{^isDiscriminator}}Option<{{#isNullable}}Nullable<{{/isNullable}}{{{dataType}}}{{#isNullable}}>{{/isNullable}}>{{/isDiscriminator}}{{#isDiscriminator}}{{{dataType}}}{{/isDiscriminator}},
1031+
{{#isDiscriminator}}
1032+
{{^isString}}
1033+
{{#isNullable}}
1034+
#[serde(deserialize_with = "deserialize_optional_nullable")]
1035+
#[serde(default = "default_optional_nullable")]
1036+
{{/isNullable}}
1037+
{{/isString}}
1038+
{{/isDiscriminator}}
1039+
#[serde(skip_serializing_if="Option::is_none")]
1040+
pub {{{name}}}: Option<{{#isNullable}}Nullable<{{/isNullable}}{{{dataType}}}{{#isNullable}}>{{/isNullable}}>,
10311041
{{/required}}
10321042
10331043
{{/vars}}
10341044
}
10351045
10361046
{{#vars}}
10371047
{{#isDiscriminator}}
1048+
{{#isString}}
10381049
impl {{{classname}}} {
10391050
fn _name_for_{{{name}}}() -> String {
10401051
String::from("{{{classname}}}")
@@ -1047,6 +1058,7 @@ impl {{{classname}}} {
10471058
s.serialize_str(&Self::_name_for_{{{name}}}())
10481059
}
10491060
}
1061+
{{/isString}}
10501062
{{/isDiscriminator}}
10511063
{{/vars}}
10521064
@@ -1077,9 +1089,9 @@ fn validate_byte_{{#lambda.lowercase}}{{{classname}}}_{{{name}}}{{/lambda.lowerc
10771089
10781090
impl {{{classname}}} {
10791091
#[allow(clippy::new_without_default, clippy::too_many_arguments)]
1080-
pub fn new({{#vars}}{{^defaultValue}}{{{name}}}: {{^isDiscriminator}}{{#isNullable}}Nullable<{{/isNullable}}{{/isDiscriminator}}{{{dataType}}}{{^isDiscriminator}}{{#isNullable}}>{{/isNullable}}{{/isDiscriminator}}, {{/defaultValue}}{{/vars}}) -> {{{classname}}} {
1092+
pub fn new({{#vars}}{{^isDiscriminator}}{{^defaultValue}}{{{name}}}: {{#isNullable}}Nullable<{{/isNullable}}{{{dataType}}}{{#isNullable}}>{{/isNullable}}, {{/defaultValue}}{{/isDiscriminator}}{{#isDiscriminator}}{{^isString}}{{^defaultValue}}{{{name}}}: {{#isNullable}}Nullable<{{/isNullable}}{{{dataType}}}{{#isNullable}}>{{/isNullable}}, {{/defaultValue}}{{/isString}}{{/isDiscriminator}}{{/vars}}) -> {{{classname}}} {
10811093
{{{classname}}} {
1082-
{{#vars}} {{^isDiscriminator}}{{#defaultValue}}{{{name}}}: {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{{name}}}{{/defaultValue}}{{/isDiscriminator}}{{#isDiscriminator}}{{{name}}}: Self::_name_for_{{{name}}}(){{/isDiscriminator}},
1094+
{{#vars}} {{^isDiscriminator}}{{#defaultValue}}{{{name}}}: {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{{name}}}{{/defaultValue}}{{/isDiscriminator}}{{#isDiscriminator}}{{#isString}}{{{name}}}: Self::_name_for_{{{name}}}(){{/isString}}{{^isString}}{{#defaultValue}}{{{name}}}: {{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{{name}}}{{/defaultValue}}{{/isString}}{{/isDiscriminator}},
10831095
{{/vars}}
10841096
}
10851097
}
@@ -1092,7 +1104,6 @@ impl std::fmt::Display for {{{classname}}} {
10921104
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
10931105
let params: Vec<Option<String>> = vec![
10941106
{{#vars}}
1095-
{{^isDiscriminator}}
10961107
{{#isByteArray}}
10971108
// Skipping {{baseName}} in query parameter serialization
10981109
{{/isByteArray}}
@@ -1145,9 +1156,7 @@ impl std::fmt::Display for {{{classname}}} {
11451156
{{/isArray}}
11461157
].join(",")
11471158
}),
1148-
{{/required}}
1149-
{{/isPrimitiveType}}{{/isMap}}{{/isBinary}}{{/isByteArray}}{{/isDiscriminator}}
1150-
{{#isDiscriminator}} Some("{{{baseName}}}".to_string()), Some(self.{{{name}}}.clone()),{{/isDiscriminator}}
1159+
{{/required}}{{/isPrimitiveType}}{{/isMap}}{{/isBinary}}{{/isByteArray}}
11511160
{{/vars}}
11521161
];
11531162

@@ -1221,17 +1230,12 @@ impl std::str::FromStr for {{{classname}}} {
12211230
// Use the intermediate representation to return the struct
12221231
std::result::Result::Ok({{{classname}}} {
12231232
{{#vars}}
1224-
{{^isDiscriminator}}
12251233
{{#isNullable}}
12261234
{{{name}}}: std::result::Result::Err("Nullable types not supported in {{{classname}}}".to_string())?,
12271235
{{/isNullable}}
12281236
{{^isNullable}}
12291237
{{{name}}}: intermediate_rep.{{{name}}}.into_iter().next(){{#required}}.ok_or_else(|| "{{{baseName}}} missing in {{{classname}}}".to_string())?{{/required}},
12301238
{{/isNullable}}
1231-
{{/isDiscriminator}}
1232-
{{#isDiscriminator}}
1233-
{{{name}}}: intermediate_rep.{{{name}}}.into_iter().next().ok_or_else(|| "{{{baseName}}} missing in {{{classname}}}".to_string())?,
1234-
{{/isDiscriminator}}
12351239
{{/vars}}
12361240
})
12371241
}

samples/server/petstore/rust-axum/output/multipart-v3/src/models.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,12 @@ impl std::fmt::Display for MultipartRelatedRequest {
9797
// Skipping object_field in query parameter serialization
9898

9999

100-
101100
// Skipping optional_binary_field in query parameter serialization
102101
// Skipping optional_binary_field in query parameter serialization
103102

104-
105103
// Skipping required_binary_field in query parameter serialization
106104
// Skipping required_binary_field in query parameter serialization
107105

108-
109106
];
110107

111108
write!(
@@ -591,11 +588,9 @@ impl std::fmt::Display for MultipleIdenticalMimeTypesPostRequest {
591588
// Skipping binary1 in query parameter serialization
592589
// Skipping binary1 in query parameter serialization
593590

594-
595591
// Skipping binary2 in query parameter serialization
596592
// Skipping binary2 in query parameter serialization
597593

598-
599594
];
600595

601596
write!(

samples/server/petstore/rust-axum/output/openapi-v3/src/models.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -908,11 +908,9 @@ impl std::fmt::Display for AnyOfProperty {
908908
// Skipping requiredAnyOf in query parameter serialization
909909

910910

911-
912911
// Skipping optionalAnyOf in query parameter serialization
913912

914913

915-
916914
];
917915

918916
write!(
@@ -2525,19 +2523,15 @@ impl std::fmt::Display for ObjectUntypedProps {
25252523
// Skipping required_untyped in query parameter serialization
25262524

25272525

2528-
25292526
// Skipping required_untyped_nullable in query parameter serialization
25302527

25312528

2532-
25332529
// Skipping not_required_untyped in query parameter serialization
25342530

25352531

2536-
25372532
// Skipping not_required_untyped_nullable in query parameter serialization
25382533

25392534

2540-
25412535
];
25422536

25432537
write!(

samples/server/petstore/rust-axum/output/petstore-with-fake-endpoints-models-for-testing/src/models.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -238,11 +238,9 @@ impl std::fmt::Display for AdditionalPropertiesClass {
238238
let params: Vec<Option<String>> = vec![
239239
// Skipping map_property in query parameter serialization
240240

241-
242241
// Skipping map_of_map_property in query parameter serialization
243242
// Skipping map_of_map_property in query parameter serialization
244243

245-
246244
];
247245

248246
write!(
@@ -378,7 +376,7 @@ impl Animal {
378376

379377
impl Animal {
380378
#[allow(clippy::new_without_default, clippy::too_many_arguments)]
381-
pub fn new(class_name: String) -> Animal {
379+
pub fn new() -> Animal {
382380
Animal {
383381
class_name: Self::_name_for_class_name(),
384382
color: Some(r#"red"#.to_string()),
@@ -393,7 +391,7 @@ impl std::fmt::Display for Animal {
393391
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
394392
let params: Vec<Option<String>> = vec![
395393
Some("className".to_string()),
396-
Some(self.class_name.clone()),
394+
Some(self.class_name.to_string()),
397395
self.color
398396
.as_ref()
399397
.map(|color| ["color".to_string(), color.to_string()].join(",")),
@@ -846,7 +844,6 @@ impl std::fmt::Display for ArrayOfArrayOfNumberOnly {
846844
// Skipping ArrayArrayNumber in query parameter serialization
847845

848846

849-
850847
];
851848

852849
write!(
@@ -3471,14 +3468,11 @@ impl std::fmt::Display for MapTest {
34713468
// Skipping map_map_of_string in query parameter serialization
34723469
// Skipping map_map_of_string in query parameter serialization
34733470

3474-
34753471
// Skipping map_map_of_enum in query parameter serialization
34763472
// Skipping map_map_of_enum in query parameter serialization
34773473

3478-
34793474
// Skipping map_of_enum_string in query parameter serialization
34803475

3481-
34823476
];
34833477

34843478
write!(
@@ -3644,15 +3638,12 @@ impl std::fmt::Display for MixedPropertiesAndAdditionalPropertiesClass {
36443638
// Skipping uuid in query parameter serialization
36453639

36463640

3647-
36483641
// Skipping dateTime in query parameter serialization
36493642

36503643

3651-
36523644
// Skipping map in query parameter serialization
36533645
// Skipping map in query parameter serialization
36543646

3655-
36563647
];
36573648

36583649
write!(
@@ -4253,7 +4244,6 @@ impl std::fmt::Display for ObjectContainingObjectWithOnlyAdditionalProperties {
42534244
// Skipping inner in query parameter serialization
42544245

42554246

4256-
42574247
];
42584248

42594249
write!(
@@ -5932,7 +5922,7 @@ impl TestEnumParametersRequest {
59325922
#[allow(clippy::new_without_default, clippy::too_many_arguments)]
59335923
pub fn new() -> TestEnumParametersRequest {
59345924
TestEnumParametersRequest {
5935-
enum_form_string: Some(r#"-efg"#.to_string()),
5925+
enum_form_string: None,
59365926
}
59375927
}
59385928
}

samples/server/petstore/rust-axum/output/rust-axum-oneof/src/models.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl Goodbye {
9191

9292
impl Goodbye {
9393
#[allow(clippy::new_without_default, clippy::too_many_arguments)]
94-
pub fn new(op: String, d: models::GoodbyeD) -> Goodbye {
94+
pub fn new(d: models::GoodbyeD) -> Goodbye {
9595
Goodbye {
9696
op: Self::_name_for_op(),
9797
d,
@@ -106,7 +106,7 @@ impl std::fmt::Display for Goodbye {
106106
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
107107
let params: Vec<Option<String>> = vec![
108108
Some("op".to_string()),
109-
Some(self.op.clone()),
109+
Some(self.op.to_string()),
110110
// Skipping d in query parameter serialization
111111
];
112112

@@ -410,7 +410,7 @@ impl std::fmt::Display for Greeting {
410410
let params: Vec<Option<String>> = vec![
411411
// Skipping d in query parameter serialization
412412
Some("op".to_string()),
413-
Some(self.op.clone()),
413+
Some(self.op.to_string()),
414414
];
415415

416416
write!(
@@ -714,7 +714,7 @@ impl std::fmt::Display for Hello {
714714
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
715715
let params: Vec<Option<String>> = vec![
716716
Some("op".to_string()),
717-
Some(self.op.clone()),
717+
Some(self.op.to_string()),
718718
// Skipping d in query parameter serialization
719719
];
720720

samples/server/petstore/rust-axum/output/rust-axum-test/src/models.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -880,7 +880,6 @@ impl std::fmt::Display for FooObjectOfObjects {
880880
// Skipping inner in query parameter serialization
881881

882882

883-
884883
];
885884

886885
write!(

0 commit comments

Comments
 (0)