-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Closed
Description
Using Swagger 2.0 annotations, I'm trying to link up operation parameters to parameters defined in components/parameters
. My operation looks something like this:
@GET
@Produces(APPLICATION_JSON)
@Operation(
parameters = {
@Parameter(ref = "#/components/parameters/lang")
}
)
AddressListResponse getAllAvailableAddresses();
Here's how I'm defining the parameter in question:
private static Map<String, Parameter> buildParameters() {
Map<String, Parameter> parameters = new HashMap<>();
Parameter lang = new Parameter();
lang.setName("lang");
lang.setDescription("Language (\"en\") or locale (\"en-US\")");
lang.setIn("query");
lang.setExample("en-US");
parameters.put(lang.getName(), lang);
return parameters;
}
private void configureOpenAPI() {
OpenAPI api = new OpenAPI();
Components components = new Components();
components.setParameters(buildParameters());
api.setComponents(components);
OpenAPIConfiguration config = new SwaggerConfiguration()
.openAPI(api)
.prettyPrint(true)
.scannerClass("io.swagger.v3.jaxrs2.integration.JaxrsAnnotationScanner")
.resourcePackages(resourcePackages);
try {
new JaxrsOpenApiContextBuilder()
.openApiConfiguration(config)
.buildContext(true);
} catch (OpenApiConfigurationException e) {
throw new RuntimeException(e);
}
}
The parameter does indeed show up in the components/parameters
node, but it does not appear in the operation:
{
"openapi" : "3.0.1",
"info" : { ... },
"tags" : [ ... ],
"paths" : {
"/addresses" : {
"get" : {
"operationId" : "getAllAvailableAddresses"
}
}
},
"components" : {
"schemas" : { ... },
"parameters" : {
"lang" : {
"name" : "lang",
"in" : "query",
"description" : "Language (\"en\") or locale (\"en-US\")",
"example" : "en-US"
}
}
}
}
Am I missing a critical step, or is this broken?
Metadata
Metadata
Assignees
Labels
No labels