mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged RETURN-OF-THE-API (5.2.0) to 5.2.N (5.2.1)
128173 jvonka: REPO-839: Fix guess mimetype (if no file ext) - on upload and/or update (after a rename) - improvement to REPO-495 - will also apply to REPO-518 when implemented git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@129133 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -2295,7 +2295,16 @@ public class NodesImpl implements Nodes
|
|||||||
ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
|
ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true);
|
||||||
|
|
||||||
String mimeType = mimetypeService.guessMimetype(fileName);
|
String mimeType = mimetypeService.guessMimetype(fileName);
|
||||||
writer.setMimetype(mimeType);
|
if ((mimeType != null) && (! mimeType.equals(MimetypeMap.MIMETYPE_BINARY)))
|
||||||
|
{
|
||||||
|
// quick/weak guess based on file extension
|
||||||
|
writer.setMimetype(mimeType);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// stronger guess based on file stream
|
||||||
|
writer.guessMimetype(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
|
|
||||||
|
@@ -895,7 +895,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
|||||||
|
|
||||||
// upload files
|
// upload files
|
||||||
|
|
||||||
String fileName = "quick.pdf";
|
String fileName = "quick-2.pdf";
|
||||||
File file = getResourceFile(fileName);
|
File file = getResourceFile(fileName);
|
||||||
|
|
||||||
MultiPartBuilder multiPartBuilder = MultiPartBuilder.create()
|
MultiPartBuilder multiPartBuilder = MultiPartBuilder.create()
|
||||||
@@ -908,6 +908,19 @@ public class NodeApiTest extends AbstractBaseApiTest
|
|||||||
assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
|
assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
|
||||||
assertEquals("UTF-8", contentInfo.getEncoding());
|
assertEquals("UTF-8", contentInfo.getEncoding());
|
||||||
|
|
||||||
|
fileName = "quick-2.pdf";
|
||||||
|
file = getResourceFile(fileName);
|
||||||
|
|
||||||
|
multiPartBuilder = MultiPartBuilder.create()
|
||||||
|
.setFileData(new FileData("quick-2", file)); // note: we've deliberately dropped the file ext here
|
||||||
|
reqBody = multiPartBuilder.build();
|
||||||
|
|
||||||
|
response = post(getNodeChildrenUrl(fId), user1, reqBody.getBody(), null, reqBody.getContentType(), 201);
|
||||||
|
document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
contentInfo = document.getContent();
|
||||||
|
assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
|
||||||
|
assertEquals("UTF-8", contentInfo.getEncoding());
|
||||||
|
|
||||||
fileName = "example-1.txt";
|
fileName = "example-1.txt";
|
||||||
file = getResourceFile(fileName);
|
file = getResourceFile(fileName);
|
||||||
|
|
||||||
@@ -973,6 +986,42 @@ public class NodeApiTest extends AbstractBaseApiTest
|
|||||||
assertEquals(MimetypeMap.MIMETYPE_XML, contentInfo.getMimeType());
|
assertEquals(MimetypeMap.MIMETYPE_XML, contentInfo.getMimeType());
|
||||||
assertEquals("UTF-8", contentInfo.getEncoding());
|
assertEquals("UTF-8", contentInfo.getEncoding());
|
||||||
|
|
||||||
|
// upload file, rename and then update file
|
||||||
|
|
||||||
|
fileName = "quick.pdf";
|
||||||
|
file = getResourceFile(fileName);
|
||||||
|
|
||||||
|
multiPartBuilder = MultiPartBuilder.create()
|
||||||
|
.setFileData(new FileData(fileName, file));
|
||||||
|
reqBody = multiPartBuilder.build();
|
||||||
|
|
||||||
|
response = post(getNodeChildrenUrl(fId), user1, reqBody.getBody(), null, reqBody.getContentType(), 201);
|
||||||
|
document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
String docId = document.getId();
|
||||||
|
contentInfo = document.getContent();
|
||||||
|
assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
|
||||||
|
assertEquals("UTF-8", contentInfo.getEncoding());
|
||||||
|
|
||||||
|
// rename (mimeType remains unchanged, binary has not changed)
|
||||||
|
Document dUpdate = new Document();
|
||||||
|
dUpdate.setName("quick.docx");
|
||||||
|
|
||||||
|
response = put(URL_NODES, user1, docId, toJsonAsStringNonNull(dUpdate), null, 200);
|
||||||
|
document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
contentInfo = document.getContent();
|
||||||
|
assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
|
||||||
|
assertEquals("UTF-8", contentInfo.getEncoding());
|
||||||
|
|
||||||
|
fileName = "quick.docx";
|
||||||
|
file = getResourceFile(fileName);
|
||||||
|
BinaryPayload payload = new BinaryPayload(file);
|
||||||
|
|
||||||
|
response = putBinary(getNodeContentUrl(docId), user1, payload, null, null, 200);
|
||||||
|
document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
contentInfo = document.getContent();
|
||||||
|
assertEquals(MimetypeMap.MIMETYPE_OPENXML_WORDPROCESSING, contentInfo.getMimeType());
|
||||||
|
assertEquals("UTF-8", contentInfo.getEncoding());
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
delete(URL_NODES, user1, fId, 204);
|
delete(URL_NODES, user1, fId, 204);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user