Network AMF RemoteObject and Events

Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/106f50f9
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/106f50f9
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/106f50f9

Branch: refs/heads/feature/amf
Commit: 106f50f90222c3dd5501bef9a75252c24cb035a6
Parents: f92aba3
Author: Carlos Rovira <[email protected]>
Authored: Sat Feb 18 17:27:07 2017 +0100
Committer: Carlos Rovira <[email protected]>
Committed: Thu Sep 7 00:24:02 2017 +0200

----------------------------------------------------------------------
 frameworks/projects/Network/.vscode/tasks.json  |   9 ++
 frameworks/projects/Network/pom.xml             |  14 +++
 .../src/main/config/compile-swf-config.xml      |   1 +
 .../Network/src/main/flex/NetworkClasses.as     |  29 +++--
 .../flex/org/apache/flex/net/RemoteObject.as    | 123 +++++++++++++++++++
 .../org/apache/flex/net/events/FaultEvent.as    |  35 ++++++
 .../org/apache/flex/net/events/ResultEvent.as   |  34 +++++
 .../src/main/resources/basic-manifest.xml       |   2 +
 8 files changed, 232 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/.vscode/tasks.json
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/.vscode/tasks.json 
b/frameworks/projects/Network/.vscode/tasks.json
new file mode 100644
index 0000000..e562c32
--- /dev/null
+++ b/frameworks/projects/Network/.vscode/tasks.json
@@ -0,0 +1,9 @@
+{
+       // See https://go.microsoft.com/fwlink/?LinkId=733558
+       // for the documentation about the tasks.json format
+       "version": "0.1.0",
+       "command": "mvn",
+       "args": ["clean", "install", "-DskipTests"],
+       "isShellCommand": true,
+       "showOutput": "always"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/pom.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/pom.xml 
b/frameworks/projects/Network/pom.xml
index a492694..ca12bd1 100644
--- a/frameworks/projects/Network/pom.xml
+++ b/frameworks/projects/Network/pom.xml
@@ -71,6 +71,20 @@
       <type>swc</type>
       <classifier>js</classifier>
     </dependency>
+    <dependency>
+      <groupId>org.apache.flex.flexjs.framework</groupId>
+      <artifactId>Reflection</artifactId>
+      <version>0.8.0-SNAPSHOT</version>
+      <type>swc</type>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flex.flexjs.framework</groupId>
+      <artifactId>Reflection</artifactId>
+      <version>0.8.0-SNAPSHOT</version>
+      <type>swc</type>
+      <classifier>typedefs</classifier>
+    </dependency>
+    
   </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/src/main/config/compile-swf-config.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/src/main/config/compile-swf-config.xml 
b/frameworks/projects/Network/src/main/config/compile-swf-config.xml
index da0a2e4..62f5b17 100644
--- a/frameworks/projects/Network/src/main/config/compile-swf-config.xml
+++ b/frameworks/projects/Network/src/main/config/compile-swf-config.xml
@@ -31,6 +31,7 @@
         <external-library-path>
             
<path-element>${env.AIR_HOME}/frameworks/libs/air/airglobal.swc</path-element>
             <path-element>../../../../../libs/Core.swc</path-element>
+            <path-element>../../../../../libs/Reflection.swc</path-element>
         </external-library-path>
         
                <mxml>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/src/main/flex/NetworkClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/src/main/flex/NetworkClasses.as 
b/frameworks/projects/Network/src/main/flex/NetworkClasses.as
index c4b5177..a5ec2c5 100644
--- a/frameworks/projects/Network/src/main/flex/NetworkClasses.as
+++ b/frameworks/projects/Network/src/main/flex/NetworkClasses.as
@@ -18,20 +18,19 @@
 
////////////////////////////////////////////////////////////////////////////////
 package
 {   
-       
-
-/**
- *  @private
- *  This class is used to link additional classes into rpc.swc
- *  beyond those that are found by dependency analysis starting
- *  from the classes specified in manifest.xml.
- */
-internal class NetworkClasses
-{      
-       import org.apache.flex.net.URLBinaryLoader; URLBinaryLoader;
-    import org.apache.flex.net.HTTPConstants; HTTPConstants;
-    import org.apache.flex.net.URLBinaryUploader; URLBinaryUploader;
-}
-
+    /**
+    *  @private
+    *  This class is used to link additional classes into Network.swc
+    *  beyond those that are found by dependency analysis starting
+    *  from the classes specified in manifest.xml.
+    */
+    internal class NetworkClasses
+    {  
+        import org.apache.flex.net.URLBinaryLoader; URLBinaryLoader;
+        import org.apache.flex.net.HTTPConstants; HTTPConstants;
+        import org.apache.flex.net.URLBinaryUploader; URLBinaryUploader;
+        import org.apache.flex.net.events.ResultEvent; ResultEvent;
+        import org.apache.flex.net.events.FaultEvent; FaultEvent;
+    }
 }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/src/main/flex/org/apache/flex/net/RemoteObject.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/RemoteObject.as 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/RemoteObject.as
new file mode 100755
index 0000000..b57be6f
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/RemoteObject.as
@@ -0,0 +1,123 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.net
+{
+       import org.apache.flex.net.events.FaultEvent;
+       import org.apache.flex.net.events.ResultEvent;
+       
+       import org.apache.flex.events.EventDispatcher;
+       import org.apache.flex.reflection.getClassByAlias;
+       import org.apache.flex.reflection.registerClassAlias;
+
+       [Event(name="result", type="org.apache.flex.net.events.ResultEvent")]
+       [Event(name="fault", type="org.apache.flex.net.events.FaultEvent")]
+       public class RemoteObject extends EventDispatcher
+       {
+               private var _endPoint:String;
+               private var _destination:String;
+               private var _source:String;
+               
+               /** 
+                * 
+                * <inject_html>
+                * <script 
src="https://rawgit.com/emilkm/amfjs/master/amf.js";></script>
+                * </inject_html>
+                */ 
+               public function RemoteObject()
+               {
+               }
+               
+               public function set endPoint(value:String):void
+               {
+                       _endPoint = value;      
+               }
+               public function get endPoint():String
+               {
+                       return _endPoint;       
+               }
+               
+               public function set destination(value:String):void
+               {
+                       _destination = value;   
+               }
+               public function get destination():String
+               {
+                       return _destination;    
+               }
+               
+               public function set source(value:String):void
+               {
+                       _source = value;        
+               }
+               public function get source():String
+               {
+                       return _source; 
+               }
+               
+               public function send(operation:String , params:Array):void
+               {
+                       COMPILE::JS
+                       {                               
+                               var amfClient:Object = new ((window as 
Object).amf).Client(_destination, _endPoint);
+                               var amfReq:Object = amfClient.invoke(_source, 
operation, params[0]);
+                               amfReq.then(resultHandler , faultHandler);
+                       }
+               }
+               
+               private function resultHandler(param:Object):void
+               {
+                       if(param is Object && 
param.hasOwnProperty("_explicitType"))
+                       {
+                               param = typeUntypedObject(param);
+                       }
+                       else if (param is Array && param.length > 0)
+                       {
+                               for(var i:uint ; i < param.length ; i++)
+                               {
+                                       var typedObj:Object = 
typeUntypedObject(param[i]);
+                                       param[i] = typedObj;
+                               }
+                       }                       
+                       dispatchEvent(new 
ResultEvent(ResultEvent.RESULT,param));
+               }
+               
+               private function faultHandler(param:Object):void
+               {
+                       dispatchEvent(new FaultEvent(FaultEvent.FAULT,param));
+               }
+               
+               private function typeUntypedObject(unTypeObject:Object):Object
+               {
+                       
registerClassAlias(unTypeObject['_explicitType'],getClassByAlias(unTypeObject['_explicitType']));
+                       
+                       var classToInstantiate:Class = 
getClassByAlias(unTypeObject['_explicitType']); 
+                       
+                       var typedInstance:Object = new classToInstantiate(); 
+                       
+                       for (var field:String in unTypeObject) 
+                       { 
+                               if (field == "_explicitType") continue; //Do 
nothing incase of "_explicitType"
+                               
+                               typedInstance[field] = unTypeObject[field]; 
+                       }
+
+                       return  typedInstance;
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/FaultEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/FaultEvent.as
 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/FaultEvent.as
new file mode 100755
index 0000000..a9bfb40
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/FaultEvent.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.net.events
+{
+       import org.apache.flex.events.Event;
+       
+       public class FaultEvent extends Event
+       {
+           public static const FAULT:String = "fault"; 
+               public var message:Object;
+       
+           public function FaultEvent(type:String, message:Object = null, 
bubbles:Boolean = false, cancelable:Boolean = true)
+           {
+               super(type, bubbles, cancelable);
+                       this.message = message;
+           }
+       }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/ResultEvent.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/ResultEvent.as
 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/ResultEvent.as
new file mode 100755
index 0000000..69c767b
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/events/ResultEvent.as
@@ -0,0 +1,34 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.net.events
+{
+       import org.apache.flex.events.Event;
+       
+       public class ResultEvent extends Event
+       {
+               public static const RESULT:String = "result";
+               public var data:Object;
+               public function ResultEvent(type:String, 
resultData:Object=null, bubbles:Boolean = false, cancelable:Boolean = true)
+               {
+                       super(type, bubbles, cancelable);
+                       this.data = resultData;
+               }
+       }
+}
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/106f50f9/frameworks/projects/Network/src/main/resources/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Network/src/main/resources/basic-manifest.xml
index 59fcbd1..921f155 100644
--- a/frameworks/projects/Network/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Network/src/main/resources/basic-manifest.xml
@@ -20,6 +20,8 @@
 
 
 <componentPackage>
+
+    <component id="RemoteObject" class="org.apache.flex.net.RemoteObject"/>
     <component id="HTTPService" class="org.apache.flex.net.HTTPService"/>
     <component id="BinaryUploader" class="org.apache.flex.net.BinaryUploader"/>
     <component id="CORSCredentialsBead" 
class="org.apache.flex.net.beads.CORSCredentialsBead"/>

Reply via email to