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

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

commit fa5217510ec860f643072f4d2d80f5be9321337b
Author: Josh Tynjala <[email protected]>
AuthorDate: Tue Jul 1 09:01:13 2025 -0700

    Network: add XMLResult and JSONResult beads for HTTPService
    
    When the HTTPService dispatches its complete event, the bead parses the 
text in HTTPService.data as either XML or JSON.
    
    HTTPService already has a json getter that parses the response text as 
JSON. However, it doesn't have one for XML, and we may want to support 
additional text-based formats in the future (such as ini, yaml, toml, or 
jsonc... off the top of my head), so this would be the PAYG way to add new 
formats. JSONResult is redundant with the json getter, but it could potentially 
be used by other new service classes, so it's probably good to have for 
completeness.
---
 .../src/main/config/compile-js-config.xml          |   1 +
 frameworks/projects/Network/pom.xml                |  14 ++
 .../Network/src/main/resources/basic-manifest.xml  |   2 +
 .../Network/src/main/royale/NetworkClasses.as      |   3 +
 .../org/apache/royale/net/beads/JSONResult.as      | 175 +++++++++++++++++++++
 .../org/apache/royale/net/beads/XMLResult.as       | 175 +++++++++++++++++++++
 6 files changed, 370 insertions(+)

diff --git 
a/frameworks/js/projects/NetworkJS/src/main/config/compile-js-config.xml 
b/frameworks/js/projects/NetworkJS/src/main/config/compile-js-config.xml
index e5456a1677..d4064784b0 100644
--- a/frameworks/js/projects/NetworkJS/src/main/config/compile-js-config.xml
+++ b/frameworks/js/projects/NetworkJS/src/main/config/compile-js-config.xml
@@ -58,6 +58,7 @@
             <path-element>../../../../../libs/LanguageJS.swc</path-element>
             <path-element>../../../../../libs/CoreJS.swc</path-element>
             <path-element>../../../../../libs/ReflectionJS.swc</path-element>
+            <path-element>../../../../../libs/XMLJS.swc</path-element>
         </external-library-path>
         
         <namespaces>
diff --git a/frameworks/projects/Network/pom.xml 
b/frameworks/projects/Network/pom.xml
index 838ec8acde..b86d7d1cfe 100644
--- a/frameworks/projects/Network/pom.xml
+++ b/frameworks/projects/Network/pom.xml
@@ -78,6 +78,13 @@
       <type>swc</type>
       <classifier>js</classifier>
     </dependency>
+    <dependency>
+      <groupId>org.apache.royale.framework</groupId>
+      <artifactId>XML</artifactId>
+      <version>0.9.13-SNAPSHOT</version>
+      <type>swc</type>
+      <classifier>js</classifier>
+    </dependency>
   </dependencies>
 
   <profiles>
@@ -98,6 +105,13 @@
           <type>swc</type>
           <classifier>swf</classifier>
         </dependency>
+        <dependency>
+          <groupId>org.apache.royale.framework</groupId>
+          <artifactId>XML</artifactId>
+          <version>0.9.13-SNAPSHOT</version>
+          <type>swc</type>
+          <classifier>swf</classifier>
+        </dependency>
       </dependencies>
     </profile>
   </profiles>
diff --git a/frameworks/projects/Network/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Network/src/main/resources/basic-manifest.xml
index 6cec220b0a..6f3916a192 100644
--- a/frameworks/projects/Network/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Network/src/main/resources/basic-manifest.xml
@@ -41,4 +41,6 @@
     <component id="FileModel" class="org.apache.royale.file.beads.FileModel"/>
     <component id="FileModelWithParams" 
class="org.apache.royale.file.beads.FileModelWithParams"/>
     <component id="FileModelWithParamsAndFileContent" 
class="org.apache.royale.file.beads.FileModelWithParamsAndFileContent"/>
+    <component id="JSONResult" class="org.apache.royale.net.beads.JSONResult"/>
+    <component id="XMLResult" class="org.apache.royale.net.beads.XMLResult"/>
 </componentPackage>
diff --git a/frameworks/projects/Network/src/main/royale/NetworkClasses.as 
b/frameworks/projects/Network/src/main/royale/NetworkClasses.as
index 4423c4b4d7..2b3822ba84 100644
--- a/frameworks/projects/Network/src/main/royale/NetworkClasses.as
+++ b/frameworks/projects/Network/src/main/royale/NetworkClasses.as
@@ -34,6 +34,9 @@ package
         import org.apache.royale.net.URLVariables; URLVariables;
         import org.apache.royale.net.navigateToURL; navigateToURL;
 
+        import org.apache.royale.net.beads.JSONResult; JSONResult;
+        import org.apache.royale.net.beads.XMLResult; XMLResult;
+
         import org.apache.royale.net.events.ResultEvent; ResultEvent;
         import org.apache.royale.net.events.FaultEvent; FaultEvent;
         
diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/beads/JSONResult.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/beads/JSONResult.as
new file mode 100644
index 0000000000..ff83536ba4
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/beads/JSONResult.as
@@ -0,0 +1,175 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.royale.net.beads
+{
+    COMPILE::SWF
+    {
+        import flash.events.Event;            
+    }
+       
+       import org.apache.royale.core.IBead;
+       import org.apache.royale.core.IStrand;
+    import org.apache.royale.events.Event;
+       import org.apache.royale.events.EventDispatcher;
+    import org.apache.royale.events.IEventDispatcher;
+    
+    //--------------------------------------
+    //  Events
+    //--------------------------------------
+    
+    /**
+     *  Dispatched when the collection has processed a complete event.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.0
+     */
+    [Event(name="complete", type="org.apache.royale.events.Event")]
+
+       /**
+     *  Dispatched when the data could not be parsed due to an error.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 0.0
+     *  @playerversion AIR 0.0
+     *  @productversion Royale 0.0
+     */
+    [Event(name="error", type="org.apache.royale.events.Event")]
+    
+    /**
+     *  Add as a bead to HTTPService to parse the service's response text as
+     *  JSON.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.0
+     */
+       public class JSONResult extends EventDispatcher implements IBead
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+               public function JSONResult()
+               {
+                       super();
+               }
+
+        private var _id:String;
+        
+        /**
+         *  @copy org.apache.royale.core.UIBase#id
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+               public function get id():String
+               {
+                       return _id;
+               }
+
+        /**
+         *  @private
+         */
+               public function set id(value:String):void
+               {
+                       if (_id != value)
+                       {
+                               _id = value;
+                               dispatchEvent(new 
org.apache.royale.events.Event("idChanged"));
+                       }
+               }
+               
+        private var _strand:IStrand;
+        
+        /**
+         *  @copy org.apache.royale.core.UIBase#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            COMPILE::SWF
+            {
+                
IEventDispatcher(_strand).addEventListener(flash.events.Event.COMPLETE, 
completeHandler);                    
+            }
+            COMPILE::JS
+            {
+                IEventDispatcher(_strand).addEventListener("complete", 
completeHandler);                    
+            }
+        }
+
+        private var _data:Object;
+
+        [Bindable("complete")]
+        /**
+         *  The parsed JSON object.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+        public function get data():Object
+        {
+            return _data;
+        }
+        
+        COMPILE::SWF
+        private function completeHandler(event:flash.events.Event):void
+        {
+            try
+            {
+                _data = JSON.parse(_strand["data"]);
+                dispatchEvent(event);
+            }
+            catch (error:Error)
+            {
+                dispatchEvent(new org.apache.royale.events.Event("error"));
+            }
+        }
+        COMPILE::JS
+        private function 
completeHandler(event:org.apache.royale.events.Event):void
+        {
+            try
+            {
+                _data = JSON.parse(_strand["data"]);
+                dispatchEvent(event);
+            }
+            catch (error:Error)
+            {
+                dispatchEvent(new org.apache.royale.events.Event("error"));
+            }
+        }
+
+       }
+}
diff --git 
a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/beads/XMLResult.as
 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/beads/XMLResult.as
new file mode 100644
index 0000000000..b30092170a
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/beads/XMLResult.as
@@ -0,0 +1,175 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.royale.net.beads
+{
+    COMPILE::SWF
+    {
+        import flash.events.Event;            
+    }
+       
+       import org.apache.royale.core.IBead;
+       import org.apache.royale.core.IStrand;
+    import org.apache.royale.events.Event;
+       import org.apache.royale.events.EventDispatcher;
+    import org.apache.royale.events.IEventDispatcher;
+    
+    //--------------------------------------
+    //  Events
+    //--------------------------------------
+    
+    /**
+     *  Dispatched when the collection has processed a complete event.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.0
+     */
+    [Event(name="complete", type="org.apache.royale.events.Event")]
+
+       /**
+     *  Dispatched when the data could not be parsed due to an error.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 0.0
+     *  @playerversion AIR 0.0
+     *  @productversion Royale 0.0
+     */
+    [Event(name="error", type="org.apache.royale.events.Event")]
+    
+    /**
+     *  Add as a bead to HTTPService to parse the service's response text as
+     *  XML.
+     * 
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.0
+     */
+       public class XMLResult extends EventDispatcher implements IBead
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+               public function XMLResult()
+               {
+                       super();
+               }
+
+        private var _id:String;
+        
+        /**
+         *  @copy org.apache.royale.core.UIBase#id
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+               public function get id():String
+               {
+                       return _id;
+               }
+
+        /**
+         *  @private
+         */
+               public function set id(value:String):void
+               {
+                       if (_id != value)
+                       {
+                               _id = value;
+                               dispatchEvent(new 
org.apache.royale.events.Event("idChanged"));
+                       }
+               }
+               
+        private var _strand:IStrand;
+        
+        /**
+         *  @copy org.apache.royale.core.UIBase#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         *  @royaleignorecoercion org.apache.royale.events.IEventDispatcher
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            COMPILE::SWF
+            {
+                
IEventDispatcher(_strand).addEventListener(flash.events.Event.COMPLETE, 
completeHandler);                    
+            }
+            COMPILE::JS
+            {
+                IEventDispatcher(_strand).addEventListener("complete", 
completeHandler);                    
+            }
+        }
+
+        private var _data:XML;
+
+        [Bindable("complete")]
+        /**
+         *  The parsed XML object.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+        public function get data():XML
+        {
+            return _data;
+        }
+        
+        COMPILE::SWF
+        private function completeHandler(event:flash.events.Event):void
+        {
+            try
+            {
+                _data = new XML(_strand["data"]);
+                dispatchEvent(event);
+            }
+            catch (error:Error)
+            {
+                dispatchEvent(new org.apache.royale.events.Event("error"));
+            }
+        }
+        COMPILE::JS
+        private function 
completeHandler(event:org.apache.royale.events.Event):void
+        {
+            try
+            {
+                _data = new XML(_strand["data"]);
+                dispatchEvent(event);
+            }
+            catch (error:Error)
+            {
+                dispatchEvent(new org.apache.royale.events.Event("error"));
+            }
+        }
+
+       }
+}

Reply via email to