1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.rest.cxf.service;
20
21 import java.util.List;
22 import javax.ws.rs.core.MediaType;
23 import javax.ws.rs.core.Response;
24 import javax.ws.rs.core.StreamingOutput;
25 import org.apache.syncope.common.lib.to.BpmnProcess;
26 import org.apache.syncope.common.lib.types.BpmnProcessFormat;
27 import org.apache.syncope.common.rest.api.RESTHeaders;
28 import org.apache.syncope.common.rest.api.service.BpmnProcessService;
29 import org.apache.syncope.core.logic.BpmnProcessLogic;
30 import org.springframework.stereotype.Service;
31
32 @Service
33 public class BpmnProcessServiceImpl extends AbstractService implements BpmnProcessService {
34
35 protected final BpmnProcessLogic logic;
36
37 public BpmnProcessServiceImpl(final BpmnProcessLogic logic) {
38 this.logic = logic;
39 }
40
41 @Override
42 public List<BpmnProcess> list() {
43 return logic.list();
44 }
45
46 @Override
47 public Response get(final String key) {
48 BpmnProcessFormat format =
49 messageContext.getHttpHeaders().getAcceptableMediaTypes().contains(MediaType.APPLICATION_JSON_TYPE)
50 ? BpmnProcessFormat.JSON
51 : BpmnProcessFormat.XML;
52
53 StreamingOutput sout = os -> logic.exportDefinition(key, format, os);
54
55 return Response.ok(sout).
56 type(format.getMediaType()).
57 build();
58 }
59
60 @Override
61 public Response exportDiagram(final String key) {
62 StreamingOutput sout = (os) -> logic.exportDiagram(key, os);
63
64 return Response.ok(sout).
65 type(RESTHeaders.MEDIATYPE_IMAGE_PNG).
66 build();
67 }
68
69 @Override
70 public void set(final String key, final String definition) {
71 BpmnProcessFormat format =
72 messageContext.getHttpHeaders().getMediaType().equals(MediaType.APPLICATION_JSON_TYPE)
73 ? BpmnProcessFormat.JSON
74 : BpmnProcessFormat.XML;
75
76 logic.importDefinition(key, format, definition);
77 }
78
79 @Override
80 public void delete(final String key) {
81 logic.delete(key);
82 }
83 }