mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD (5.2) to 5.2.N (5.2.1)
126449 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 122013 jvonka: Nodes (FileFolder) API - add isContent (in addition to isFolder) to node info RA-828, RA-741 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126794 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -248,6 +248,7 @@ public class NodesImpl implements Nodes
|
||||
ContentModel.PROP_WORKING_COPY_OWNER);
|
||||
|
||||
private final static String PARAM_ISFOLDER = "isFolder";
|
||||
private final static String PARAM_ISCONTENT = "isContent";
|
||||
private final static String PARAM_SUBTYPES = "subTypes";
|
||||
|
||||
private final static String PARAM_NAME = "name";
|
||||
@@ -277,8 +278,9 @@ public class NodesImpl implements Nodes
|
||||
MAP_PARAM_QNAME = Collections.unmodifiableMap(aMap);
|
||||
}
|
||||
|
||||
// list children filtering (via where clause)
|
||||
private final static Set<String> LIST_FOLDER_CHILDREN_EQUALS_QUERY_PROPERTIES =
|
||||
new HashSet<>(Arrays.asList(new String[] {PARAM_ISFOLDER, PARAM_NODETYPE, PARAM_SUBTYPES}));
|
||||
new HashSet<>(Arrays.asList(new String[] {PARAM_ISFOLDER, PARAM_ISCONTENT, PARAM_NODETYPE, PARAM_SUBTYPES}));
|
||||
|
||||
/*
|
||||
* Validates that node exists.
|
||||
@@ -677,8 +679,9 @@ public class NodesImpl implements Nodes
|
||||
{
|
||||
// not direct folder (or file) ...
|
||||
// might be sub-type of cm:cmobject (or a cm:link pointing to cm:cmobject or possibly even another cm:link)
|
||||
node = new Document(nodeRef, parentNodeRef, properties, mapUserInfo, sr);
|
||||
node = new Node(nodeRef, parentNodeRef, properties, mapUserInfo, sr);
|
||||
node.setIsFolder(false);
|
||||
node.setIsContent(false);
|
||||
}
|
||||
else if (type.equals(Type.DOCUMENT))
|
||||
{
|
||||
@@ -686,7 +689,6 @@ public class NodesImpl implements Nodes
|
||||
}
|
||||
else if (type.equals(Type.FOLDER))
|
||||
{
|
||||
// container/folder
|
||||
node = new Folder(nodeRef, parentNodeRef, properties, mapUserInfo, sr);
|
||||
}
|
||||
else
|
||||
@@ -927,11 +929,23 @@ public class NodesImpl implements Nodes
|
||||
QueryHelper.walk(q, propertyWalker);
|
||||
|
||||
Boolean isFolder = propertyWalker.getProperty(PARAM_ISFOLDER, WhereClauseParser.EQUALS, Boolean.class);
|
||||
if (isFolder != null)
|
||||
Boolean isContent = propertyWalker.getProperty(PARAM_ISCONTENT, WhereClauseParser.EQUALS, Boolean.class);
|
||||
|
||||
if ((isFolder != null) && (isContent != null))
|
||||
{
|
||||
includeFiles = isContent;
|
||||
includeFolders = isFolder;
|
||||
}
|
||||
else if (isFolder != null)
|
||||
{
|
||||
includeFiles = !isFolder;
|
||||
includeFolders = isFolder;
|
||||
}
|
||||
else if (isContent != null)
|
||||
{
|
||||
includeFiles = isContent;
|
||||
includeFolders = !isContent;
|
||||
}
|
||||
|
||||
String nodeTypeStr = propertyWalker.getProperty(PARAM_NODETYPE, WhereClauseParser.EQUALS, String.class);
|
||||
if ((nodeTypeStr != null) && (! nodeTypeStr.isEmpty()))
|
||||
@@ -961,6 +975,7 @@ public class NodesImpl implements Nodes
|
||||
List<Pair<QName, Boolean>> sortProps = null;
|
||||
if ((sortCols != null) && (sortCols.size() > 0))
|
||||
{
|
||||
// TODO should we allow isContent in sort (and map to reverse of isFolder) ?
|
||||
sortProps = new ArrayList<>(sortCols.size());
|
||||
for (SortColumn sortCol : sortCols)
|
||||
{
|
||||
|
@@ -62,7 +62,8 @@ public class Document extends Node
|
||||
contentInfo = new ContentInfo(mimeType, mimeTypeName, cd.getSize(), cd.getEncoding());
|
||||
}
|
||||
|
||||
this.isFolder = false;
|
||||
setIsFolder(false);
|
||||
setIsContent(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -49,7 +49,9 @@ public class Folder extends Node
|
||||
public Folder(NodeRef nodeRef, NodeRef parentNodeRef, Map<QName, Serializable> nodeProps, Map<String, UserInfo> mapUserInfo, ServiceRegistry sr)
|
||||
{
|
||||
super(nodeRef, parentNodeRef, nodeProps, mapUserInfo, sr);
|
||||
this.isFolder = true;
|
||||
|
||||
setIsFolder(true);
|
||||
setIsContent(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -64,6 +64,7 @@ public class Node implements Comparable<Node>
|
||||
protected UserInfo modifiedByUser;
|
||||
|
||||
protected Boolean isFolder;
|
||||
protected Boolean isContent;
|
||||
protected Boolean isLink;
|
||||
|
||||
protected NodeRef parentNodeRef;
|
||||
@@ -260,6 +261,16 @@ public class Node implements Comparable<Node>
|
||||
this.isFolder = isFolder;
|
||||
}
|
||||
|
||||
public Boolean getIsContent()
|
||||
{
|
||||
return isContent;
|
||||
}
|
||||
|
||||
public void setIsContent(Boolean isContent)
|
||||
{
|
||||
this.isContent = isContent;
|
||||
}
|
||||
|
||||
public Boolean getIsLink()
|
||||
{
|
||||
return isLink;
|
||||
@@ -298,10 +309,11 @@ public class Node implements Comparable<Node>
|
||||
return "Node [nodeRef=" + nodeRef + ", type=" + prefixTypeQName + ", name=" + name + ", title="
|
||||
+ title + ", description=" + description + ", createdAt="
|
||||
+ createdAt + ", modifiedAt=" + modifiedAt + ", createdByUser=" + createdByUser + ", modifiedBy="
|
||||
+ modifiedByUser + ", pathInfo =" + pathInfo +"]";
|
||||
+ modifiedByUser + ", isFolder =" + isFolder + ", isContent =" + isContent + ", pathInfo =" + pathInfo +"]";
|
||||
}
|
||||
|
||||
// here to allow POST /nodes/{id}/children when creating empty file with specified content.mimeType
|
||||
// also allows list of results to be returned as "nodes"
|
||||
|
||||
protected ContentInfo contentInfo;
|
||||
|
||||
|
@@ -267,12 +267,16 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
assertEquals(4, nodes.size());
|
||||
assertEquals(folder2, nodes.get(0).getName());
|
||||
assertTrue(nodes.get(0).getIsFolder());
|
||||
assertFalse(nodes.get(0).getIsContent());
|
||||
assertEquals(folder1, nodes.get(1).getName());
|
||||
assertTrue(nodes.get(1).getIsFolder());
|
||||
assertFalse(nodes.get(1).getIsContent());
|
||||
assertEquals(content2, nodes.get(2).getName());
|
||||
assertFalse(nodes.get(2).getIsFolder());
|
||||
assertTrue(nodes.get(2).getIsContent());
|
||||
assertEquals(content1, nodes.get(3).getName());
|
||||
assertFalse(nodes.get(3).getIsFolder());
|
||||
assertTrue(nodes.get(3).getIsContent());
|
||||
|
||||
// Order by folders last and modified date first
|
||||
orderBy = Collections.singletonMap("orderBy", "isFolder ASC,modifiedAt DESC");
|
||||
@@ -457,17 +461,21 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
assertEquals(2, nodes.size());
|
||||
|
||||
assertTrue(nodes.get(0).getIsFolder());
|
||||
assertTrue(nodes.get(1).getIsFolder());
|
||||
assertFalse(nodes.get(0).getIsContent());
|
||||
assertTrue(folderIds.contains(nodes.get(0).getId()));
|
||||
|
||||
assertTrue(nodes.get(1).getIsFolder());
|
||||
assertFalse(nodes.get(1).getIsContent());
|
||||
assertTrue(folderIds.contains(nodes.get(1).getId()));
|
||||
|
||||
// filtering, via where clause - content only
|
||||
params = new LinkedHashMap<>();
|
||||
params.put("where", "(isFolder=false)");
|
||||
params.put("where", "(isContent=true)");
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(1, nodes.size());
|
||||
assertFalse(nodes.get(0).getIsFolder());
|
||||
assertTrue(nodes.get(0).getIsContent());
|
||||
assertTrue(contentIds.contains(nodes.get(0).getId()));
|
||||
|
||||
// list children via relativePath
|
||||
@@ -614,6 +622,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
assertNotNull(myFilesNodeId);
|
||||
assertEquals(user1, node.getName());
|
||||
assertTrue(node.getIsFolder());
|
||||
assertFalse(node.getIsContent());
|
||||
|
||||
NodeRef myHomeNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, myFilesNodeId);
|
||||
NodeRef userHomesNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, node.getParentId());
|
||||
@@ -759,6 +768,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
assertNotNull(myFilesNodeId);
|
||||
assertEquals(user1, node.getName());
|
||||
assertTrue(node.getIsFolder());
|
||||
assertFalse(node.getIsContent());
|
||||
assertNull(node.getPath()); // note: path can be optionally "select"'ed - see separate test
|
||||
|
||||
response = getSingle(NodesEntityResource.class, user1, Nodes.PATH_SHARED, null, 200);
|
||||
@@ -767,6 +777,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
assertNotNull(sharedFilesNodeId);
|
||||
assertEquals("Shared", node.getName());
|
||||
assertTrue(node.getIsFolder());
|
||||
assertFalse(node.getIsContent());
|
||||
assertNull(node.getPath());
|
||||
|
||||
//Delete user1's home
|
||||
@@ -2001,6 +2012,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
assertNotNull(docResp.getModifiedAt());
|
||||
assertNotNull(docResp.getModifiedByUser());
|
||||
assertFalse(docResp.getIsFolder());
|
||||
assertTrue(docResp.getIsContent());
|
||||
assertNull(docResp.getIsLink());
|
||||
assertEquals("cm:content", docResp.getNodeType());
|
||||
assertNotNull(docResp.getParentId());
|
||||
|
@@ -28,14 +28,14 @@ package org.alfresco.rest.api.tests.client.data;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Representation of a document node (initially for client tests for File Folder API)
|
||||
* Representation of a document node - initially for client tests for Nodes (aka File Folder) API
|
||||
*
|
||||
* @author janv
|
||||
*
|
||||
*/
|
||||
public class Document extends Node
|
||||
{
|
||||
private ContentInfo content;
|
||||
private ContentInfo contentInfo;
|
||||
|
||||
public Document() {
|
||||
super();
|
||||
@@ -43,12 +43,12 @@ public class Document extends Node
|
||||
|
||||
public ContentInfo getContent()
|
||||
{
|
||||
return content;
|
||||
return contentInfo;
|
||||
}
|
||||
|
||||
public void setContent(ContentInfo content)
|
||||
public void setContent(ContentInfo contentInfo)
|
||||
{
|
||||
this.content = content;
|
||||
this.contentInfo = contentInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -60,6 +60,6 @@ public class Document extends Node
|
||||
|
||||
Document other = (Document) o;
|
||||
|
||||
content.expected(((Document) o).getContent());
|
||||
contentInfo.expected(other.getContent());
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,7 @@ package org.alfresco.rest.api.tests.client.data;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Representation of a folder node (initially for client tests for File Folder API)
|
||||
* Representation of a folder node - initially for client tests for Nodes (aka File Folder) API
|
||||
*
|
||||
* @author janv
|
||||
*/
|
||||
|
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Representation of a node (for client tests for File Folder API)
|
||||
* Representation of a node - initially for client tests for Nodes (aka File Folder) API
|
||||
*
|
||||
* @author janv
|
||||
*/
|
||||
@@ -52,6 +52,7 @@ public class Node
|
||||
protected UserInfo modifiedByUser;
|
||||
|
||||
protected Boolean isFolder;
|
||||
protected Boolean isContent;
|
||||
protected Boolean isLink;
|
||||
|
||||
protected String parentId;
|
||||
@@ -121,9 +122,19 @@ public class Node
|
||||
return isFolder;
|
||||
}
|
||||
|
||||
public void setIsFolder(Boolean folder)
|
||||
public void setIsFolder(Boolean isFolder)
|
||||
{
|
||||
isFolder = folder;
|
||||
this.isFolder = isFolder;
|
||||
}
|
||||
|
||||
public Boolean getIsContent()
|
||||
{
|
||||
return isContent;
|
||||
}
|
||||
|
||||
public void setIsContent(Boolean isContent)
|
||||
{
|
||||
this.isContent = isContent;
|
||||
}
|
||||
|
||||
public Boolean getIsLink()
|
||||
@@ -269,6 +280,7 @@ public class Node
|
||||
}
|
||||
|
||||
AssertUtil.assertEquals("isFolder", isFolder, other.getIsFolder());
|
||||
AssertUtil.assertEquals("isContent", isContent, other.getIsContent());
|
||||
AssertUtil.assertEquals("isLink", isLink, other.getIsLink());
|
||||
|
||||
if (path != null) {
|
||||
|
Reference in New Issue
Block a user