use of io.swagger.v3.core.util.Yaml in project swagger-core by swagger-api.
the class ReaderTest method testTicket2340.
@Test(description = "Responses with array schema")
public void testTicket2340() {
Reader reader = new Reader(new OpenAPI());
OpenAPI openAPI = reader.read(Ticket2340Resource.class);
String yaml = "openapi: 3.0.1\n" + "paths:\n" + " /test/test:\n" + " post:\n" + " operationId: getAnimal\n" + " requestBody:\n" + " content:\n" + " application/json:\n" + " schema:\n" + " $ref: '#/components/schemas/Animal'\n" + " responses:\n" + " default:\n" + " description: default response\n" + " content:\n" + " application/json:\n" + " schema:\n" + " type: string\n" + "components:\n" + " schemas:\n" + " Animal:\n" + " required:\n" + " - type\n" + " type: object\n" + " properties:\n" + " type:\n" + " type: string\n" + " discriminator:\n" + " propertyName: type\n" + " Cat:\n" + " type: object\n" + " allOf:\n" + " - $ref: '#/components/schemas/Animal'\n" + " - type: object\n" + " properties:\n" + " lives:\n" + " type: integer\n" + " format: int32\n" + " Dog:\n" + " type: object\n" + " allOf:\n" + " - $ref: '#/components/schemas/Animal'\n" + " - type: object\n" + " properties:\n" + " barkVolume:\n" + " type: number\n" + " format: double\n";
SerializationMatchers.assertEqualsToYaml(openAPI, yaml);
}
use of io.swagger.v3.core.util.Yaml in project swagger-core by swagger-api.
the class ReaderTest method testTicket3587.
@Test(description = "Parameter examples ordering")
public void testTicket3587() {
Reader reader = new Reader(new OpenAPI());
OpenAPI openAPI = reader.read(Ticket3587Resource.class);
String yaml = "openapi: 3.0.1\n" + "paths:\n" + " /test/test:\n" + " get:\n" + " operationId: parameterExamplesOrderingTest\n" + " parameters:\n" + " - in: query\n" + " schema:\n" + " type: string\n" + " examples:\n" + " Example One:\n" + " description: Example One\n" + " Example Two:\n" + " description: Example Two\n" + " Example Three:\n" + " description: Example Three\n" + " - in: query\n" + " schema:\n" + " type: string\n" + " examples:\n" + " Example Three:\n" + " description: Example Three\n" + " Example Two:\n" + " description: Example Two\n" + " Example One:\n" + " description: Example One\n" + " responses:\n" + " default:\n" + " description: default response\n" + " content:\n" + " '*/*': {}";
SerializationMatchers.assertEqualsToYamlExact(openAPI, yaml);
}
use of io.swagger.v3.core.util.Yaml in project swagger-core by swagger-api.
the class OpenApiServlet method doGet.
// TODO move to own servlet non jaxrs project and reference from there
// TODO cleanup and errors
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String ctxId = getContextIdFromServletConfig(getServletConfig());
OpenApiContext ctx = OpenApiContextLocator.getInstance().getOpenApiContext(ctxId);
OpenAPI oas = ctx.read();
if (oas != null) {
if (ctx.getOpenApiConfiguration() != null && ctx.getOpenApiConfiguration().getFilterClass() != null) {
try {
OpenAPISpecFilter filterImpl = (OpenAPISpecFilter) Class.forName(ctx.getOpenApiConfiguration().getFilterClass()).newInstance();
SpecFilter f = new SpecFilter();
oas = f.filter(oas, filterImpl, ServletUtils.getQueryParams(req.getParameterMap()), ServletUtils.getCookies(req.getCookies()), ServletUtils.getHeaders(req));
} catch (Exception e) {
LOGGER.error("failed to load filter", e);
}
}
}
String type = "json";
String acceptHeader = req.getHeader(ACCEPT_HEADER);
if (!StringUtils.isBlank(acceptHeader) && acceptHeader.toLowerCase().contains(APPLICATION_YAML)) {
type = "yaml";
} else {
// check URL:
if (req.getRequestURL().toString().toLowerCase().endsWith("yaml")) {
type = "yaml";
}
}
boolean pretty = false;
if (ctx.getOpenApiConfiguration() != null && Boolean.TRUE.equals(ctx.getOpenApiConfiguration().isPrettyPrint())) {
pretty = true;
}
resp.setStatus(200);
if (type.equalsIgnoreCase("yaml")) {
resp.setContentType(APPLICATION_YAML);
try (PrintWriter pw = resp.getWriter()) {
pw.write(pretty ? ctx.getOutputYamlMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas) : ctx.getOutputYamlMapper().writeValueAsString(oas));
}
} else {
resp.setContentType(APPLICATION_JSON);
try (PrintWriter pw = resp.getWriter()) {
pw.write(pretty ? ctx.getOutputJsonMapper().writer(new DefaultPrettyPrinter()).writeValueAsString(oas) : ctx.getOutputJsonMapper().writeValueAsString(oas));
}
}
}
use of io.swagger.v3.core.util.Yaml in project swagger-core by swagger-api.
the class ReaderTest method testTicket3731.
@Test(description = "Constraints annotations in models")
public void testTicket3731() {
Reader reader = new Reader(new OpenAPI());
OpenAPI openAPI = reader.read(Ticket3731Resource.class);
String yaml = "openapi: 3.0.1\n" + "paths:\n" + " /test/cart:\n" + " get:\n" + " summary: Get cart items\n" + " description: Paging follows RFC 5005.\n" + " operationId: getCart\n" + " parameters:\n" + " - name: pageSize\n" + " in: query\n" + " description: \"Number of items per page. Range[1, 200]\"\n" + " schema:\n" + " maximum: 200\n" + " minimum: 1\n" + " type: integer\n" + " format: int32\n" + " default: 50\n" + " responses:\n" + " default:\n" + " description: default response\n" + " content:\n" + " '*/*':\n" + " schema:\n" + " type: array\n" + " items:\n" + " type: string\n";
SerializationMatchers.assertEqualsToYaml(openAPI, yaml);
reader = new Reader(new OpenAPI());
openAPI = reader.read(Ticket3731BisResource.class);
SerializationMatchers.assertEqualsToYaml(openAPI, yaml);
}
use of io.swagger.v3.core.util.Yaml in project swagger-core by swagger-api.
the class ReaderTest method testGetResponsesWithComposition.
@Test(description = "Responses with composition")
public void testGetResponsesWithComposition() {
Reader reader = new Reader(new OpenAPI());
OpenAPI openAPI = reader.read(ResponsesResource.class);
String yaml = "openapi: 3.0.1\n" + "paths:\n" + " /:\n" + " get:\n" + " summary: Simple get operation\n" + " description: Defines a simple get operation with no inputs and a complex output\n" + " object\n" + " operationId: getWithPayloadResponse\n" + " responses:\n" + " \"200\":\n" + " description: voila!\n" + " content:\n" + " application/json:\n" + " schema:\n" + " $ref: '#/components/schemas/SampleResponseSchema'\n" + " default:\n" + " description: boo\n" + " content:\n" + " '*/*':\n" + " schema:\n" + " $ref: '#/components/schemas/GenericError'\n" + " deprecated: true\n" + " /allOf:\n" + " get:\n" + " summary: Test inheritance / polymorphism\n" + " operationId: getAllOf\n" + " parameters:\n" + " - name: number\n" + " in: query\n" + " description: Test inheritance / polymorphism\n" + " required: true\n" + " schema:\n" + " type: integer\n" + " format: int32\n" + " example: 1\n" + " responses:\n" + " \"200\":\n" + " description: bean answer\n" + " content:\n" + " application/json:\n" + " schema:\n" + " allOf:\n" + " - $ref: '#/components/schemas/MultipleSub1Bean'\n" + " - $ref: '#/components/schemas/MultipleSub2Bean'\n" + " /anyOf:\n" + " get:\n" + " summary: Test inheritance / polymorphism\n" + " operationId: getAnyOf\n" + " parameters:\n" + " - name: number\n" + " in: query\n" + " description: Test inheritance / polymorphism\n" + " required: true\n" + " schema:\n" + " type: integer\n" + " format: int32\n" + " example: 1\n" + " responses:\n" + " \"200\":\n" + " description: bean answer\n" + " content:\n" + " application/json:\n" + " schema:\n" + " anyOf:\n" + " - $ref: '#/components/schemas/MultipleSub1Bean'\n" + " - $ref: '#/components/schemas/MultipleSub2Bean'\n" + " /oneOf:\n" + " get:\n" + " summary: Test inheritance / polymorphism\n" + " operationId: getOneOf\n" + " parameters:\n" + " - name: number\n" + " in: query\n" + " description: Test inheritance / polymorphism\n" + " required: true\n" + " schema:\n" + " type: integer\n" + " format: int32\n" + " example: 1\n" + " responses:\n" + " \"200\":\n" + " description: bean answer\n" + " content:\n" + " application/json:\n" + " schema:\n" + " oneOf:\n" + " - $ref: '#/components/schemas/MultipleSub1Bean'\n" + " - $ref: '#/components/schemas/MultipleSub2Bean'\n" + "components:\n" + " schemas:\n" + " SampleResponseSchema:\n" + " type: object\n" + " GenericError:\n" + " type: object\n" + " MultipleSub1Bean:\n" + " type: object\n" + " description: MultipleSub1Bean\n" + " allOf:\n" + " - $ref: '#/components/schemas/MultipleBaseBean'\n" + " - type: object\n" + " properties:\n" + " c:\n" + " type: integer\n" + " format: int32\n" + " MultipleSub2Bean:\n" + " type: object\n" + " description: MultipleSub2Bean\n" + " allOf:\n" + " - $ref: '#/components/schemas/MultipleBaseBean'\n" + " - type: object\n" + " properties:\n" + " d:\n" + " type: integer\n" + " format: int32\n" + " MultipleBaseBean:\n" + " type: object\n" + " properties:\n" + " beanType:\n" + " type: string\n" + " a:\n" + " type: integer\n" + " format: int32\n" + " b:\n" + " type: string\n" + " description: MultipleBaseBean";
SerializationMatchers.assertEqualsToYaml(openAPI, yaml);
}
Aggregations