(global) Parameter mappings
Parameter mappings, as the name suggests, apply to the parameters of an endpoint method.
parameter mapping by name
A global parameter mapping will replace any usage of an OpenAPI type in the api description based on the parameters name to the given java type.
|
Since the processor will simply match the parameter by its name, take care that all parameters of that name should really use the same type! |
It is defined like below, and it should be added to the map/parameters section in the mapping.yaml which is a list of global parameter mappings.
A single global parameter mapping can have the following properties:
- name: {parameter name} => {target type}
generics:
- {a generic type}
- {another generic type}
-
name is required.
-
{parameter name} is the name of an endpoint parameter used in the OpenAPI description that should be replaced by {target type}.
-
{target type} is the fully qualified class name of the java type that should be used for all endpoint content types {parameter name}.
-
-
generics defines the list of types that should be used as generic type parameters to the java type given by {target type}.
Example
Given the following (global) parameter mapping
map:
# list of global parameter mappings, mapped by parameter name
parameters:
- name: date => java.time.ZonedDateTime
and an openapi.yaml with multiple endpoints having a parameter named "date"
openapi: 3.0.2
info:
title: global parameter type mapping example
version: 1.0.0
paths:
/do-something:
get:
parameters:
- in: query
name: date
schema:
type: integer
responses:
'200':
description: none
content:
application/json:
schema:
type: object
properties:
prop:
type: string
/do-something-else:
get:
parameters:
- in: query
name: date
schema:
type: string
responses:
'200':
description: none
content:
application/json:
schema:
type: object
properties:
prop:
type: string
the processor will use java.time.ZonedDateTime as java type for all parameters named "date" in
all endpoints that have a "date" parameter.
In the example both endpoints would use java.time.ZonedDateTime as java type for the "date" parameter.