Skip to content

OpenAPI 3.1: support multi-type #66

@david0

Description

@david0

OpenAPI 3.1 drops the nullable property and uses a type array instead.

Unfortunately openapi-parser is not prepared for that (yet).

If you make change petstore.yaml to openapi 3.1.0 and allow be nullable:

        tag:
          type: [string, 'null']

It'll fail with this error message:

java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null

	at java.base/java.util.regex.Matcher.getTextLength(Matcher.java:1808)
	at java.base/java.util.regex.Matcher.reset(Matcher.java:461)
	at java.base/java.util.regex.Matcher.<init>(Matcher.java:256)
	at java.base/java.util.regex.Pattern.matcher(Pattern.java:1180)
	at com.networknt.oas.validator.ValidatorBase.checkPattern(ValidatorBase.java:77)
	at com.networknt.oas.validator.ValidatorBase.validateStringField(ValidatorBase.java:67)
	at com.networknt.oas.validator.ValidatorBase.validateStringField(ValidatorBase.java:57)
	at com.networknt.oas.validator.impl.SchemaValidator.runObjectValidations(SchemaValidator.java:48)
	at com.networknt.oas.validator.ObjectValidatorBase.runValidations(ObjectValidatorBase.java:18)
	at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
	at com.networknt.oas.validator.MapValidator.runValidations(MapValidator.java:31)
	at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
	at com.networknt.oas.validator.ValidatorBase.validateMap(ValidatorBase.java:263)
	at com.networknt.oas.validator.ValidatorBase.validateMapField(ValidatorBase.java:257)
	at com.networknt.oas.validator.impl.SchemaValidator.runObjectValidations(SchemaValidator.java:56)
	at com.networknt.oas.validator.ObjectValidatorBase.runValidations(ObjectValidatorBase.java:18)
	at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
	at com.networknt.oas.validator.MapValidator.runValidations(MapValidator.java:31)
	at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
	at com.networknt.oas.validator.ValidatorBase.validateMap(ValidatorBase.java:263)
	at com.networknt.oas.validator.ValidatorBase.validateMapField(ValidatorBase.java:257)
	at com.networknt.oas.validator.impl.OpenApi3Validator.runObjectValidations(OpenApi3Validator.java:28)
	at com.networknt.oas.validator.ObjectValidatorBase.runValidations(ObjectValidatorBase.java:18)
	at com.networknt.oas.validator.ValidatorBase.validate(ValidatorBase.java:43)
	at com.networknt.oas.model.impl.OpenApi3Impl.validate(OpenApi3Impl.java:44)
	at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:96)
	at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:85)
	at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:35)
	at com.networknt.oas.OpenApiParser.parse(OpenApiParser.java:28)
	at com.networknt.openapi.OpenApiHelper.<init>(OpenApiHelper.java:58)
	at com.networknt.openapi.EndpointTest.testYaml(EndpointTest.java:55)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions