This is an automated email from the ASF dual-hosted git repository. sebawagner pushed a commit to branch feature/OPENMEETINGS-2667-update-schema-definition-for-response-wrapping-in-root-element in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/feature/OPENMEETINGS-2667-update-schema-definition-for-response-wrapping-in-root-element by this push: new 642f4c2 OPENMEETINGS-2667 Fix Recording and WbService to have schema matching response and example values. 642f4c2 is described below commit 642f4c2aef147861ed469a8ddadba03f2cba8dfd Author: Sebastian Wagner <seba.wag...@gmail.com> AuthorDate: Sun Sep 19 10:52:32 2021 +1200 OPENMEETINGS-2667 Fix Recording and WbService to have schema matching response and example values. --- .../webservice/RecordingWebService.java | 12 +++-- .../openmeetings/webservice/WbWebService.java | 13 +++-- .../webservice/schema/RecordingDTOListWrapper.java | 63 ++++++++++++++++++++++ 3 files changed, 79 insertions(+), 9 deletions(-) diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java index 3f5e90a..b2059fc 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RecordingWebService.java @@ -40,6 +40,8 @@ import org.apache.openmeetings.db.dto.basic.ServiceResult.Type; import org.apache.openmeetings.db.dto.record.RecordingDTO; import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.webservice.error.ServiceException; +import org.apache.openmeetings.webservice.schema.RecordingDTOListWrapper; +import org.apache.openmeetings.webservice.schema.ServiceResultWrapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +49,6 @@ import org.springframework.stereotype.Service; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -88,7 +89,8 @@ public class RecordingWebService extends BaseWebService { @Operation( description = "Deletes a recording", responses = { - @ApiResponse(responseCode = "200", description = "serviceResult object with the result", content = @Content(schema = @Schema(implementation = ServiceResult.class))), + @ApiResponse(responseCode = "200", description = "serviceResult object with the result", + content = @Content(schema = @Schema(implementation = ServiceResultWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) @@ -120,7 +122,7 @@ public class RecordingWebService extends BaseWebService { description = "Gets a list of recordings created by particular external USER", responses = { @ApiResponse(responseCode = "200", description = "list of recordings", - content = @Content(array = @ArraySchema(schema = @Schema(implementation = RecordingDTO.class)))), + content = @Content(schema = @Schema(implementation = RecordingDTOListWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) @@ -151,7 +153,7 @@ public class RecordingWebService extends BaseWebService { description = "Gets a list of recordings", responses = { @ApiResponse(responseCode = "200", description = "list of recordings", - content = @Content(array = @ArraySchema(schema = @Schema(implementation = RecordingDTO.class)))), + content = @Content(schema = @Schema(implementation = RecordingDTOListWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) @@ -180,7 +182,7 @@ public class RecordingWebService extends BaseWebService { description = "Gets a list of recordings", responses = { @ApiResponse(responseCode = "200", description = "list of recordings", - content = @Content(array = @ArraySchema(schema = @Schema(implementation = RecordingDTO.class)))), + content = @Content(schema = @Schema(implementation = RecordingDTOListWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java index d34ae39..f60db44 100644 --- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java @@ -53,6 +53,7 @@ import org.apache.openmeetings.db.entity.user.User; import org.apache.openmeetings.db.manager.IClientManager; import org.apache.openmeetings.db.manager.IWhiteboardManager; import org.apache.openmeetings.webservice.error.ServiceException; +import org.apache.openmeetings.webservice.schema.ServiceResultWrapper; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; @@ -108,7 +109,8 @@ public class WbWebService extends BaseWebService { description = "This method will remove all whiteboards from given room\n" + " and create empty one(s) for room files specified", responses = { - @ApiResponse(responseCode = "200", description = "serviceResult object with the result", content = @Content(schema = @Schema(implementation = ServiceResult.class))), + @ApiResponse(responseCode = "200", description = "serviceResult object with the result", + content = @Content(schema = @Schema(implementation = ServiceResultWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) @@ -139,7 +141,8 @@ public class WbWebService extends BaseWebService { @Operation( description = "This method will do the same as clean WB in the room (except for there will be no UNDO)", responses = { - @ApiResponse(responseCode = "200", description = "serviceResult object with the result", content = @Content(schema = @Schema(implementation = ServiceResult.class))), + @ApiResponse(responseCode = "200", description = "serviceResult object with the result", + content = @Content(schema = @Schema(implementation = ServiceResultWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) @@ -172,7 +175,8 @@ public class WbWebService extends BaseWebService { @Operation( description = "This method will do the same as clean slide in the room (except for there will be no UNDO)", responses = { - @ApiResponse(responseCode = "200", description = "serviceResult object with the result", content = @Content(schema = @Schema(implementation = ServiceResult.class))), + @ApiResponse(responseCode = "200", description = "serviceResult object with the result", + content = @Content(schema = @Schema(implementation = ServiceResultWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) @@ -208,7 +212,8 @@ public class WbWebService extends BaseWebService { @Operation( description = "This method will receive WB as binary data (png) and store it to temporary PDF/PNG file", responses = { - @ApiResponse(responseCode = "200", description = "serviceResult object with the result", content = @Content(schema = @Schema(implementation = ServiceResult.class))), + @ApiResponse(responseCode = "200", description = "serviceResult object with the result", + content = @Content(schema = @Schema(implementation = ServiceResultWrapper.class))), @ApiResponse(responseCode = "500", description = "Error in case of invalid credentials or server error") } ) diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/schema/RecordingDTOListWrapper.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/schema/RecordingDTOListWrapper.java new file mode 100644 index 0000000..fc7aca9 --- /dev/null +++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/schema/RecordingDTOListWrapper.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.openmeetings.webservice.schema; + +import java.util.List; + +import org.apache.openmeetings.db.dto.record.RecordingDTO; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * + * @author Sebastian.wagner + * + * Provide the correct schema response including the wrapping root element + add example response. + * + * See https://issues.apache.org/jira/browse/OPENMEETINGS-2667 + * + */ +@Schema(example = "{\n" + + " \"recordingDTO\": [\n" + + " {\n" + + " \"id\": 1,\n" + + " \"name\": \"Recording [file.name.recording]19/09/21, 12:43 am\",\n" + + " \"hash\": \"1ee00bf1-6cb6-44d2-bb91-cfbe96e2ae19\",\n" + + " \"roomId\": 7,\n" + + " \"status\": \"PROCESSED\",\n" + + " \"interview\": false,\n" + + " \"start\": \"2021-09-19T10:43:39+12:00\",\n" + + " \"end\": \"2021-09-19T10:43:56+12:00\",\n" + + " \"width\": 1792,\n" + + " \"height\": 1120,\n" + + " \"ownerId\": 1\n" + + " }\n" + + " ]\n" + + "}") +public class RecordingDTOListWrapper { + private List<RecordingDTO> recordingDTO; + + public List<RecordingDTO> getRecordingDTO() { + return recordingDTO; + } + + public void setRecordingDTO(List<RecordingDTO> recordingDTO) { + this.recordingDTO = recordingDTO; + } +}