/** * Copyright 2017 ZTE Corporation. * * 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.onap.workflow.resources; 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 java.io.InputStream; import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.eclipse.jetty.http.HttpStatus; import org.glassfish.jersey.media.multipart.FormDataContentDisposition; import org.glassfish.jersey.media.multipart.FormDataParam; import org.jvnet.hk2.annotations.Service; import org.onap.workflow.common.RestResponse; import org.onap.workflow.entity.DeployBpmnFileResponse; import org.onap.workflow.entity.StartProcessRequest; import org.onap.workflow.wrapper.WorkflowInstanceWrapper; @Path("/") @Api(tags = {"Workflow Resource"}) @Produces(MediaType.APPLICATION_JSON) @Service public class WorkflowResource { @POST @Path("/package") @Consumes({"multipart/form-data"}) @Produces({"application/json"}) @ApiOperation(value = "deploy bpmn file") @ApiResponses(value = { @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "microservice not found", response = DeployBpmnFileResponse.class), @ApiResponse(code = HttpStatus.UNSUPPORTED_MEDIA_TYPE_415, message = "Unprocessable MicroServiceInfo Entity ", response = String.class), @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "error")}) public Response deployBpmnFile( @ApiParam(value = "file inputstream", required = true) @FormDataParam("file") InputStream fileInputStream, @ApiParam(value = "file detail", required = false) @FormDataParam("file") FormDataContentDisposition fileDetail) { return WorkflowInstanceWrapper.getInstance().deployBpmnFile(fileDetail.getFileName(), fileInputStream, null); } @Path("/package/{deployId}") @DELETE @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = "undeploy bpmn file") @ApiResponses(value = { @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "microservice not found", response = DeployBpmnFileResponse.class), @ApiResponse(code = HttpStatus.UNSUPPORTED_MEDIA_TYPE_415, message = "Unprocessable MicroServiceInfo Entity ", response = String.class), @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "error")}) public RestResponse undeployBpmnFile( @ApiParam("deployId") @PathParam("deployId") String deployId) { return WorkflowInstanceWrapper.getInstance().undeployBpmnFile(deployId); } @Path("process/instance") @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = "package process") @ApiResponses(value = { @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "microservice not found", response = DeployBpmnFileResponse.class), @ApiResponse(code = HttpStatus.UNSUPPORTED_MEDIA_TYPE_415, message = "Unprocessable MicroServiceInfo Entity ", response = String.class), @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "error")}) public Response startProcess( @ApiParam(value = "request", required = false) StartProcessRequest request) { return WorkflowInstanceWrapper.getInstance().startProcess(request); } }