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; }