use of io.swagger.v3.oas.annotations.responses.ApiResponse in project swagger-parser by swagger-api.
the class ResponseProcessor method processResponse.
public void processResponse(ApiResponse response) {
if (response.get$ref() != null) {
processReferenceResponse(response);
}
Schema schema = null;
if (response.getContent() != null) {
Map<String, MediaType> content = response.getContent();
for (String mediaName : content.keySet()) {
MediaType mediaType = content.get(mediaName);
if (mediaType.getSchema() != null) {
schema = mediaType.getSchema();
if (schema != null) {
schemaProcessor.processSchema(schema);
}
}
if (mediaType.getExamples() != null) {
for (Example ex : mediaType.getExamples().values()) {
exampleProcessor.processExample(ex);
}
}
}
}
if (response.getHeaders() != null) {
Map<String, Header> headers = response.getHeaders();
for (String headerName : headers.keySet()) {
Header header = headers.get(headerName);
headerProcessor.processHeader(header);
}
}
if (response.getLinks() != null) {
Map<String, Link> links = response.getLinks();
for (String linkName : links.keySet()) {
Link link = links.get(linkName);
linkProcessor.processLink(link);
}
}
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project swagger-parser by swagger-api.
the class OpenAPIResolverTest method testResponseRemoteRefs.
private void testResponseRemoteRefs(String remoteRef) {
final OpenAPI swagger = new OpenAPI();
swagger.path("/fun", new PathItem().get(new Operation().responses(new ApiResponses().addApiResponse("200", new ApiResponse().content(new Content().addMediaType("*/*", new MediaType().schema(new Schema().$ref(remoteRef))))))));
final OpenAPI resolved = new OpenAPIResolver(swagger, null).resolve();
final ApiResponse response = swagger.getPaths().get("/fun").getGet().getResponses().get("200");
final Schema ref = response.getContent().get("*/*").getSchema();
assertEquals(ref.get$ref(), "#/components/schemas/Tag");
assertNotNull(swagger.getComponents().getSchemas().get("Tag"));
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project swagger-parser by swagger-api.
the class InlineModelResolverTest method testInlineMapResponseWithObjectSchema.
@Test
public void testInlineMapResponseWithObjectSchema() throws Exception {
OpenAPI openAPI = new OpenAPI();
Schema schema = new Schema();
schema.setAdditionalProperties(new ObjectSchema().addProperties("name", new StringSchema()));
schema.addExtension("x-ext", "ext-prop");
ApiResponse apiResponse = new ApiResponse().description("it works!").content(new Content().addMediaType("*/*", new MediaType().schema(schema)));
apiResponse.addExtension("x-foo", "bar");
ApiResponses apiResponses = new ApiResponses().addApiResponse("200", apiResponse);
openAPI.path("/foo/baz", new PathItem().get(new Operation().responses(apiResponses)));
new InlineModelResolver().flatten(openAPI);
ApiResponse response = openAPI.getPaths().get("/foo/baz").getGet().getResponses().get("200");
Schema property = response.getContent().get("*/*").getSchema();
assertTrue(property.getAdditionalProperties() != null);
assertEquals(1, property.getExtensions().size());
assertEquals("ext-prop", property.getExtensions().get("x-ext"));
assertTrue(openAPI.getComponents().getSchemas().size() == 1);
Schema inline = openAPI.getComponents().getSchemas().get("inline_response_map200");
assertTrue(inline instanceof Schema);
assertNotNull(inline.getProperties().get("name"));
assertTrue(inline.getProperties().get("name") instanceof StringSchema);
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project swagger-parser by swagger-api.
the class InlineModelResolverTest method testInlineResponseModel.
@Test
public void testInlineResponseModel() throws Exception {
OpenAPI openAPI = new OpenAPI();
StringSchema stringSchema1 = new StringSchema();
ObjectSchema objectSchema1 = new ObjectSchema();
objectSchema1.addProperties("name", stringSchema1);
objectSchema1.addExtension("x-ext", "ext-prop");
MediaType mediaType1 = new MediaType();
mediaType1.setSchema(objectSchema1);
Content content1 = new Content();
content1.addMediaType("*/*", mediaType1);
ApiResponse response1 = new ApiResponse();
response1.setDescription("it works!");
response1.setContent(content1);
ApiResponses responses1 = new ApiResponses();
responses1.addApiResponse("200", response1);
Operation operation1 = new Operation();
operation1.setResponses(responses1);
PathItem pathItem1 = new PathItem();
pathItem1.setGet(operation1);
openAPI.path("/foo/bar", pathItem1);
StringSchema stringSchema2 = new StringSchema();
ObjectSchema objectSchema2 = new ObjectSchema();
objectSchema2.addProperties("name", stringSchema2);
objectSchema2.addExtension("x-ext", "ext-prop");
MediaType mediaType2 = new MediaType();
mediaType2.setSchema(objectSchema2);
Content content2 = new Content();
content2.addMediaType("*/*", mediaType2);
ApiResponse response2 = new ApiResponse();
response2.setDescription("it works!");
response2.addExtension("x-foo", "bar");
response2.setContent(content2);
ApiResponses responses2 = new ApiResponses();
responses2.addApiResponse("200", response2);
Operation operation2 = new Operation();
operation2.setResponses(responses2);
PathItem pathItem2 = new PathItem();
pathItem2.setGet(operation2);
openAPI.path("/foo/baz", pathItem2);
new InlineModelResolver().flatten(openAPI);
Map<String, ApiResponse> responses = openAPI.getPaths().get("/foo/bar").getGet().getResponses();
ApiResponse response = responses.get("200");
assertNotNull(response);
Schema schema = response.getContent().get("*/*").getSchema();
assertTrue(schema.get$ref() != null);
assertEquals(1, schema.getExtensions().size());
assertEquals("ext-prop", schema.getExtensions().get("x-ext"));
Schema model = openAPI.getComponents().getSchemas().get("inline_response_200");
assertTrue(model.getProperties().size() == 1);
assertNotNull(model.getProperties().get("name"));
assertTrue(model.getProperties().get("name") instanceof StringSchema);
}
use of io.swagger.v3.oas.annotations.responses.ApiResponse in project swagger-parser by swagger-api.
the class InlineModelResolverTest method testArbitraryObjectResponseArray.
@Test
public void testArbitraryObjectResponseArray() {
OpenAPI openAPI = new OpenAPI();
openAPI.path("/foo/baz", new PathItem().get(new Operation().responses(new ApiResponses().addApiResponse("200", new ApiResponse().description("it works!").content(new Content().addMediaType("*/*", new MediaType().schema(new ArraySchema().items(new ObjectSchema()))))))));
new InlineModelResolver().flatten(openAPI);
ApiResponse response = openAPI.getPaths().get("/foo/baz").getGet().getResponses().get("200");
assertTrue(response.getContent().get("*/*").getSchema() instanceof ArraySchema);
ArraySchema arraySchema = (ArraySchema) response.getContent().get("*/*").getSchema();
Schema items = arraySchema.getItems();
assertTrue(items instanceof ObjectSchema);
ObjectSchema op = (ObjectSchema) items;
assertNull(op.getProperties());
}
Aggregations