This project has retired. For details please refer to its
Attic page.
CreateBigDocument 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.tck.tests.crud;
20
21 import static org.apache.chemistry.opencmis.tck.CmisTestResultStatus.FAILURE;
22
23 import java.io.IOException;
24 import java.io.InputStream;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.apache.chemistry.opencmis.client.api.Document;
29 import org.apache.chemistry.opencmis.client.api.Folder;
30 import org.apache.chemistry.opencmis.client.api.ObjectId;
31 import org.apache.chemistry.opencmis.client.api.Session;
32 import org.apache.chemistry.opencmis.commons.PropertyIds;
33 import org.apache.chemistry.opencmis.commons.data.ContentStream;
34 import org.apache.chemistry.opencmis.commons.definitions.DocumentTypeDefinition;
35 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
36 import org.apache.chemistry.opencmis.commons.enums.VersioningState;
37 import org.apache.chemistry.opencmis.tck.CmisTestResult;
38 import org.apache.chemistry.opencmis.tck.impl.AbstractSessionTest;
39
40
41
42
43 public class CreateBigDocument extends AbstractSessionTest {
44
45 @Override
46 public void init(Map<String, String> parameters) {
47 super.init(parameters);
48 setName("Create Big Document Test");
49 setDescription("Creates a 10 MiB document and deletes it.");
50 }
51
52 @Override
53 public void run(Session session) {
54 CmisTestResult f;
55
56
57 Folder testFolder = createTestFolder(session);
58
59 try {
60 String name = "bigdoc";
61 String objectTypeId = getDocumentTestTypeId();
62 String mimetype = "application/octet-stream";
63
64 final long size = 10 * 1024 * 1024;
65 InputStream in = new InputStream() {
66 private int counter = -1;
67
68 @Override
69 public int read() throws IOException {
70 counter++;
71 if (counter >= size) {
72 return -1;
73 }
74
75 return '0' + (counter / 10);
76 }
77 };
78
79
80 ContentStream contentStream = session.getObjectFactory().createContentStream(name, size, mimetype, in);
81
82 Map<String, Object> properties = new HashMap<String, Object>();
83 properties.put(PropertyIds.NAME, name);
84 properties.put(PropertyIds.OBJECT_TYPE_ID, objectTypeId);
85
86
87 TypeDefinition type = session.getTypeDefinition(objectTypeId);
88 if (!(type instanceof DocumentTypeDefinition)) {
89 addResult(createResult(FAILURE, "Type is not a document type! Type: " + objectTypeId, true));
90 return;
91 }
92
93 DocumentTypeDefinition docType = (DocumentTypeDefinition) type;
94 VersioningState versioningState = (Boolean.TRUE.equals(docType.isVersionable()) ? VersioningState.MAJOR
95 : VersioningState.NONE);
96
97
98 ObjectId id = session.createDocument(properties, testFolder, contentStream, versioningState);
99 Document doc = (Document) session.getObject(id);
100
101
102 addResult(checkObject(session, doc, getAllProperties(doc), "New document object spec compliance"));
103
104
105 f = createResult(FAILURE, "Content stream length doesn't match the uploaded content!", true);
106 assertEquals(size, doc.getContentStreamLength(), null, f);
107
108
109 doc.delete(true);
110 } finally {
111
112 deleteTestFolder();
113 }
114 }
115 }