-
Notifications
You must be signed in to change notification settings - Fork 537
Closed
Labels
Description
Description
I have an OpenAPI.yaml file that parses fine with version 3.0.3 but with 3.1.1 the parser throws a URISyntaxException: Illegal character in opaque part at index 2. There is also a message: Unexpected field type: null named: regionId. In this case regionId is the first definition in components/schemas. The error always refers to the first definition in components/schemas.
Affected Version
2.1.32
This began when upgrading from 3.0.3. to 3.1.1. The error happens on all our APIs we have tried to upgrade to 3.1.1
Steps to Reproduce
Parse thes OpenAPI.yaml below.
Expected Behavior
Should parse without error
Actual Behavior
Throws:
java.net.URISyntaxException: Illegal character in opaque part at index 2:
Logs / Stack Traces
at java.net.URI$Parser.fail (URI.java:2976)
at java.net.URI$Parser.checkChars (URI.java:3147)
at java.net.URI$Parser.parse (URI.java:3183)
at java.net.URI.<init> (URI.java:623)
at io.swagger.v3.parser.reference.ReferenceUtils.resolve (ReferenceUtils.java:29)
at io.swagger.v3.parser.reference.ReferenceVisitor.resolveSchemaRef (ReferenceVisitor.java:227)
at io.swagger.v3.parser.reference.ReferenceVisitor.visitSchema (ReferenceVisitor.java:141)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema (OpenAPI31Traverser.java:801)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema (OpenAPI31Traverser.java:867)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchemaMap (OpenAPI31Traverser.java:960)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseComponents (OpenAPI31Traverser.java:169)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOpenApi (OpenAPI31Traverser.java:128)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverse (OpenAPI31Traverser.java:65)
at io.swagger.v3.parser.reference.OpenAPIDereferencer31.dereference (OpenAPIDereferencer31.java:74)
at io.swagger.v3.parser.OpenAPIV3Parser.resolve (OpenAPIV3Parser.java:227)
at io.swagger.v3.parser.OpenAPIV3Parser.readContents (OpenAPIV3Parser.java:183)
at io.swagger.v3.parser.OpenAPIV3Parser.readLocation (OpenAPIV3Parser.java:97)
at io.swagger.v3.parser.OpenAPIV3Parser.read (OpenAPIV3Parser.java:124)
at io.swagger.v3.parser.OpenAPIV3Parser.read (OpenAPIV3Parser.java:113)
at com.ferguson.maven.plugin.springboot.camel.GenerateSpringBootCamelPlugin.execute (GenerateSpringBootCamelPlugin.java:569)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:569)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Environment
Windows 11
Oracle Java 17
Maven
Additional Context
openapi: 3.1.1
info:
title: Ferguson Customer Public API
description: Services that provide access to Ferguson's customer information
contact:
name: Ferguson Middleware Services team
license:
name: Ferguson Services
url: 'https://ferguson.com/licenses/LICENSE-1.0.html'
version: v1.0
servers:
- url: https://localhost:8083/customer-publicapi-v1/svc
description: Development
tags:
- name: domain
description: Customer
- name: visibility
description: public
paths:
/{mainCustomerId}/billToZip/{billToZipCode}:
get:
operationId: getMainCustomerInfoBillZipcode
summary: Service to get Customer information from main Customer account and associated billTo zipcode
description: Service to get related Customer information
parameters:
- $ref: '#/components/parameters/transId'
- $ref: '#/components/parameters/mainCustomerId'
- $ref: '#/components/parameters/billToZipCode'
responses:
'200':
description: Request Successful
headers:
trans-id:
$ref: '#/components/headers/trans-id'
content:
application/json:
schema:
$ref: '#/components/schemas/customerInfoResponse'
'400':
description: Bad request
headers:
trans-id:
$ref: '#/components/headers/trans-id'
content:
application/json:
schema:
$ref: '#/components/schemas/validationErrors'
'404':
description: Not Found
headers:
trans-id:
$ref: '#/components/headers/trans-id'
'500':
description: Internal Error
headers:
trans-id:
$ref: '#/components/headers/trans-id'
fe-resp-code:
$ref: '#/components/headers/fe-resp-code'
fe-resp-msg:
$ref: '#/components/headers/fe-resp-msg'
components:
schemas:
regionId:
type: string
description: Region Id
example: "RICH"
branchId:
type: string
description: Branch Id
example: "1350"
customerType:
type: string
enum:
- MASTER
- MAIN
- JOB
customerName:
type: string
description: Account name
example: "WP CLARKS FARM LLC"
contractIds:
type: array
items:
type: string
description: Contract Id
customerNumber:
type: string
description: Customer Id
example: "276962"
jobName:
type: string
description: Job name
example: "OTIS HATFIELD"
jobNumber:
type: string
description: Customer Id of the Job
example: "93738"
billingAddress:
description: Billing address of the account
type: object
properties:
streets:
title: Line(s) of Street Address
type: array
items:
type: string
example: "1250 W. Mockingbird Lane"
city:
title: City
type: string
example: "Newport News"
state:
title: State Code
type: string
example: VA
postalCode:
title: Postal Code
type: string
example: 23606
customerInfoResponse:
title: Customer Info Response with master, main and job info
type: object
properties:
masterCustomerNumber:
type: string
description: Master customer number
example: '371394'
customerType:
$ref: '#/components/schemas/customerType'
mainCustomers:
type: array
items:
$ref: '#/components/schemas/mainCustomer'
mainCustomer:
type: object
properties:
customerType:
$ref: '#/components/schemas/customerType'
regionId:
$ref: '#/components/schemas/regionId'
branchId:
$ref: '#/components/schemas/branchId'
customerName:
$ref: '#/components/schemas/customerName'
contractIds:
$ref: '#/components/schemas/contractIds'
customerNumber:
$ref: '#/components/schemas/customerNumber'
billingAddress:
type: array
items:
$ref: '#/components/schemas/billingAddress'
mainCustomerJobs:
type: array
items:
$ref: '#/components/schemas/mainCustomerJob'
mainCustomerJob:
type: object
properties:
customerType:
$ref: '#/components/schemas/customerType'
regionId:
$ref: '#/components/schemas/regionId'
branchId:
$ref: '#/components/schemas/branchId'
jobName:
$ref: '#/components/schemas/jobName'
contractIds:
$ref: '#/components/schemas/contractIds'
jobNumber:
$ref: '#/components/schemas/jobNumber'
billingAddress:
type: array
items:
$ref: '#/components/schemas/billingAddress'
validationError:
title: Parameter Validation Error
type: object
x-allArgsConstructor: true
properties:
errorCode:
title: Error Code
description: Error Code indicating the nature of the error.
type: string
example: dataerror.k8.app.zipcode.invalid
errorMsg:
title: Error Message
description: Human readable message associated with the errorCode.
type: string
example: invalid zipcode format
field:
title: Parameter in Error
type: string
example: billToZipCode
validationErrors:
title: List of Validation Errors
type: array
minItems: 1
items:
$ref: '#/components/schemas/validationError'
headers:
fe-resp-code:
schema:
type: string
example: severe.error
description: Response code
fe-resp-msg:
schema:
type: string
example: Severe Error
description: Response message
trans-id:
schema:
type: string
description: Transaction Id (passed in by consumer or generated by the service)
parameters:
transId:
name: trans-id
in: header
description: Transaction Id (Provided by service consumer)
required: false
schema:
type: string
mainCustomerId:
name: mainCustomerId
in: path
description: Main Customer id
required: true
schema:
type: string
billToZipCode:
name: billToZipCode
in: path
description: Billed to zip code associated with the Main Account
required: true
schema:
type: string
pattern: '^(\\d{5})([-\\s]*\\d{4})?$'
Checklist
- I have searched the existing issues and this is not a duplicate.
- I have provided sufficient information for maintainers to reproduce the issue.