[flexcoders] Re: cairngorm Events and data payloads
Hi, The delegate function thinks you just have a CairngormEvent. I think you just need to check to make sure the event you received is your custom event type and then cast it. so: if (eventHere is LoadScorecardEvent) { del.getScorecard( LoadScorecardEvent(eventHere).scorecardId ); } else { // do nothing, or raise error, or log warning, or whatever. } best of luck, Thunder --- In flexcoders@yahoogroups.com, Douglas Knudsen [EMAIL PROTECTED] wrote: can someone point me to a example of how to pass data in a cairngorm type event? I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent'; public var scorecardId:Number; /** * The constructor, */ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent( ); devent.scorecardId = 5; CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId ); } But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it? -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links * To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED] * Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
Re: [flexcoders] Re: cairngorm Events and data payloads
ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread.DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi,The delegate function thinks you just have a CairngormEvent. I thinkyou just need to check to make sure the event you received is yourcustom event type and then cast it.so:if (eventHere is LoadScorecardEvent) {del.getScorecard( LoadScorecardEvent(eventHere).scorecardId );}else{// do nothing, or raise error, or log warning, or whatever.}best of luck,Thunder--- In flexcoders@yahoogroups.com, Douglas Knudsen[EMAIL PROTECTED] wrote: can someone point me to a example of how to pass data in a cairngormtype event?I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent';public var scorecardId:Number; /*** The constructor,*/ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent(); devent.scorecardId = 5;CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId );} But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it? --Flexcoders Mailing ListFAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txtSearch Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links* To visit your group on the web, go to:http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to:[EMAIL PROTECTED]* Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/-- Douglas Knudsenhttp://www.cubicleman.com this is my signature, like it? __._,_.___ -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com SPONSORED LINKS Web site design development Computer software development Software design and development Macromedia flex Software development best practice YAHOO! GROUPS LINKS Visit your group "flexcoders" on the web. To unsubscribe from this group, send an email to:[EMAIL PROTECTED] Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. __,_._,___
Re: [flexcoders] Re: cairngorm Events and data payloads
Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers, Ralf. On 7/27/06, Douglas Knudsen [EMAIL PROTECTED] wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread.DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi,The delegate function thinks you just have a CairngormEvent. I thinkyou just need to check to make sure the event you received is yourcustom event type and then cast it.so:if (eventHere is LoadScorecardEvent) {del.getScorecard( LoadScorecardEvent(eventHere).scorecardId );}else{// do nothing, or raise error, or log warning, or whatever.}best of luck,Thunder--- In flexcoders@yahoogroups.com, Douglas Knudsen[EMAIL PROTECTED] wrote: can someone point me to a example of how to pass data in a cairngormtype event?I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent';public var scorecardId:Number; /*** The constructor,*/ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent(); devent.scorecardId = 5;CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId );} But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it? --Flexcoders Mailing ListFAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txtSearch Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links* To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED]* Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/ -- Douglas Knudsenhttp://www.cubicleman.com this is my signature, like it? -- Ralf Bokelberg [EMAIL PROTECTED]Flex Flash Consultant based in Cologne/Germany __._,_.___ -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com SPONSORED LINKS Web site design development Computer software development Software design and development Macromedia flex Software development best practice YAHOO! GROUPS LINKS Visit your group "flexcoders" on the web. To unsubscribe from this group, send an email to:[EMAIL PROTECTED] Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. __,_._,___
Re: [flexcoders] Re: cairngorm Events and data payloads
I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 12:58 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers,Ralf. On 7/27/06, Douglas Knudsen [EMAIL PROTECTED] wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread. DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi,The delegate function thinks you just have a CairngormEvent. I thinkyou just need to check to make sure the event you received is yourcustom event type and then cast it.so:if (eventHere is LoadScorecardEvent) {del.getScorecard( LoadScorecardEvent(eventHere).scorecardId );}else{// do nothing, or raise error, or log warning, or whatever.}best of luck,Thunder--- In flexcoders@yahoogroups.com, "Douglas Knudsen"[EMAIL PROTECTED] wrote: can someone point me to a example of how to pass data in a cairngormtype event?I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent';public var scorecardId:Number; /*** The constructor,*/ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent(); devent.scorecardId = 5;CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId );} But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it?--Flexcoders Mailing ListFAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txtSearch Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links* To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED]* Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/-- Douglas Knudsenhttp://www.cubicleman.com this is my signature, like it? -- Ralf Bokelberg [EMAIL PROTECTED]Flex Flash Consultant based in Cologne/Germany __._,_.___ -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com SPONSORED LINKS Web site design development Computer software development Software design and development Macromedia flex Software development best practice YAHOO! GROUPS LINKS Visit your group "flexcoders" on the web. To unsubscribe from this group, send an email to:[EMAIL PROTECTED] Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. __,_._,___
Re: [flexcoders] Re: cairngorm Events and data payloads
The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't make use of the runtime changeability anyways. What do we loose if we do it like that? Cheers,Ralf. On 7/27/06, JesterXL [EMAIL PROTECTED] wrote: I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 12:58 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers,Ralf. On 7/27/06, Douglas Knudsen [EMAIL PROTECTED] wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread. DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi,The delegate function thinks you just have a CairngormEvent. I thinkyou just need to check to make sure the event you received is yourcustom event type and then cast it.so:if (eventHere is LoadScorecardEvent) {del.getScorecard( LoadScorecardEvent(eventHere).scorecardId );}else{// do nothing, or raise error, or log warning, or whatever.}best of luck,Thunder--- In flexcoders@yahoogroups.com, Douglas Knudsen[EMAIL PROTECTED] wrote: can someone point me to a example of how to pass data in a cairngormtype event?I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent';public var scorecardId:Number; /*** The constructor,*/ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent(); devent.scorecardId = 5;CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId );} But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it?--Flexcoders Mailing ListFAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txtSearch Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links* To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED]* Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/-- Douglas Knudsen http://www.cubicleman.com this is my signature, like it? -- Ralf Bokelberg [EMAIL PROTECTED] Flex Flash Consultant based in Cologne/Germany -- Ralf Bokelberg [EMAIL PROTECTED]Flex Flash Consultant based in Cologne/Germany __._,_.___ -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com SPONSORED LINKS Web site design development Computer software development Software design and development Macromedia flex Software development best practice YAHOO! GROUPS LINKS Visit your group "flexcoders" on the web. To unsubscribe from this group, send an email to:[EMAIL PROTECTED] Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. __,_._,___
Re: [flexcoders] Re: cairngorm Events and data payloads
Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: public static const EVENT_DOSOMETHING:String = "doSomething"; function execute(event:CairngormEvent) { switch(event.type) { case MyEvent.EVENT_DOSOMETHING: someMethod ( MyEvent(event).someTypeSafeProp); break; } } - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 4:20 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't make use of the runtime changeability anyways. What do we loose if we do it like that? Cheers,Ralf. On 7/27/06, JesterXL [EMAIL PROTECTED] wrote: I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 12:58 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers,Ralf. On 7/27/06, Douglas Knudsen [EMAIL PROTECTED] wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread. DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi,The delegate function thinks you just have a CairngormEvent. I thinkyou just need to check to make sure the event you received is yourcustom event type and then cast it.so:if (eventHere is LoadScorecardEvent) {del.getScorecard( LoadScorecardEvent(eventHere).scorecardId );}else{// do nothing, or raise error, or log warning, or whatever.}best of luck,Thunder--- In flexcoders@yahoogroups.com, "Douglas Knudsen"[EMAIL PROTECTED] wrote: can someone point me to a example of how to pass data in a cairngormtype event?I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent';public var scorecardId:Number; /*** The constructor,*/ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent(); devent.scorecardId = 5;CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId );} But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it?--Flexcoders Mailing ListFAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txtSearch Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links* To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED]* Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/-- Douglas Knudsenhttp://www.cubicleman.com this is my signature, like it? -- Ralf Bokelberg [EMAIL PROTECTED] Flex Flash Consultant based in Cologne/Germany -- Ralf Bokelberg [EMAIL PROTECTED]Flex Flash Consultant based in Cologne/Germany __._,_.___ -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com SPONSORED LINKS Web site design development Computer software development Software design and development Macromedia flex Software development best practice YAHOO! GROUPS LINKS Visit yo
[flexcoders] Re: cairngorm Events and data payloads
Forgive the dense noob here, but how is the type info lost? I thought that by subclassing CairngormEvent you get basic checking and then you can just do a cast or 'event as MyCutomEvent' inside the execute method. I guess I am just not clear on what the issue is and where the problem lies. Can someone edumacate me? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL [EMAIL PROTECTED] wrote: Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: public static const EVENT_DOSOMETHING:String = doSomething; function execute(event:CairngormEvent) { switch(event.type) { case MyEvent.EVENT_DOSOMETHING: someMethod ( MyEvent(event).someTypeSafeProp); break; } } - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 4:20 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't make use of the runtime changeability anyways. What do we loose if we do it like that? Cheers, Ralf. On 7/27/06, JesterXL [EMAIL PROTECTED] wrote: I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 12:58 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers, Ralf. On 7/27/06, Douglas Knudsen [EMAIL PROTECTED] wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread. DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi, The delegate function thinks you just have a CairngormEvent. I think you just need to check to make sure the event you received is your custom event type and then cast it. so: if (eventHere is LoadScorecardEvent) { del.getScorecard( LoadScorecardEvent(eventHere).scorecardId ); } else { // do nothing, or raise error, or log warning, or whatever. } best of luck, Thunder --- In flexcoders@yahoogroups.com, Douglas Knudsen douglasknudsen@ wrote: can someone point me to a example of how to pass data in a cairngorm type event? I'm trying the below with package com.mycompany.events { import com.adobe.cairngorm.control.CairngormEvent; public class LoadScorecardEvent extends CairngormEvent { public static var EVENT_LOAD_SCORECARD: String = 'LoadScorecardEvent'; public var scorecardId:Number; /** * The constructor, */ public function LoadScorecardEvent( ) { super( EVENT_LOAD_SCORECARD ); } } } then in a view dispatching like so var devent : LoadScorecardEvent = new LoadScorecardEvent( ); devent.scorecardId = 5; CairngormEventDispatcher.getInstance().dispatchEvent( devent ); and in the command I have public function execute( eventHere : CairngormEvent ) : void { var del : MainDelegate = new MainDelegate( this ); del.getScorecard( eventHere.scorecardId ); } But this bombs out with a error about scorecardId not in eventHere. DK -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it? -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links -- Douglas Knudsen http://www.cubicleman.com this is my signature, like it? -- Ralf Bokelberg [EMAIL PROTECTED] Flex Flash Consultant based in Cologne/Germany -- Ralf Bokelberg [EMAIL PROTECTED] Flex Flash Consultant based in Cologne/Germany -- Flexcoders Mailing List FAQ
Re: [flexcoders] Re: cairngorm Events and data payloads
My initial frustration was I'd create this event class, which allowed strong-typing, like so: package { import com.adobe.control.CairngormEvent; public class MyEvent extends CairngormEvent { public static const ACTION:String = action; public var someID:int; public function MyEvent(p_type:String, p_someID:int) { super(p_type); someID = p_someID; } } } So, my event now has context. If I need to have my Command get a person record from the DB for example, this event will contain the payload it needs; the person ID I'm looking for. However, by the time it gets to the Command, it's a base class, the CairngormEvent. package { public class MyCommand implements AllTheInterfacesEct { public function execute ( event:CairngormEvent ) { trace(event.someID); // faith based programming } } } Now, for some, their Events are directly linked to Commands, like so: LoginEvent will fire LoginCommand which calls LoginDelegate GetPersonEvent will fire GetPersonCommand which calls GetPersonDelegate At a simple level, yes, this'll do. So, you can acutally make some assumptions in the above; if you play by the default Cairngorm rules, you KNOW by convention that your MyCommand class will get a MyEvent, so you could risk up-casting, like so: someDelegateMethod ( MyEvent ( event ) . someID ); ...that's faith, though. You'll get an exception if for some reason that's not the real event. It'd be better if the compiler caught that vs. the runtime, before it's a problem. For me, I use multiple events inside Commands, so it's exacerbated. The Controller keeps all of this under tabs, but again, it'd be nice if MyCommand for example GOT MyEvent in the execute. I supposed you could make that assumption; not sure if it'd compile. Anyway, convention over strict-typing is ok since a lot of conventions teams follow can do the above, for example, and assume you'll get what you need. - Original Message - From: ben.clinkinbeard [EMAIL PROTECTED] To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 10:22 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Forgive the dense noob here, but how is the type info lost? I thought that by subclassing CairngormEvent you get basic checking and then you can just do a cast or 'event as MyCutomEvent' inside the execute method. I guess I am just not clear on what the issue is and where the problem lies. Can someone edumacate me? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL [EMAIL PROTECTED] wrote: Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: public static const EVENT_DOSOMETHING:String = doSomething; function execute(event:CairngormEvent) { switch(event.type) { case MyEvent.EVENT_DOSOMETHING: someMethod ( MyEvent(event).someTypeSafeProp); break; } } - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 4:20 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't make use of the runtime changeability anyways. What do we loose if we do it like that? Cheers, Ralf. On 7/27/06, JesterXL [EMAIL PROTECTED] wrote: I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 12:58 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers, Ralf. On 7/27/06, Douglas Knudsen [EMAIL PROTECTED] wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread. DK On 7/27/06, thunderstumpgesatwork [EMAIL PROTECTED] wrote: Hi, The delegate function thinks you just have a CairngormEvent. I think you just need to check to make sure the event you received is your custom event type and then cast it. so: if (eventHere is LoadScorecardEvent) { del.getScorecard( LoadScorecardEvent(eventHere).scorecardId ); } else { // do nothing, or raise error, or log warning, or whatever. } best of luck, Thunder --- In flexcoders
[flexcoders] Re: cairngorm Events and data payloads
Doesn't execute() accept a CairngromEvent for the sake of polymorphism though? How could you do things any differently and still preserve that aspect? Additionally, if you want your Commands to support multiple types of events isn't it essential that execute() accept a superclass or common interface? Are you just wishing AS supported method overloading or is there something I am still not getting? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL [EMAIL PROTECTED] wrote: My initial frustration was I'd create this event class, which allowed strong-typing, like so: package { import com.adobe.control.CairngormEvent; public class MyEvent extends CairngormEvent { public static const ACTION:String = action; public var someID:int; public function MyEvent(p_type:String, p_someID:int) { super(p_type); someID = p_someID; } } } So, my event now has context. If I need to have my Command get a person record from the DB for example, this event will contain the payload it needs; the person ID I'm looking for. However, by the time it gets to the Command, it's a base class, the CairngormEvent. package { public class MyCommand implements AllTheInterfacesEct { public function execute ( event:CairngormEvent ) { trace(event.someID); // faith based programming } } } Now, for some, their Events are directly linked to Commands, like so: LoginEvent will fire LoginCommand which calls LoginDelegate GetPersonEvent will fire GetPersonCommand which calls GetPersonDelegate At a simple level, yes, this'll do. So, you can acutally make some assumptions in the above; if you play by the default Cairngorm rules, you KNOW by convention that your MyCommand class will get a MyEvent, so you could risk up-casting, like so: someDelegateMethod ( MyEvent ( event ) . someID ); ...that's faith, though. You'll get an exception if for some reason that's not the real event. It'd be better if the compiler caught that vs. the runtime, before it's a problem. For me, I use multiple events inside Commands, so it's exacerbated. The Controller keeps all of this under tabs, but again, it'd be nice if MyCommand for example GOT MyEvent in the execute. I supposed you could make that assumption; not sure if it'd compile. Anyway, convention over strict-typing is ok since a lot of conventions teams follow can do the above, for example, and assume you'll get what you need. - Original Message - From: ben.clinkinbeard [EMAIL PROTECTED] To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 10:22 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Forgive the dense noob here, but how is the type info lost? I thought that by subclassing CairngormEvent you get basic checking and then you can just do a cast or 'event as MyCutomEvent' inside the execute method. I guess I am just not clear on what the issue is and where the problem lies. Can someone edumacate me? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL jesterxl@ wrote: Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: public static const EVENT_DOSOMETHING:String = doSomething; function execute(event:CairngormEvent) { switch(event.type) { case MyEvent.EVENT_DOSOMETHING: someMethod ( MyEvent(event).someTypeSafeProp); break; } } - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 4:20 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't make use of the runtime changeability anyways. What do we loose if we do it like that? Cheers, Ralf. On 7/27/06, JesterXL jesterxl@ wrote: I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 12:58 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. Cheers, Ralf. On 7/27/06, Douglas Knudsen douglasknudsen@ wrote: ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what
Re: [flexcoders] Re: cairngorm Events and data payloads
5 coffee's and 3 RedBull's later, I'm running on fumes, so don't really have intelligent answers for you, just guesses. Don't know, I guess you're right. Find some way to either A) follow the convention a Command will get the event class of a similiar name, and thus feel safe in casting it or B ) find some way to strongly type that parameter. You can't up-cast function arguments, though, so it's kind of stuck as CairngormEvent... I think. For the multiple events, yes, you are correct. I've definately taken for granted all my other stuff has worked for that very fact. Oops. Actually, at this point, no clue... wtf were you talking about anyway, Bokel? - Original Message - From: ben.clinkinbeard [EMAIL PROTECTED] To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 10:50 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Doesn't execute() accept a CairngromEvent for the sake of polymorphism though? How could you do things any differently and still preserve that aspect? Additionally, if you want your Commands to support multiple types of events isn't it essential that execute() accept a superclass or common interface? Are you just wishing AS supported method overloading or is there something I am still not getting? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL [EMAIL PROTECTED] wrote: My initial frustration was I'd create this event class, which allowed strong-typing, like so: package { import com.adobe.control.CairngormEvent; public class MyEvent extends CairngormEvent { public static const ACTION:String = action; public var someID:int; public function MyEvent(p_type:String, p_someID:int) { super(p_type); someID = p_someID; } } } So, my event now has context. If I need to have my Command get a person record from the DB for example, this event will contain the payload it needs; the person ID I'm looking for. However, by the time it gets to the Command, it's a base class, the CairngormEvent. package { public class MyCommand implements AllTheInterfacesEct { public function execute ( event:CairngormEvent ) { trace(event.someID); // faith based programming } } } Now, for some, their Events are directly linked to Commands, like so: LoginEvent will fire LoginCommand which calls LoginDelegate GetPersonEvent will fire GetPersonCommand which calls GetPersonDelegate At a simple level, yes, this'll do. So, you can acutally make some assumptions in the above; if you play by the default Cairngorm rules, you KNOW by convention that your MyCommand class will get a MyEvent, so you could risk up-casting, like so: someDelegateMethod ( MyEvent ( event ) . someID ); ...that's faith, though. You'll get an exception if for some reason that's not the real event. It'd be better if the compiler caught that vs. the runtime, before it's a problem. For me, I use multiple events inside Commands, so it's exacerbated. The Controller keeps all of this under tabs, but again, it'd be nice if MyCommand for example GOT MyEvent in the execute. I supposed you could make that assumption; not sure if it'd compile. Anyway, convention over strict-typing is ok since a lot of conventions teams follow can do the above, for example, and assume you'll get what you need. - Original Message - From: ben.clinkinbeard [EMAIL PROTECTED] To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 10:22 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Forgive the dense noob here, but how is the type info lost? I thought that by subclassing CairngormEvent you get basic checking and then you can just do a cast or 'event as MyCutomEvent' inside the execute method. I guess I am just not clear on what the issue is and where the problem lies. Can someone edumacate me? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL jesterxl@ wrote: Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: public static const EVENT_DOSOMETHING:String = doSomething; function execute(event:CairngormEvent) { switch(event.type) { case MyEvent.EVENT_DOSOMETHING: someMethod ( MyEvent(event).someTypeSafeProp); break; } } - Original Message - From: Ralf Bokelberg To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 4:20 PM Subject: Re: [flexcoders] Re: cairngorm Events and data payloads The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't
[flexcoders] Re: cairngorm Events and data payloads
Heh, sorry dood, didn't mean to challenge you while in an exhaustion-induced haze. I just wanted to make sure there wasn't some basic concept quietly sailing above my head. :) Get some sleep. --- In flexcoders@yahoogroups.com, JesterXL [EMAIL PROTECTED] wrote: 5 coffee's and 3 RedBull's later, I'm running on fumes, so don't really have intelligent answers for you, just guesses. Don't know, I guess you're right. Find some way to either A) follow the convention a Command will get the event class of a similiar name, and thus feel safe in casting it or B ) find some way to strongly type that parameter. You can't up-cast function arguments, though, so it's kind of stuck as CairngormEvent... I think. For the multiple events, yes, you are correct. I've definately taken for granted all my other stuff has worked for that very fact. Oops. Actually, at this point, no clue... wtf were you talking about anyway, Bokel? - Original Message - From: ben.clinkinbeard [EMAIL PROTECTED] To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 10:50 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Doesn't execute() accept a CairngromEvent for the sake of polymorphism though? How could you do things any differently and still preserve that aspect? Additionally, if you want your Commands to support multiple types of events isn't it essential that execute() accept a superclass or common interface? Are you just wishing AS supported method overloading or is there something I am still not getting? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL jesterxl@ wrote: My initial frustration was I'd create this event class, which allowed strong-typing, like so: package { import com.adobe.control.CairngormEvent; public class MyEvent extends CairngormEvent { public static const ACTION:String = action; public var someID:int; public function MyEvent(p_type:String, p_someID:int) { super(p_type); someID = p_someID; } } } So, my event now has context. If I need to have my Command get a person record from the DB for example, this event will contain the payload it needs; the person ID I'm looking for. However, by the time it gets to the Command, it's a base class, the CairngormEvent. package { public class MyCommand implements AllTheInterfacesEct { public function execute ( event:CairngormEvent ) { trace(event.someID); // faith based programming } } } Now, for some, their Events are directly linked to Commands, like so: LoginEvent will fire LoginCommand which calls LoginDelegate GetPersonEvent will fire GetPersonCommand which calls GetPersonDelegate At a simple level, yes, this'll do. So, you can acutally make some assumptions in the above; if you play by the default Cairngorm rules, you KNOW by convention that your MyCommand class will get a MyEvent, so you could risk up-casting, like so: someDelegateMethod ( MyEvent ( event ) . someID ); ...that's faith, though. You'll get an exception if for some reason that's not the real event. It'd be better if the compiler caught that vs. the runtime, before it's a problem. For me, I use multiple events inside Commands, so it's exacerbated. The Controller keeps all of this under tabs, but again, it'd be nice if MyCommand for example GOT MyEvent in the execute. I supposed you could make that assumption; not sure if it'd compile. Anyway, convention over strict-typing is ok since a lot of conventions teams follow can do the above, for example, and assume you'll get what you need. - Original Message - From: ben.clinkinbeard ben.clinkinbeard@ To: flexcoders@yahoogroups.com Sent: Thursday, July 27, 2006 10:22 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Forgive the dense noob here, but how is the type info lost? I thought that by subclassing CairngormEvent you get basic checking and then you can just do a cast or 'event as MyCutomEvent' inside the execute method. I guess I am just not clear on what the issue is and where the problem lies. Can someone edumacate me? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, JesterXL jesterxl@ wrote: Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: public static const EVENT_DOSOMETHING:String = doSomething; function execute(event:CairngormEvent) { switch(event.type) { case MyEvent.EVENT_DOSOMETHING: someMethod ( MyEvent(event).someTypeSafeProp