This project has retired. For details please refer to its
Attic page.
MultiFilingService xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.server.impl.atompub;
20
21 import static org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.RESOURCE_ENTRY;
22 import static org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.compileBaseUrl;
23 import static org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.compileUrl;
24 import static org.apache.chemistry.opencmis.server.impl.atompub.AtomPubUtils.writeObjectEntry;
25 import static org.apache.chemistry.opencmis.server.shared.HttpUtils.getEnumParameter;
26 import static org.apache.chemistry.opencmis.server.shared.HttpUtils.getStringParameter;
27
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30
31 import org.apache.chemistry.opencmis.commons.data.ObjectData;
32 import org.apache.chemistry.opencmis.commons.enums.VersioningState;
33 import org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException;
34 import org.apache.chemistry.opencmis.commons.impl.Constants;
35 import org.apache.chemistry.opencmis.commons.impl.UrlBuilder;
36 import org.apache.chemistry.opencmis.commons.server.CallContext;
37 import org.apache.chemistry.opencmis.commons.server.CmisService;
38 import org.apache.chemistry.opencmis.commons.server.ObjectInfo;
39
40
41
42
43 public class MultiFilingService {
44
45 private MultiFilingService() {
46 }
47
48
49
50
51 public static void removeObjectFromFolder(CallContext context, CmisService service, String repositoryId,
52 HttpServletRequest request, HttpServletResponse response) throws Exception {
53
54 String removeFrom = getStringParameter(request, Constants.PARAM_REMOVE_FROM);
55
56 AtomEntryParser parser = new AtomEntryParser(context.getTempDirectory(), context.getMemoryThreshold());
57 parser.setIgnoreAtomContentSrc(true);
58 parser.parse(request.getInputStream());
59
60 String objectId = parser.getId();
61
62 if (objectId == null && removeFrom == null) {
63
64 createUnfiledObject(context, service, repositoryId, request, response, parser);
65 return;
66 }
67
68
69 service.removeObjectFromFolder(repositoryId, objectId, removeFrom, null);
70
71 ObjectInfo objectInfo = service.getObjectInfo(repositoryId, objectId);
72 if (objectInfo == null) {
73 throw new CmisRuntimeException("Object Info is missing!");
74 }
75
76 ObjectData object = objectInfo.getObject();
77 if (object == null) {
78 throw new CmisRuntimeException("Object is null!");
79 }
80
81 if (object.getId() == null) {
82 throw new CmisRuntimeException("Object Id is null!");
83 }
84
85
86 UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
87
88 response.setStatus(HttpServletResponse.SC_CREATED);
89 response.setContentType(Constants.MEDIATYPE_ENTRY);
90 response.setHeader("Location", compileUrl(baseUrl, RESOURCE_ENTRY, object.getId()));
91
92
93 AtomEntry entry = new AtomEntry();
94 entry.startDocument(response.getOutputStream());
95 writeObjectEntry(service, entry, object, null, repositoryId, null, null, baseUrl, true);
96 entry.endDocument();
97 }
98
99
100
101
102
103
104
105 private static void createUnfiledObject(CallContext context, CmisService service, String repositoryId,
106 HttpServletRequest request, HttpServletResponse response, AtomEntryParser parser) throws Exception {
107
108 VersioningState versioningState = getEnumParameter(request, Constants.PARAM_VERSIONIG_STATE,
109 VersioningState.class);
110
111
112 String newObjectId = service.create(repositoryId, parser.getProperties(), null, parser.getContentStream(),
113 versioningState, parser.getPolicyIds(), null);
114
115 ObjectInfo objectInfo = service.getObjectInfo(repositoryId, newObjectId);
116 if (objectInfo == null) {
117 throw new CmisRuntimeException("Object Info is missing!");
118 }
119
120 ObjectData object = objectInfo.getObject();
121 if (object == null) {
122 throw new CmisRuntimeException("Object is null!");
123 }
124
125
126 UrlBuilder baseUrl = compileBaseUrl(request, repositoryId);
127
128 response.setStatus(HttpServletResponse.SC_CREATED);
129 response.setContentType(Constants.MEDIATYPE_ENTRY);
130 response.setHeader("Location", compileUrl(baseUrl, RESOURCE_ENTRY, newObjectId));
131
132
133 AtomEntry entry = new AtomEntry();
134 entry.startDocument(response.getOutputStream());
135 writeObjectEntry(service, entry, object, null, repositoryId, null, null, baseUrl, true);
136 entry.endDocument();
137 }
138 }