Merging in TAVUTILS-25

git-svn-id: https://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.taverna-commandline/tags/taverna-commandline-1.3@13570 bf327186-88b3-11dd-a302-d386e5130c1c
diff --git a/taverna-commandline-common/src/main/java/net/sf/taverna/t2/commandline/data/SaveResultsHandler.java b/taverna-commandline-common/src/main/java/net/sf/taverna/t2/commandline/data/SaveResultsHandler.java
index 7db6ce5..b2f8ea4 100644
--- a/taverna-commandline-common/src/main/java/net/sf/taverna/t2/commandline/data/SaveResultsHandler.java
+++ b/taverna-commandline-common/src/main/java/net/sf/taverna/t2/commandline/data/SaveResultsHandler.java
@@ -47,6 +47,7 @@
 import net.sf.taverna.t2.reference.T2ReferenceType;
 import net.sf.taverna.t2.workbench.reference.config.DataManagementConfiguration;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 
 /**
@@ -226,33 +227,18 @@
 			// than an instance of the object in memory						
 			Identified identified = context.getReferenceService().resolveIdentifier(reference, null, context);
 			ReferenceSet referenceSet = (ReferenceSet) identified;
-			
-			if (referenceSet.getExternalReferences().isEmpty()) {
-				data = context.getReferenceService().renderIdentifier(reference,
-						Object.class, context);
-			}
-			else {
 				ExternalReferenceSPI externalReference = referenceSet.getExternalReferences().iterator().next();				
 				stream = externalReference.openStream(context);
-				data = stream;
-			}			
+				data = stream;		
 		}
 
 		FileOutputStream fos = null;
 		try {
 			fos = new FileOutputStream(dataFile);
-			if (data instanceof InputStream) {	
-				byte [] bytes = new byte[500000];
-				while ( ((InputStream)data).read(bytes)  != -1  ) {
-					fos.write(bytes);
-				}
-				stream.close();
-				fos.flush();
+			if (data instanceof InputStream) {
+				IOUtils.copyLarge(stream, fos);
 			}
-			else if (data instanceof byte[]) {				
-				fos.write((byte[]) data);
-				fos.flush();
-			} else {				
+			else {				
 				PrintWriter out = new PrintWriter(new OutputStreamWriter(fos));
 				out.print(data.toString());
 				out.flush();