From d41c31b89547eb29e08f165f770113f3dd4a6532 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Wed, 7 Mar 2007 12:01:58 +0000 Subject: [PATCH] Merged V2.0 to HEAD 5146: AR-1122 5148: AR-1116 5149: RM-5 5152: AR-1167 5153: WCM-324 5154: WCM-325, WCM-301, WCM-258, WCM-25, WCM-320 5156: WCM-338 5158: AR-1164 5169: AR-1216 5177: WCM-328 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5327 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../webservice/content/ContentWebService.java | 6 ++++ .../repository/AbstractQuerySession.java | 32 +++++++++++++++++++ .../repository/AssociatedQuerySession.java | 4 +-- .../repository/ChildrenQuerySession.java | 2 +- .../repository/ParentsQuerySession.java | 2 +- .../repository/ResultSetQuerySession.java | 4 +-- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/source/java/org/alfresco/repo/webservice/content/ContentWebService.java b/source/java/org/alfresco/repo/webservice/content/ContentWebService.java index 9902ea1d82..3a01f7f7f2 100644 --- a/source/java/org/alfresco/repo/webservice/content/ContentWebService.java +++ b/source/java/org/alfresco/repo/webservice/content/ContentWebService.java @@ -144,6 +144,12 @@ public class ContentWebService extends AbstractWebService implements // Get the file name String filename = (String)this.nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); + // Filename may not exist if this node isn't a cm:object + if (filename == null) + { + filename = "file.bin"; + } + // format the URL that can be used to download the content String downloadUrl = MessageFormat.format(BROWSER_URL, new Object[] { req.getScheme(), address, diff --git a/source/java/org/alfresco/repo/webservice/repository/AbstractQuerySession.java b/source/java/org/alfresco/repo/webservice/repository/AbstractQuerySession.java index f25dd9691c..43b14eb379 100644 --- a/source/java/org/alfresco/repo/webservice/repository/AbstractQuerySession.java +++ b/source/java/org/alfresco/repo/webservice/repository/AbstractQuerySession.java @@ -24,6 +24,12 @@ */ package org.alfresco.repo.webservice.repository; +import java.util.Set; + +import org.alfresco.repo.webservice.types.ResultSetRowNode; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; import org.alfresco.util.GUID; /** @@ -97,4 +103,30 @@ public abstract class AbstractQuerySession implements QuerySession queryResult.setQuerySession(null); } } + + /** + * Create a result set row node object for the provided node reference + * + * @param nodeRef the node reference + * @param nodeService the node service + * @return the result set row node + */ + protected ResultSetRowNode createResultSetRowNode(NodeRef nodeRef, NodeService nodeService) + { + // Get the type + String type = nodeService.getType(nodeRef).toString(); + + // Get the aspects applied to the node + Set aspects = nodeService.getAspects(nodeRef); + String[] aspectNames = new String[aspects.size()]; + int index = 0; + for (QName aspect : aspects) + { + aspectNames[index] = aspect.toString(); + index ++; + } + + // Create and return the result set row node + return new ResultSetRowNode(nodeRef.getId(), type, aspectNames); + } } diff --git a/source/java/org/alfresco/repo/webservice/repository/AssociatedQuerySession.java b/source/java/org/alfresco/repo/webservice/repository/AssociatedQuerySession.java index b416172f43..3f6034b9b6 100644 --- a/source/java/org/alfresco/repo/webservice/repository/AssociatedQuerySession.java +++ b/source/java/org/alfresco/repo/webservice/repository/AssociatedQuerySession.java @@ -133,9 +133,7 @@ public class AssociatedQuerySession extends AbstractQuerySession { AssociationRef assoc = assocs.get(x); NodeRef childNodeRef = assoc.getTargetRef(); - ResultSetRowNode rowNode = new ResultSetRowNode(childNodeRef - .getId(), nodeService.getType(childNodeRef).toString(), - null); + ResultSetRowNode rowNode = createResultSetRowNode(childNodeRef, nodeService); // create columns for all the properties of the node // get the data for the row and build up the columns structure diff --git a/source/java/org/alfresco/repo/webservice/repository/ChildrenQuerySession.java b/source/java/org/alfresco/repo/webservice/repository/ChildrenQuerySession.java index 39de0ccbe3..bfbccbc497 100644 --- a/source/java/org/alfresco/repo/webservice/repository/ChildrenQuerySession.java +++ b/source/java/org/alfresco/repo/webservice/repository/ChildrenQuerySession.java @@ -100,7 +100,7 @@ public class ChildrenQuerySession extends AbstractQuerySession { ChildAssociationRef assoc = kids.get(x); NodeRef childNodeRef = assoc.getChildRef(); - ResultSetRowNode rowNode = new ResultSetRowNode(childNodeRef.getId(), nodeService.getType(childNodeRef).toString(), null); + ResultSetRowNode rowNode = createResultSetRowNode(childNodeRef, nodeService); // create columns for all the properties of the node // get the data for the row and build up the columns structure diff --git a/source/java/org/alfresco/repo/webservice/repository/ParentsQuerySession.java b/source/java/org/alfresco/repo/webservice/repository/ParentsQuerySession.java index 88de7b1712..935171519f 100644 --- a/source/java/org/alfresco/repo/webservice/repository/ParentsQuerySession.java +++ b/source/java/org/alfresco/repo/webservice/repository/ParentsQuerySession.java @@ -100,7 +100,7 @@ public class ParentsQuerySession extends AbstractQuerySession { ChildAssociationRef assoc = parents.get(x); NodeRef parentNodeRef = assoc.getParentRef(); - ResultSetRowNode rowNode = new ResultSetRowNode(parentNodeRef.getId(), nodeService.getType(parentNodeRef).toString(), null); + ResultSetRowNode rowNode = createResultSetRowNode(parentNodeRef, nodeService); // create columns for all the properties of the node // get the data for the row and build up the columns structure diff --git a/source/java/org/alfresco/repo/webservice/repository/ResultSetQuerySession.java b/source/java/org/alfresco/repo/webservice/repository/ResultSetQuerySession.java index 00c188a777..1cec67bc87 100644 --- a/source/java/org/alfresco/repo/webservice/repository/ResultSetQuerySession.java +++ b/source/java/org/alfresco/repo/webservice/repository/ResultSetQuerySession.java @@ -116,7 +116,7 @@ public class ResultSetQuerySession extends AbstractQuerySession { ResultSetRow origRow = searchResults.getRow(x); NodeRef nodeRef = origRow.getNodeRef(); - ResultSetRowNode rowNode = new ResultSetRowNode(nodeRef.getId(), nodeService.getType(nodeRef).toString(), null); + ResultSetRowNode rowNode = createResultSetRowNode(nodeRef, nodeService); // get the data for the row and build up the columns structure Map values = origRow.getValues(); @@ -131,7 +131,7 @@ public class ResultSetQuerySession extends AbstractQuerySession attributeName = attributeName.substring(1); } - columns[col] = Utils.createNamedValue(dictionaryService, QName.createQName(attributeName), values.get(path)); //new NamedValue(attributeName, value); + columns[col] = Utils.createNamedValue(dictionaryService, QName.createQName(attributeName), values.get(path)); col++; }