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 2018/10/10 19:34:20 UTC
[royale-asjs] 08/16: override result handler to tickle binding
subsystem.
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
commit 16635267f9f364dda8f4a86f1fb30261389ded59
Author: Alex Harui <ah...@apache.org>
AuthorDate: Tue Oct 9 11:18:23 2018 -0700
override result handler to tickle binding subsystem.
---
.../src/main/royale/mx/rpc/AbstractInvoker.as | 2 +-
.../src/main/royale/mx/rpc/remoting/Operation.as | 25 ++++++++++++++++----
.../royale/mx/rpc/remoting/mxml/RemoteObject.as | 27 ++++++++++++++++++----
3 files changed, 45 insertions(+), 9 deletions(-)
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/AbstractInvoker.as b/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/AbstractInvoker.as
index 1729580..8499c45 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/AbstractInvoker.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/AbstractInvoker.as
@@ -349,7 +349,7 @@ public class AbstractInvoker extends EventDispatcher
*
* @private
*/
- mx_internal function resultHandler(event:MessageEvent):void
+ protected function resultHandler(event:MessageEvent):void
{
var token:AsyncToken = preHandle(event);
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/Operation.as b/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/Operation.as
index b3449b1..f9d6b5c 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/Operation.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/Operation.as
@@ -19,9 +19,7 @@
package mx.rpc.remoting
{
-
import mx.core.mx_internal;
-//import mx.managers.CursorManager;
import mx.messaging.events.MessageEvent;
import mx.messaging.messages.AsyncMessage;
import mx.messaging.messages.IMessage;
@@ -35,8 +33,12 @@ import mx.rpc.AsyncToken;
import mx.rpc.Fault;
import mx.rpc.events.FaultEvent;
import mx.rpc.mxml.Concurrency;
+import mx.rpc.remoting.mxml.RemoteObject;
import mx.utils.ObjectUtil;
+import org.apache.royale.events.IEventDispatcher;
+import org.apache.royale.events.ValueChangeEvent;
+
use namespace mx_internal;
/**
@@ -131,7 +133,7 @@ public class Operation extends AbstractOperation
return _makeObjectsBindable;
}
- return RemoteObject(service).makeObjectsBindable;
+ return (service as mx.rpc.remoting.RemoteObject).makeObjectsBindable;
}
override public function set makeObjectsBindable(b:Boolean):void
@@ -257,7 +259,7 @@ public class Operation extends AbstractOperation
var message:RemotingMessage = new RemotingMessage();
message.operation = name;
message.body = args;
- message.source = RemoteObject(service).source;
+ message.source = (service as mx.rpc.remoting.RemoteObject).source;
return invoke(message);
}
@@ -327,6 +329,21 @@ public class Operation extends AbstractOperation
return false;
}
+ override protected function resultHandler(event:MessageEvent):void
+ {
+ super.resultHandler(event);
+ // fake an event that the service changed to force bindings to evaluate.
+ // The binding subsystem has trouble tracking the dynamically added
+ // operations.
+ if (remoteObject is mx.rpc.remoting.mxml.RemoteObject)
+ {
+ var document:Object = (remoteObject as mx.rpc.remoting.mxml.RemoteObject).getDocument();
+ (document as IEventDispatcher).dispatchEvent(ValueChangeEvent.createUpdateEvent(document,
+ (remoteObject as mx.rpc.remoting.mxml.RemoteObject).getID(),
+ remoteObject, remoteObject));
+ }
+ }
+
//--------------------------------------------------------------------------
//
// Variables
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/mxml/RemoteObject.as b/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/mxml/RemoteObject.as
index 92833ef..2cd1309 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/mxml/RemoteObject.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/rpc/remoting/mxml/RemoteObject.as
@@ -21,6 +21,8 @@ package mx.rpc.remoting.mxml
{
import org.apache.royale.events.Event;
+import org.apache.royale.core.IDocument;
+
COMPILE::SWF
{
import flash.events.ErrorEvent;
@@ -98,7 +100,7 @@ use namespace mx_internal;
* @productversion Flex 3
*
*/
-public dynamic class RemoteObject extends mx.rpc.remoting.RemoteObject implements IMXMLSupport, IMXMLObject
+public dynamic class RemoteObject extends mx.rpc.remoting.RemoteObject implements IMXMLSupport, IMXMLObject, IDocument
{
//--------------------------------------------------------------------------
//
@@ -240,18 +242,35 @@ public dynamic class RemoteObject extends mx.rpc.remoting.RemoteObject implement
initialize();
}
+
+ public function setDocument(document:Object, id:String = null):void
+ {
+ this.document = document;
+ this.id = id;
+
+ initialize();
+ }
-
+ public function getDocument():Object
+ {
+ return document;
+ }
+
+ public function getID():String
+ {
+ return id;
+ }
+
//--------------------------------------------------------------------------
//
// Variables
//
//--------------------------------------------------------------------------
- mx_internal var document:Object;
+ private var document:Object;
- mx_internal var id:String;
+ private var id:String;
}