You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by gr...@apache.org on 2022/04/19 01:30:02 UTC

[royale-asjs] branch develop updated (cea765c314 -> 606246b38f)

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

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


    from cea765c314 Make mxtests happy on swf side for MenuBar
     new 783718ab61 In JS (at least) provide a warning in debug builds (only) when cloning an Event subclass that does not override the cloneEvent method.
     new 606246b38f Initial Royale Event missing 'cloneEvent' sweep. Aiming to fix missing cloning support (mostly) in JS.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../projects/Core/src/main/royale/CoreClasses.as   |  1 +
 .../debugging/{notNull.as => alreadyRecorded.as}   | 40 ++++++++++++++--------
 .../org/apache/royale/events/EventDispatcher.as    | 17 +++++++++
 .../src/main/royale/mx/events/FlexMouseEvent.as    |  4 ++-
 .../src/main/royale/mx/events/FlexEvent.as         | 14 ++++++++
 .../src/main/royale/mx/events/TextEvent.as         | 15 +++++++-
 .../src/main/royale/mx/logging/LogEvent.as         |  5 ++-
 .../royale/mx/messaging/events/ChannelEvent.as     |  5 ++-
 .../mx/messaging/events/ChannelFaultEvent.as       |  4 +--
 .../royale/mx/messaging/events/MessageAckEvent.as  |  4 +--
 .../royale/mx/messaging/events/MessageEvent.as     |  5 ++-
 .../mx/messaging/events/MessageFaultEvent.as       |  5 ++-
 .../src/main/royale/mx/rpc/events/FaultEvent.as    |  5 ++-
 .../src/main/royale/mx/rpc/events/InvokeEvent.as   |  4 +--
 .../src/main/royale/mx/rpc/events/ResultEvent.as   |  4 +--
 .../src/main/royale/spark/events/PopUpEvent.as     |  3 +-
 16 files changed, 95 insertions(+), 40 deletions(-)
 copy frameworks/projects/Core/src/main/royale/org/apache/royale/debugging/{notNull.as => alreadyRecorded.as} (62%)


[royale-asjs] 02/02: Initial Royale Event missing 'cloneEvent' sweep. Aiming to fix missing cloning support (mostly) in JS.

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 606246b38f631f7b5f6085edf1d594c7f9900f73
Author: greg-dove <gr...@gmail.com>
AuthorDate: Tue Apr 19 13:28:45 2022 +1200

    Initial Royale Event missing 'cloneEvent' sweep. Aiming to fix missing cloning support (mostly) in JS.
---
 .../MXRoyale/src/main/royale/mx/events/FlexMouseEvent.as  |  4 +++-
 .../MXRoyaleBase/src/main/royale/mx/events/FlexEvent.as   | 14 ++++++++++++++
 .../MXRoyaleBase/src/main/royale/mx/events/TextEvent.as   | 15 ++++++++++++++-
 .../MXRoyaleBase/src/main/royale/mx/logging/LogEvent.as   |  5 ++---
 .../src/main/royale/mx/messaging/events/ChannelEvent.as   |  5 ++---
 .../main/royale/mx/messaging/events/ChannelFaultEvent.as  |  4 ++--
 .../main/royale/mx/messaging/events/MessageAckEvent.as    |  4 ++--
 .../src/main/royale/mx/messaging/events/MessageEvent.as   |  5 ++---
 .../main/royale/mx/messaging/events/MessageFaultEvent.as  |  5 ++---
 .../src/main/royale/mx/rpc/events/FaultEvent.as           |  5 ++---
 .../src/main/royale/mx/rpc/events/InvokeEvent.as          |  4 ++--
 .../src/main/royale/mx/rpc/events/ResultEvent.as          |  4 ++--
 .../src/main/royale/spark/events/PopUpEvent.as            |  3 ++-
 13 files changed, 51 insertions(+), 26 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/events/FlexMouseEvent.as b/frameworks/projects/MXRoyale/src/main/royale/mx/events/FlexMouseEvent.as
index 5b2d6a6dc5..9ff2e52c48 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/events/FlexMouseEvent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/events/FlexMouseEvent.as
@@ -32,6 +32,8 @@ COMPILE::JS{
 }
 import mx.core.UIComponent;
 
+import org.apache.royale.events.IRoyaleEvent;
+
 /**
  *  The FlexMouseEvent class represents the event object passed to
  *  the event listener for Flex-specific mouse activity.
@@ -547,7 +549,7 @@ public class FlexMouseEvent extends org.apache.royale.events.MouseEvent
 	/**
 	 *  @private
 	 */
-	public function clone():Event
+	override public function cloneEvent():IRoyaleEvent
 	{
 		return new FlexMouseEvent(type, bubbles, cancelable, localX, localY,
 								  relatedObject, ctrlKey, altKey, shiftKey,
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/FlexEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/FlexEvent.as
index 940e07481e..362c01fd62 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/FlexEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/FlexEvent.as
@@ -1457,6 +1457,20 @@ public class FlexEvent extends Event
         super(type, bubbles, cancelable);
     }
 
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: Event
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function cloneEvent():IRoyaleEvent
+    {
+        return new FlexEvent(type, bubbles, cancelable);
+    }
+
 }
 
 }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/TextEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/TextEvent.as
index a3bde3b6c1..9dba0b6ca7 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/TextEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/events/TextEvent.as
@@ -108,6 +108,7 @@ public class TextEvent extends org.apache.royale.events.Event
 							  
 	{
 		super(type, bubbles, cancelable);
+		_text = text;
 	}
 	
 	private var _text:String;
@@ -119,8 +120,20 @@ public class TextEvent extends org.apache.royale.events.Event
 	{
 		_text = value;
 	}
-	
 
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: Event
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function cloneEvent():IRoyaleEvent
+	{
+		return new TextEvent(type, bubbles, cancelable, _text);
+	}
 	
 }
 
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/logging/LogEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/logging/LogEvent.as
index 35af1b73f2..3724da0f8a 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/logging/LogEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/logging/LogEvent.as
@@ -21,6 +21,7 @@ package mx.logging
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 
 /**
  *  Represents the log information for a single logging event.
@@ -222,9 +223,7 @@ public class LogEvent extends Event
     /**
 	 *  @private
      */
-    [SWFOverride(returns="flash.events.Event")]
-    COMPILE::SWF { override }
-    public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new LogEvent(message, /*type,*/ level);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelEvent.as
index 8614860c9e..5b43f84a67 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelEvent.as
@@ -21,6 +21,7 @@ package mx.messaging.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 import mx.messaging.Channel;
 
 /**
@@ -290,9 +291,7 @@ public class ChannelEvent extends Event
      *  @productversion BlazeDS 4
      *  @productversion LCDS 3 
      */
-    [SWFOverride(returns="flash.events.Event")]
-    COMPILE::SWF { override }
-    public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new ChannelEvent(type, bubbles, cancelable, channel, reconnecting, rejected, connected);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelFaultEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelFaultEvent.as
index ab553ca8dc..483db4816d 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelFaultEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/ChannelFaultEvent.as
@@ -21,6 +21,7 @@ package mx.messaging.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 import mx.messaging.Channel;
 import mx.messaging.messages.ErrorMessage;
 
@@ -273,8 +274,7 @@ public class ChannelFaultEvent extends ChannelEvent
      *  @productversion BlazeDS 4
      *  @productversion LCDS 3 
      */
-    [SWFOverride(returns="flash.events.Event")]
-    override public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         var faultEvent:ChannelFaultEvent = new ChannelFaultEvent(type, bubbles, cancelable, channel, reconnecting, faultCode, faultString, faultDetail, rejected, connected);
         faultEvent.rootCause = rootCause;
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageAckEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageAckEvent.as
index 28fe1713c6..459286c1b2 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageAckEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageAckEvent.as
@@ -21,6 +21,7 @@ package mx.messaging.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 import mx.messaging.events.MessageEvent;
 import mx.messaging.messages.AcknowledgeMessage;
 import mx.messaging.messages.IMessage;
@@ -215,8 +216,7 @@ public class MessageAckEvent extends MessageEvent
      *  @productversion BlazeDS 4
      *  @productversion LCDS 3 
      */
-    [SWFOverride(returns="flash.events.Event")]
-    override public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new MessageAckEvent(type, bubbles, cancelable, message as AcknowledgeMessage, correlation);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageEvent.as
index b5a03cdded..e74f57e0df 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageEvent.as
@@ -21,6 +21,7 @@ package mx.messaging.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 import mx.messaging.messages.IMessage;
 import mx.core.mx_internal;
 
@@ -221,9 +222,7 @@ public class MessageEvent extends Event
      *  @productversion BlazeDS 4
      *  @productversion LCDS 3 
      */
-    [SWFOverride(returns="flash.events.Event")]
-    COMPILE::SWF { override }
-    public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new MessageEvent(type, bubbles, cancelable, message);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageFaultEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageFaultEvent.as
index 0c2e36008b..dd45ee4793 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageFaultEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/messaging/events/MessageFaultEvent.as
@@ -21,6 +21,7 @@ package mx.messaging.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 import mx.messaging.messages.ErrorMessage;
 
 /**
@@ -274,9 +275,7 @@ public class MessageFaultEvent extends Event
      *  @productversion BlazeDS 4
      *  @productversion LCDS 3 
      */
-    [SWFOverride(returns="flash.events.Event")]
-    COMPILE::SWF { override }
-    public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new MessageFaultEvent(type, bubbles, cancelable, message);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/FaultEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/FaultEvent.as
index 78d8642145..b856456286 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/FaultEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/FaultEvent.as
@@ -21,7 +21,7 @@ package mx.rpc.events
 {
 
 import org.apache.royale.events.Event;
-
+import org.apache.royale.events.IRoyaleEvent;
 
 import mx.core.mx_internal;
 import mx.messaging.events.MessageFaultEvent;
@@ -183,8 +183,7 @@ public class FaultEvent extends AbstractEvent
      * event type.
      * @private
      */
-    [SWFOverride(returns="flash.events.Event")]
-    override public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new FaultEvent(type, bubbles, cancelable, fault, token, message);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/InvokeEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/InvokeEvent.as
index 45faf40fa5..4f5a03b815 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/InvokeEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/InvokeEvent.as
@@ -21,6 +21,7 @@ package mx.rpc.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 import mx.messaging.messages.IMessage;
 import mx.rpc.AsyncToken;
 
@@ -97,8 +98,7 @@ public class InvokeEvent extends AbstractEvent
      * event type.
      * @private
      */
-    [SWFOverride(returns="flash.events.Event")]
-    override public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new InvokeEvent(type, bubbles, cancelable, token, message);
     }
diff --git a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/ResultEvent.as b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/ResultEvent.as
index 7a1f8ae6cb..c8a0fbee9b 100644
--- a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/ResultEvent.as
+++ b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/rpc/events/ResultEvent.as
@@ -21,6 +21,7 @@ package mx.rpc.events
 {
 
 import org.apache.royale.events.Event;
+import org.apache.royale.events.IRoyaleEvent;
 
 import mx.core.mx_internal;
 import mx.messaging.messages.IMessage;
@@ -187,8 +188,7 @@ public class ResultEvent extends AbstractEvent
      * event type.
      * @private
      */
-    [SWFOverride(returns="flash.events.Event")]
-    override public function clone():Event
+    override public function cloneEvent():IRoyaleEvent
     {
         return new ResultEvent(type, bubbles, cancelable, result, token, message);
     }
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/events/PopUpEvent.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/events/PopUpEvent.as
index c149368326..29745bc259 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/events/PopUpEvent.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/events/PopUpEvent.as
@@ -22,6 +22,7 @@ package spark.events
 	
 	// import flash.events.Event;
 	import org.apache.royale.events.Event;
+	import org.apache.royale.events.IRoyaleEvent;
 	
 	/**
 	 *  The PopUpEvent class represents an event dispatched by the SkinnablePopUpContainer.
@@ -188,7 +189,7 @@ package spark.events
 		/**
 		 *  @private
 		 */
-		COMPILE::SWF { override } public function clone():Event
+		override public function cloneEvent():IRoyaleEvent
 		{
 			return new PopUpEvent(type, bubbles, cancelable, commit, data);
 		}


[royale-asjs] 01/02: In JS (at least) provide a warning in debug builds (only) when cloning an Event subclass that does not override the cloneEvent method.

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 783718ab6167569ee8f18415e35e86a811e88071
Author: greg-dove <gr...@gmail.com>
AuthorDate: Tue Apr 19 11:27:51 2022 +1200

    In JS (at least) provide a warning in debug builds (only) when cloning an Event subclass that does not override the cloneEvent method.
---
 .../projects/Core/src/main/royale/CoreClasses.as   |  1 +
 .../org/apache/royale/debugging/alreadyRecorded.as | 58 ++++++++++++++++++++++
 .../org/apache/royale/events/EventDispatcher.as    | 17 +++++++
 3 files changed, 76 insertions(+)

diff --git a/frameworks/projects/Core/src/main/royale/CoreClasses.as b/frameworks/projects/Core/src/main/royale/CoreClasses.as
index 8dc1095798..69847ef491 100644
--- a/frameworks/projects/Core/src/main/royale/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/royale/CoreClasses.as
@@ -327,6 +327,7 @@ internal class CoreClasses
 	// import org.apache.royale.debugging.conditionalBreak; conditionalBreak;
 	import org.apache.royale.debugging.notNull; notNull;
 	import org.apache.royale.debugging.throwError; throwError;
+	import org.apache.royale.debugging.alreadyRecorded; alreadyRecorded;
 
 	import org.apache.royale.utils.measureComponent; measureComponent;
 	import org.apache.royale.utils.loadBeadFromValuesManager; loadBeadFromValuesManager;
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/debugging/alreadyRecorded.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/debugging/alreadyRecorded.as
new file mode 100644
index 0000000000..7362657d2a
--- /dev/null
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/debugging/alreadyRecorded.as
@@ -0,0 +1,58 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.debugging
+{
+
+    /**
+     * If this method has been called with forObject previously, this method returns true, otherwise if this is the first time,
+     * it returns false
+     */
+    public function alreadyRecorded(forObject:Object):Boolean
+    {
+        var recorded:Boolean = true;
+        COMPILE::SWF
+        {
+             if (!map[forObject])  {
+                 map[forObject] = true;
+                 recorded = false;
+             }
+        }
+        COMPILE::JS
+        {
+           if (!map.has(forObject)) {
+               map.set(forObject, true);
+               recorded = false;
+           }
+        }
+
+        return recorded;
+    }
+}
+
+COMPILE::SWF{
+    import flash.utils.Dictionary;
+}
+
+
+COMPILE::JS
+var map:WeakMap = new WeakMap();
+
+
+COMPILE::SWF
+var map:Dictionary = new Dictionary(true)
diff --git a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/EventDispatcher.as b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/EventDispatcher.as
index 3a19f12f78..d77255758e 100644
--- a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/EventDispatcher.as
+++ b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/EventDispatcher.as
@@ -24,6 +24,9 @@ package org.apache.royale.events
 		import goog.events.Listener;
 		import goog.events.EventTarget;
 		import org.apache.royale.events.Event;
+
+		import org.apache.royale.debugging.alreadyRecorded;
+		import goog.DEBUG;
 	}
 
 	COMPILE::SWF
@@ -101,7 +104,21 @@ package org.apache.royale.events
 				else if ("target" in event1) {
 					if (event1.target && event1 is IRoyaleEvent) {
 						//we are re-dispatching, we need to clone the original:
+						if(goog.DEBUG)
+						{
+							var original:Object = event1;
+						}
 						event1 = IRoyaleEvent(event1).cloneEvent();
+						if(goog.DEBUG)
+						{
+							if (event1.constructor != original.constructor) {
+								var notAlreadyRecorded:Boolean = !alreadyRecorded(original.constructor);
+								if (notAlreadyRecorded) {
+									//this should help identify missing cloneEvent requirements:
+									console.warn(original.constructor.prototype.ROYALE_CLASS_INFO.names[0].qName + ' is missing a cloneEvent method override, this should be implemented, otherwise it is being cloned as :' + event1.constructor.prototype.ROYALE_CLASS_INFO.names[0].qName);
+								}
+							}
+						}
 					}
 					event1.target = _dispatcher;
 					//console.log("assigned target to event ",event);