Skip to content

swagger-annotations: @Parameter ref field does not work #3029

@brpeterman

Description

@brpeterman

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions