/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.project.server; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.eclipse.che.api.core.NotFoundException; import org.eclipse.che.api.core.rest.Service; import org.eclipse.che.api.core.rest.annotations.GenerateLink; import org.eclipse.che.api.project.server.type.ProjectTypeRegistry; import org.eclipse.che.api.project.shared.*; import org.eclipse.che.api.project.shared.Constants; import org.eclipse.che.api.project.shared.dto.ProjectTypeDto; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.util.List; import java.util.stream.Collectors; import static org.eclipse.che.api.project.server.DtoConverter.asDto; import static org.eclipse.che.api.project.shared.Constants.LINK_REL_PROJECT_TYPES; /** * ProjectTypeService * * @author gazarenkov */ @Api(value = "/project-type", description = "Project type REST API") @Path("project-type") public class ProjectTypeService extends Service { private final ProjectTypeRegistry registry; @Inject public ProjectTypeService(ProjectTypeRegistry registry) { this.registry = registry; } @GET @Produces(MediaType.APPLICATION_JSON) @GenerateLink(rel = LINK_REL_PROJECT_TYPES) @ApiOperation(value = "Get project types", responseContainer = "List", response = ProjectTypeDto.class) @ApiResponses(@ApiResponse(code = 200, message = "Project types successfully fetched")) public List<ProjectTypeDto> getProjectTypes() { return registry.getProjectTypes() .stream() .map(DtoConverter::asDto) .collect(Collectors.toList()); } @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) @ApiOperation("Get the project type by the id") @ApiResponses({@ApiResponse(code = 200, message = "The response contains requested project type entity"), @ApiResponse(code = 404, message = "The project type with such id doesn't exist")}) public ProjectTypeDto getProjectType(@ApiParam("Project type id") @PathParam("id") String id) throws NotFoundException { return asDto(registry.getProjectType(id)); } }