Merged HEAD (5.2) to 5.2.N (5.2.1)

126369 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2)
      119798 jvonka: FileFolder API - NodeApiTest - add tests (+ve & -ve) to create empty file node
      - TODO subsequently show that file content can be updated
      RA-636


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126714 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ancuta Morarasu
2016-05-11 10:49:38 +00:00
parent 25141be821
commit f9a802acee
5 changed files with 112 additions and 13 deletions

View File

@@ -29,6 +29,10 @@ public class ContentInfo
return mimeType; return mimeType;
} }
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
public String getMimeTypeName() { public String getMimeTypeName() {
return mimeTypeName; return mimeTypeName;
} }

View File

@@ -46,8 +46,6 @@ import org.alfresco.service.namespace.QName;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class Document extends Node public class Document extends Node
{ {
private ContentInfo contentInfo;
public Document() { public Document() {
super(); super();
} }
@@ -62,22 +60,12 @@ public class Document extends Node
ContentData cd = (ContentData)val; ContentData cd = (ContentData)val;
String mimeType = cd.getMimetype(); String mimeType = cd.getMimetype();
String mimeTypeName = sr.getMimetypeService().getDisplaysByMimetype().get(mimeType); String mimeTypeName = sr.getMimetypeService().getDisplaysByMimetype().get(mimeType);
this.contentInfo = new ContentInfo(mimeType, mimeTypeName, cd.getSize(), cd.getEncoding()); contentInfo = new ContentInfo(mimeType, mimeTypeName, cd.getSize(), cd.getEncoding());
} }
this.isFolder = false; this.isFolder = false;
} }
public ContentInfo getContent()
{
return contentInfo;
}
public void setContent(ContentInfo contentInfo)
{
this.contentInfo = contentInfo;
}
@Override @Override
public String toString() public String toString()
{ {

View File

@@ -54,6 +54,12 @@ public class Folder extends Node
this.isFolder = true; this.isFolder = true;
} }
@Override
public ContentInfo getContent()
{
return null;
}
@Override @Override
public String toString() public String toString()
{ {

View File

@@ -299,6 +299,19 @@ public class Node implements Comparable<Node>
+ modifiedByUser + ", pathInfo =" + pathInfo +"]"; + modifiedByUser + ", pathInfo =" + pathInfo +"]";
} }
protected ContentInfo contentInfo;
public ContentInfo getContent()
{
return contentInfo;
}
public void setContent(ContentInfo contentInfo)
{
this.contentInfo = contentInfo;
}
// TODO for backwards compat' - set explicitly when needed (ie. favourites) (note: we could choose to have separate old Node/NodeImpl etc) // TODO for backwards compat' - set explicitly when needed (ie. favourites) (note: we could choose to have separate old Node/NodeImpl etc)
protected String title; protected String title;

View File

@@ -785,6 +785,94 @@ public class NodeApiTest extends AbstractBaseApiTest
post(postUrl, user1, toJsonAsStringNonNull(f1), 409); post(postUrl, user1, toJsonAsStringNonNull(f1), 409);
} }
/**
* Tests create empty file.
* <p>POST:</p>
* {@literal <host>:<port>/alfresco/api/-default-/public/alfresco/versions/1/nodes/<nodeId>/children}
*/
@Test
public void testCreateEmptyFile() throws Exception
{
AuthenticationUtil.setFullyAuthenticatedUser(user1);
NodeRef personNodeRef = personService.getPerson(user1);
NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personNodeRef);
String postUrl = "nodes/"+myFilesNodeRef.getId()+"/children";
Document d1 = new Document();
d1.setName("d1.txt");
d1.setNodeType("cm:content");
ContentInfo ci = new ContentInfo();
ci.setMimeType("text/plain");
d1.setContent(ci);
// create empty file
HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201);
Document d1Created = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertNotNull(d1Created.getId());
assertEquals("d1.txt",d1Created.getName());
assertEquals("cm:content",d1Created.getNodeType());
assertEquals(false, d1Created.getIsFolder());
assertNotNull(d1Created.getCreatedAt());
assertEquals(user1,d1Created.getCreatedByUser().getUserName());
assertNotNull(d1Created.getModifiedAt());
assertEquals(user1,d1Created.getModifiedByUser().getUserName());
assertEquals(myFilesNodeRef.getId(), d1Created.getParentId());
assertTrue(d1Created.getAspectNames().contains("cm:auditable"));
assertEquals(0L, d1Created.getContent().getSizeInBytes());
assertEquals("text/plain", d1Created.getContent().getMimeType());
assertEquals("Plain Text", d1Created.getContent().getMimeTypeName());
assertEquals("UTF-8", d1Created.getContent().getEncoding());
assertNull(d1Created.getProperties());
assertNull(d1Created.getPath());
assertNull(d1Created.getIsLink());
// create empty file with properties
Map<String,Object> props = new HashMap<>();
props.put("cm:title","my file title");
props.put("cm:description","my file description");
Document d2 = new Document();
d2.setName("d2.txt");
d2.setNodeType("cm:content");
d2.setProperties(props);
response = post(postUrl, user1, toJsonAsStringNonNull(d2), 201);
Document d2Created = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
assertNotNull(d2Created.getId());
assertTrue(d2Created.getAspectNames().contains("cm:auditable"));
assertTrue(d2Created.getAspectNames().contains("cm:titled"));
assertEquals(d2Created.getProperties().get("cm:title"),"my file title");
assertEquals(d2Created.getProperties().get("cm:description"),"my file description");
// -ve test - name is mandatory
Document invalid = new Document();
invalid.setNodeType("cm:content");
post(postUrl, user1, toJsonAsStringNonNull(invalid), 400);
// -ve test - node type is mandatory
invalid = new Document();
invalid.setName("my file.txt");
post(postUrl, user1, toJsonAsStringNonNull(invalid), 400);
// -ve test - invalid (eg. not a folder) parent id
Document d3 = new Document();
d3.setName("d3.txt");
d3.setNodeType("cm:content");
post("nodes/"+personNodeRef.getId()+"/children", user1, toJsonAsStringNonNull(d3), 400);
// -ve test - unknown parent folder node id
post("nodes/"+UUID.randomUUID().toString()+"/children", user1, toJsonAsStringNonNull(d3), 404);
// -ve test - duplicate name
post(postUrl, user1, toJsonAsStringNonNull(d1), 409);
}
// TODO add test to create multiple folders & empty files (within same parent folder)
// TODO add test for file/folder links - creating, getting, listing, deleting // TODO add test for file/folder links - creating, getting, listing, deleting
private String getChildrenUrl(NodeRef parentNodeRef) private String getChildrenUrl(NodeRef parentNodeRef)