package org.activiti.kickstart; import java.io.InputStream; import java.util.List; import org.activiti.engine.ActivitiException; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.restlet.data.MediaType; import org.restlet.data.Status; import org.restlet.ext.fileupload.RestletFileUpload; import org.restlet.representation.InputRepresentation; import org.restlet.representation.Representation; import org.restlet.resource.Get; import org.restlet.resource.Post; /** * @author jbarrez */ public class WorkflowImageResource extends BaseResource { @Get public InputRepresentation getWorkflowImage() { String workflowId = (String) getRequest().getAttributes().get("workflowId"); if (workflowId == null) { getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND); return null; } InputStream imageStream = getKickstartService().getProcessImage(workflowId); if (imageStream == null) { getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND); return null; } else { return new InputRepresentation(imageStream, MediaType.IMAGE_PNG); } } @Post public void setWorkflowImage(Representation entity) { String workflowId = (String) getRequest().getAttributes().get("workflowId"); try { RestletFileUpload upload = new RestletFileUpload(new DiskFileItemFactory()); List<FileItem> items = upload.parseRepresentation(entity); FileItem uploadItem = null; for (FileItem fileItem : items) { if(fileItem.getName() != null) { uploadItem = fileItem; } } getKickstartService().setProcessImage(workflowId, uploadItem.getInputStream()); } catch(Exception e) { throw new ActivitiException("Unable to upload workflow image: " + e.getMessage()); } } }