You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2020/05/10 16:38:43 UTC

[royale-asjs] branch develop updated: get MX FileReference.load() to return a ByteArray. Should fix #708

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new 24a4254  get MX FileReference.load() to return a ByteArray.  Should fix #708
24a4254 is described below

commit 24a4254948ade714ebc0b9ba8f4e5a211d4c101e
Author: Alex Harui <ah...@apache.org>
AuthorDate: Sun May 10 09:38:05 2020 -0700

    get MX FileReference.load() to return a ByteArray.  Should fix #708
---
 .../src/main/royale/mx/net/FileReference.as        | 14 +++++-
 .../supportClasses/ByteArrayFileLoader.as}         | 56 +++++++---------------
 .../MXRoyale/src/main/royale/mx/utils/ByteArray.as |  4 +-
 .../org/apache/royale/file/beads/FileLoader.as     |  6 ++-
 4 files changed, 35 insertions(+), 45 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/net/FileReference.as b/frameworks/projects/MXRoyale/src/main/royale/mx/net/FileReference.as
index 080d46d..5e07293 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/net/FileReference.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/net/FileReference.as
@@ -30,6 +30,7 @@ package mx.net
  import org.apache.royale.net.URLRequest;
  import org.apache.royale.file.beads.FileUploader;
  import mx.net.beads.FileUploaderUsingFormData;
+ import mx.net.supportClasses.ByteArrayFileLoader;
 
    public class FileReference extends FileProxy
    {
@@ -76,10 +77,21 @@ package mx.net
 		  if (!_loader)
 		  {
 			  // FileLoaderAndUploader has injected this
-			  _loader = getBeadByType(FileLoader) as FileLoader;
+			  _loader = getBeadByType(ByteArrayFileLoader) as FileLoader;
+			  if (!_loader)
+			  {
+				   _loader = new ByteArrayFileLoader();
+				   addBead(_loader);
+			  }
 		  }
+		  _loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
 		  _loader.load();
 	  }
+	
+	  public function loaderCompleteHandler(event:Event):void
+	  {
+		  dispatchEvent(new Event(Event.COMPLETE));
+	  }
 	  
 	  public function get data():ByteArray
 	  {
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as b/frameworks/projects/MXRoyale/src/main/royale/mx/net/supportClasses/ByteArrayFileLoader.as
similarity index 54%
copy from frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as
copy to frameworks/projects/MXRoyale/src/main/royale/mx/net/supportClasses/ByteArrayFileLoader.as
index 5e7da5f..caf580f 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/net/supportClasses/ByteArrayFileLoader.as
@@ -17,50 +17,26 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 
-package mx.utils
+package mx.net.supportClasses
 {
-COMPILE::SWF{
-	import flash.utils.ByteArray;
-}
-COMPILE::JS{
-import org.apache.royale.utils.BinaryData;
-import org.apache.royale.utils.net.IDataInput;
-import org.apache.royale.utils.net.IDataOutput;
-
-}
 
-COMPILE::SWF{
-	public class ByteArray extends flash.utils.ByteArray
-	{	
-	  public function ByteArray()
-	  {
-	  super();
-	  }
-	}													
-}
+ import mx.utils.ByteArray;
+ import org.apache.royale.file.beads.FileLoader;
+ import org.apache.royale.file.beads.FileModel;
+ import org.apache.royale.events.Event;
 
-COMPILE::JS{
-	public class ByteArray extends org.apache.royale.utils.BinaryData implements IDataInput, IDataOutput
-	{	
-		public function ByteArray()
-		{
-		super();
-		}
-		public function readMultiByte(length:uint, charSet:String):String
+   public class ByteArrayFileLoader extends FileLoader
+   {
+      	COMPILE::JS 
+		override protected function fileLoadHandler(event:Event):void
 		{
-		return "";
+			fileModel.fileContent = new ByteArray(event.target.result);
+			dispatchEvent(new Event(Event.COMPLETE));
 		}
-		public function writeMultiByte(value:String, charSet:String):void
-		{
-		}
-		public function readObject():*
-        {
-           return null;
-        }
-        public function writeObject(object:*):void
-        {
-		}
-	}
-}
+		
+
+   }
+
+            
 
 }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as
index 5e7da5f..76f9389 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/utils/ByteArray.as
@@ -42,9 +42,9 @@ COMPILE::SWF{
 COMPILE::JS{
 	public class ByteArray extends org.apache.royale.utils.BinaryData implements IDataInput, IDataOutput
 	{	
-		public function ByteArray()
+		public function ByteArray(bytes:Object = null)
 		{
-		super();
+			super(bytes);
 		}
 		public function readMultiByte(length:uint, charSet:String):String
 		{
diff --git a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
index bfebafd..3860968 100644
--- a/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
+++ b/frameworks/projects/Network/src/main/royale/org/apache/royale/file/beads/FileLoader.as
@@ -19,6 +19,7 @@ package org.apache.royale.file.beads
 {
 	import org.apache.royale.core.IBead;
 	import org.apache.royale.core.IStrand;
+	import org.apache.royale.events.EventDispatcher;
 	import org.apache.royale.file.FileProxy;
 	import org.apache.royale.file.IFileModel;
 	import org.apache.royale.utils.BinaryData;
@@ -44,7 +45,7 @@ package org.apache.royale.file.beads
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.9
 	 */
-	public class FileLoader implements IBead
+	public class FileLoader extends EventDispatcher implements IBead
 	{
 		private var _strand:IStrand;
 
@@ -83,6 +84,7 @@ package org.apache.royale.file.beads
 		protected function fileLoadHandler(event:Event):void
 		{
 			fileModel.fileContent = new BinaryData(event.target.result);
+			dispatchEvent(new Event(Event.COMPLETE));
 		}
 		
 		/**
@@ -98,7 +100,7 @@ package org.apache.royale.file.beads
 			_strand = value;
 		}
 		
-		private function get fileModel():IFileModel
+		protected function get fileModel():IFileModel
 		{
 			return (_strand as FileProxy).model as IFileModel;
 		}