You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/10/31 15:24:16 UTC
[syncope] branch 2_1_X updated: Fixing ErrorTO schema with OpenAPI
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/2_1_X by this push:
new 46fa279 Fixing ErrorTO schema with OpenAPI
46fa279 is described below
commit 46fa27905e7038bef8291cd952a194d1c4b8bf80
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Oct 31 16:23:53 2019 +0100
Fixing ErrorTO schema with OpenAPI
---
.../core/rest/cxf/SyncopeOpenApiCustomizer.java | 24 +++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
index bf37246..fd5f9b3 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
@@ -21,9 +21,12 @@ package org.apache.syncope.core.rest.cxf;
import io.swagger.v3.oas.integration.api.OpenAPIConfiguration;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.headers.Header;
+import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Content;
+import io.swagger.v3.oas.models.media.IntegerSchema;
import io.swagger.v3.oas.models.media.MediaType;
import io.swagger.v3.oas.models.media.Schema;
+import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.parameters.HeaderParameter;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.responses.ApiResponse;
@@ -36,6 +39,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.jaxrs.ext.MessageContext;
@@ -127,22 +132,31 @@ public class SyncopeOpenApiCustomizer extends OpenApiCustomizer {
new Header().schema(new Schema<>().type("string")).description("Error code"));
headers.put(
RESTHeaders.ERROR_INFO,
- new Header().schema(new Schema<>().type("string")).description("Error message"));
+ new Header().schema(new Schema<>().type("string")).description("Error message(s)"));
ErrorTO sampleError = new ErrorTO();
sampleError.setStatus(Response.Status.BAD_REQUEST.getStatusCode());
sampleError.setType(ClientExceptionType.InvalidEntity);
- sampleError.getElements().add("additional information");
+ sampleError.getElements().add("error message");
+
+ Schema<ErrorTO> errorSchema = new Schema<>();
+ errorSchema.example(sampleError).
+ addProperties("status", new IntegerSchema().description("HTTP status code")).
+ addProperties("type", new StringSchema().
+ _enum(Stream.of(ClientExceptionType.values()).map(Enum::name).collect(Collectors.toList())).
+ description("Error code")).
+ addProperties("elements", new ArraySchema().type("string").description("Error message(s)"));
+
Content content = new Content();
content.addMediaType(
javax.ws.rs.core.MediaType.APPLICATION_JSON,
- new MediaType().schema(new Schema<ErrorTO>().example(sampleError)));
+ new MediaType().schema(errorSchema));
content.addMediaType(
RESTHeaders.APPLICATION_YAML,
- new MediaType().schema(new Schema<ErrorTO>().example(sampleError)));
+ new MediaType().schema(errorSchema));
content.addMediaType(
javax.ws.rs.core.MediaType.APPLICATION_XML,
- new MediaType().schema(new Schema<ErrorTO>().example(sampleError)));
+ new MediaType().schema(errorSchema));
responses.addApiResponse("400", new ApiResponse().
description("An error occurred; HTTP status code can vary depending on the actual error: "