Fix issue 21680 type other than object with properties#21817
Fix issue 21680 type other than object with properties#21817galamome wants to merge 2 commits intoOpenAPITools:masterfrom
Conversation
| LOGGER.error("Illegal schema found with non-object type combined with properties," + | ||
| " no properties should be defined:\n " + schema.toString()); | ||
| " no properties should be defined:" + | ||
| " consider using --openapi-normalizer REMOVE_PROPERTIES_FROM_TYPE_OTHER_THAN_OBJECT=true\n " + |
There was a problem hiding this comment.
thanks for the PR
what about automatically fixing it in inline model resolver instead?
[main] ERROR o.o.codegen.InlineModelResolver - Illegal schema found with non-object type combined with properties, no properties should be defined:
class ArraySchema {
class Schema {
type: array
format: null
$ref: null
description: null
title: null
multipleOf: null
maximum: null
exclusiveMaximum: null
minimum: null
exclusiveMinimum: null
maxLength: null
minLength: null
pattern: null
maxItems: null
minItems: null
uniqueItems: null
maxProperties: null
minProperties: null
required: null
not: null
properties: {empty=class BooleanSchema {
class Schema {
type: boolean
format: null
$ref: null
description: null
title: null
multipleOf: null
maximum: null
exclusiveMaximum: null
minimum: null
exclusiveMinimum: null
maxLength: null
minLength: null
pattern: null
maxItems: null
minItems: null
uniqueItems: null
maxProperties: null
minProperties: null
so that we can avoid another normalizer rule.
There was a problem hiding this comment.
Hello,
I don't have an opinion about where the normalisation should be done. Mattias-Sehlstedt commented in the bug report, and advised to put it in the normalizer since it solves an oddity.
My thought was to leave the possibility to opt in to apply the normalizer rule and remove this oddity.
Maybe in order to avoid to create another normalizer rule, I could modify my PR in order to leave it in the normalizer but make it default. The drawback is that we would loose the possibility to opt out (and keep the "properties" attribute for a schema other than object, which is the oddity).
Do you think that would fit ?
By the way, I think "additionalProperties" attribute also should be removed for a schema other than object. At least it is what modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java says.
Looking forward to solve this bug, thanks to your advice,
Guillaume
|
merged via #22236 with updated doc thanks for the contribution. |
fix bug 21680: REMOVE_PROPERTIES_FROM_TYPE_OTHER_THAN_OBJECT normalize option
to fix #21680
Created a new normalize option called REMOVE_PROPERTIES_FROM_TYPE_OTHER_THAN_OBJECT to remove "properties" attribute from type other than "object".
If my PR is accepted, the new option shall be documented in normalizer documentation
I created a new unit test, and tested the whole process with the complete specification (faulty specification) with the following command:
I also added an advice in
modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.javato use--openapi-normalizer REMOVE_PROPERTIES_FROM_TYPE_OTHER_THAN_OBJECT=truewhen the oddity is encountered.PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master(upcoming7.x.0minor release - breaking changes with fallbacks),8.0.x(breaking changes without fallbacks)"fixes #123"present in the PR description)