Added swagger annotations to the new endpoint
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/82144bc2 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/82144bc2 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/82144bc2 Branch: refs/heads/feature-branch-AMBARI-21307 Commit: 82144bc246a581b8ae7b38e6fab7a44d852192d6 Parents: c890306 Author: Balázs Bence Sári <bs...@hortonworks.com> Authored: Thu Jul 6 18:36:18 2017 +0200 Committer: lpuskas <laszlo.pus...@sequenceiq.com> Committed: Tue Aug 22 11:55:12 2017 +0200 ---------------------------------------------------------------------- .../AmbariConfigurationRequestSwagger.java | 48 +++++++++++++++ .../AmbariConfigurationResponseSwagger.java | 40 +++++++++++++ .../services/AmbariConfigurationService.java | 62 +++++++++++++++++--- 3 files changed, 143 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/82144bc2/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationRequestSwagger.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationRequestSwagger.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationRequestSwagger.java new file mode 100644 index 0000000..d6714f9 --- /dev/null +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationRequestSwagger.java @@ -0,0 +1,48 @@ +/* + * Licensed 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.ambari.server.api.services; + +import java.util.Map; + +import org.apache.ambari.server.controller.ApiModel; +import org.apache.ambari.server.orm.entities.ConfigurationBaseEntity; + +import io.swagger.annotations.ApiModelProperty; + +/** + * Request data model for {@link org.apache.ambari.server.api.services.AmbariConfigurationService} + */ +public interface AmbariConfigurationRequestSwagger extends ApiModel { + + @ApiModelProperty(name = "AmbariConfiguration") + AmbariConfigurationRequestInfo getAmbariConfiguration(); + + interface AmbariConfigurationRequestInfo { + @ApiModelProperty + Long getId(); + + @ApiModelProperty + Map<String, Object> getData(); + + @ApiModelProperty + String getType(); + + @ApiModelProperty + Long getVersion(); + + @ApiModelProperty(name = "version_tag") + String getVersionTag(); + } + +} http://git-wip-us.apache.org/repos/asf/ambari/blob/82144bc2/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationResponseSwagger.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationResponseSwagger.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationResponseSwagger.java new file mode 100644 index 0000000..c55ac1d --- /dev/null +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationResponseSwagger.java @@ -0,0 +1,40 @@ +/* + * Licensed 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.ambari.server.api.services; + +import java.util.Map; + +import org.apache.ambari.server.controller.ApiModel; + +import io.swagger.annotations.ApiModelProperty; + +/** + * Response data model for {@link org.apache.ambari.server.api.services.AmbariConfigurationService} + */ +public interface AmbariConfigurationResponseSwagger extends ApiModel { + + @ApiModelProperty(name = "AmbariConfiguration") + AmbariConfigurationResponseInfo getAmbariConfigurationResponse(); + + interface AmbariConfigurationResponseInfo { + @ApiModelProperty + Long getId(); + + @ApiModelProperty + Map<String, Object> getData(); + + @ApiModelProperty + String getType(); + } +} http://git-wip-us.apache.org/repos/asf/ambari/blob/82144bc2/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationService.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationService.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationService.java index 0fa6e44..0c159b9 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationService.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariConfigurationService.java @@ -70,9 +70,12 @@ import io.swagger.annotations.ApiResponses; * </pre> */ @Path("/configurations/") -@Api(value = "/configurations", description = "Endpoint for Ambari configuration related operations") +@Api(value = "Ambari Configurations", description = "Endpoint for Ambari configuration related operations") public class AmbariConfigurationService extends BaseService { + private static final String AMBARI_CONFIGURATION_REQUEST_TYPE = + "org.apache.ambari.server.api.services.AmbariConfigurationRequestSwagger"; + /** * Creates an ambari configuration resource. * @@ -83,9 +86,10 @@ public class AmbariConfigurationService extends BaseService { */ @POST @Produces(MediaType.TEXT_PLAIN) - @ApiOperation(value = "Creates an ambari configuration resource") + @ApiOperation(value = "Creates an ambari configuration resource", + nickname = "AmbariConfigurationService#createAmbariConfiguration") @ApiImplicitParams({ - @ApiImplicitParam(dataType = "", paramType = PARAM_TYPE_BODY) + @ApiImplicitParam(dataType = AMBARI_CONFIGURATION_REQUEST_TYPE, paramType = PARAM_TYPE_BODY) }) @ApiResponses({ @ApiResponse(code = HttpStatus.SC_CREATED, message = MSG_SUCCESSFUL_OPERATION), @@ -103,7 +107,26 @@ public class AmbariConfigurationService extends BaseService { @GET @Produces(MediaType.TEXT_PLAIN) - @ApiOperation(value = "Retrieve ambari configuration resources") + @ApiOperation(value = "Retrieve all ambari configuration resources", + nickname = "AmbariConfigurationService#getAmbariConfigurations", + notes = "Returns all Ambari configurations.", + response = AmbariConfigurationResponseSwagger.class, + responseContainer = RESPONSE_CONTAINER_LIST) + @ApiImplicitParams({ + @ApiImplicitParam(name = QUERY_FIELDS, value = QUERY_FILTER_DESCRIPTION, + defaultValue = "AmbariConfiguration/data, AmbariConfiguration/id, AmbariConfiguration/type", + dataType = DATA_TYPE_STRING, paramType = PARAM_TYPE_QUERY), + @ApiImplicitParam(name = QUERY_SORT, value = QUERY_SORT_DESCRIPTION, + defaultValue = "AmbariConfiguration/id", + dataType = DATA_TYPE_STRING, paramType = PARAM_TYPE_QUERY), + @ApiImplicitParam(name = QUERY_PAGE_SIZE, value = QUERY_PAGE_SIZE_DESCRIPTION, defaultValue = DEFAULT_PAGE_SIZE, dataType = DATA_TYPE_INT, paramType = PARAM_TYPE_QUERY), + @ApiImplicitParam(name = QUERY_FROM, value = QUERY_FROM_DESCRIPTION, defaultValue = DEFAULT_FROM, dataType = DATA_TYPE_STRING, paramType = PARAM_TYPE_QUERY), + @ApiImplicitParam(name = QUERY_TO, value = QUERY_TO_DESCRIPTION, dataType = DATA_TYPE_STRING, paramType = PARAM_TYPE_QUERY) + }) + @ApiResponses(value = { + @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION), + @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR) + }) public Response getAmbariConfigurations(String body, @Context HttpHeaders headers, @Context UriInfo uri) { return handleRequest(headers, body, uri, Request.Type.GET, createResource(Resource.Type.AmbariConfiguration, Collections.EMPTY_MAP)); @@ -112,7 +135,18 @@ public class AmbariConfigurationService extends BaseService { @GET @Path("{configurationId}") @Produces(MediaType.TEXT_PLAIN) - @ApiOperation(value = "Retrieve ambari configuration resource") + @ApiOperation(value = "Retrieve the details of an ambari configuration resource", + nickname = "AmbariConfigurationService#getAmbariConfiguration", + response = AmbariConfigurationResponseSwagger.class) + @ApiImplicitParams({ + @ApiImplicitParam(name = QUERY_FIELDS, value = QUERY_FILTER_DESCRIPTION, defaultValue = "AmbariConfiguration/*", + dataType = DATA_TYPE_STRING, paramType = PARAM_TYPE_QUERY) + }) + @ApiResponses(value = { + @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION), + @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = MSG_RESOURCE_NOT_FOUND), + @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR) + }) public Response getAmbariConfiguration(String body, @Context HttpHeaders headers, @Context UriInfo uri, @PathParam("configurationId") String configurationId) { return handleRequest(headers, body, uri, Request.Type.GET, createResource(Resource.Type.AmbariConfiguration, @@ -121,7 +155,20 @@ public class AmbariConfigurationService extends BaseService { @PUT @Produces(MediaType.TEXT_PLAIN) - @ApiOperation(value = "Update ambari configuration resources") + @ApiOperation(value = "Updates ambari configuration resources - Not implemented yet", + nickname = "AmbariConfigurationService#updateAmbariConfiguration") + @ApiImplicitParams({ + @ApiImplicitParam(dataType = AMBARI_CONFIGURATION_REQUEST_TYPE, paramType = PARAM_TYPE_BODY) + }) + @ApiResponses({ + @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION), + @ApiResponse(code = HttpStatus.SC_ACCEPTED, message = MSG_REQUEST_ACCEPTED), + @ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = MSG_INVALID_ARGUMENTS), + @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = MSG_RESOURCE_NOT_FOUND), + @ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = MSG_NOT_AUTHENTICATED), + @ApiResponse(code = HttpStatus.SC_FORBIDDEN, message = MSG_PERMISSION_DENIED), + @ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = MSG_SERVER_ERROR), + }) public Response updateAmbariConfiguration() { throw new UnsupportedOperationException("Not yet implemented"); } @@ -129,7 +176,8 @@ public class AmbariConfigurationService extends BaseService { @DELETE @Path("{configurationId}") @Produces(MediaType.TEXT_PLAIN) - @ApiOperation(value = "Deletes an ambari configuration resource") + @ApiOperation(value = "Deletes an ambari configuration resource", + nickname = "AmbariConfigurationService#deleteAmbariConfiguration") @ApiResponses({ @ApiResponse(code = HttpStatus.SC_OK, message = MSG_SUCCESSFUL_OPERATION), @ApiResponse(code = HttpStatus.SC_NOT_FOUND, message = MSG_RESOURCE_NOT_FOUND),