From 174708606124c2fd00d7ba2c596bd12b4dd2e944 Mon Sep 17 00:00:00 2001 From: David Caruana Date: Tue, 18 Sep 2007 15:50:44 +0000 Subject: [PATCH] Fix issue where javascript returns array of nodes, but those nodes are not converted to the appropriate type for jbpm persistence. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6815 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../workflow/jbpm/AlfrescoJavaScript.java | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java index 7f373d12fb..ff52c7e079 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/AlfrescoJavaScript.java @@ -182,12 +182,41 @@ public class AlfrescoJavaScript extends JBPMSpringActionHandler { // recursively convert each value in the collection Collection collection = (Collection)value; - Collection converted = new ArrayList(); + + // Note: this needs to be cleaned up - we need to create appropriate collection type based + // on collection contents + boolean isNodeCollection = false; for (Object obj : collection) { - converted.add(convertForJBPM(obj, services)); + if (obj instanceof NodeRef) + { + isNodeCollection = true; + break; + } + } + + if (isNodeCollection) + { + JBPMNodeList converted = new JBPMNodeList(); + for (Object obj : collection) + { + if (!(obj instanceof NodeRef)) + { + throw new WorkflowException("Unable to convert script collection to JBPM value - mixed node/non-node collection"); + } + converted.add((JBPMNode)convertForJBPM(obj, services)); + } + value = converted; + } + else + { + Collection converted = new ArrayList(); + for (Object obj : collection) + { + converted.add(convertForJBPM(obj, services)); + } + value = converted; } - value = converted; } return value; }