Re: Mapping objects
"Luke DeWitt" <[email protected]> Thu, 6 Jul 2006 08:33:14 -0300
| Newsgroups | gmane.comp.java.openamf.user |
|---|---|
| Organization | PenguinFire Media |
| Message-ID | <000401c6a0ef$f87bab00$7a16a8c0@pflukedev> |
Very interesting and great to know! One final question and then I can leave you guys alone =D If I do that for my constructor in ActionScript, but my constructor for my Java class has no parameters, will I have a problem mapping objects, or would it work just the way it's working now? Again, thanks a ton guys, you guys have helped me so, so much! Thanks, --LD ----- Original Message ----- From: "Todd Hivnor" <[email protected]> To: <[email protected]> Sent: Wednesday, July 05, 2006 4:19 PM Subject: Re: [Openamf-user] Mapping objects >I think the important change here was in your constructor. > The following code will _not_ do what you want, I should have > caught it earlier. > >>> ActionScript Code for SmackletType: >>> >>> class SmackletType { >>> >>> // class properties >>> private var _smackletName:String; >>> private var _smackletTeaseLink:String; >>> private var _smackletLink:String; >>> private var _smackletThumbnail:String; >>> >>> // constructor >>> >>> public function SmackletType(smackletName:String, >>> smackletLink:String, smackletTeaseLink:String, smackletThumb:String) { >>> >>> _smackletThumbnail = smackletThumb; // Bad for remoting. Will null out >>> smackletThumbnail >>> _smackletTeaseLink = smackletTeaseLink; >>> _smackletLink = smackletLink; >>> _smackletName = smackletName; >>> >>> } // SmackletType constructor > > > Remoting will create a SmackletType object, populate the > instance variables, and finally call the constructor. > But it won't pass any _arguments_ to the constructor. > So, the constructor above will actually reset > your instance variables like _smackletThumbnail > back to null, because the smackletThumb argument is null. > > If I am making an ActionScript class which is sometimes > instantiated via Remoting, and sometimes instantiated from > ActionScript code, I do something like this: > > public function SmackletType(smackletName:String, > smackletLink:String, smackletTeaseLink:String, smackletThumb:String) { > > if (arguments.length == 4) { > // Class was instantiated from ActionScript w/ all arguments > _smackletThumbnail = smackletThumb; > _smackletTeaseLink = smackletTeaseLink; > _smackletLink = smackletLink; > _smackletName = smackletName; > } else if (arguments.length == 0) { > // Class was probably instantiated via Remoting. > // You might test to ensure that smackletThumbnail > // or other instance variables are defined as expected. > } else { > // Class was called from ActionScript with wrong number of arguments. > // --> programmer error. > } > } > > > > > Luke DeWitt wrote: >> Hooha! >> >> It works! I am not sure whether it was removing the parameters from the >> constructors, removing the _ before variable names, or the fact that I >> moved >> the AS classes into a package of the same name, but it appears to be >> working! >> >> I couldn't get anything to work when ServiceCapture was running, and >> their >> site was down when I tried to access it, but it is working now!! >> >> Thank you both for your help... though I have a feeling I'll be back for >> more in the not so near future! >> >> Thanks, >> >> --LD >> >> ----- Original Message ----- >> From: "Martin Wood" <[email protected]> >> To: <[email protected]> >> Sent: Wednesday, July 05, 2006 10:27 AM >> Subject: Re: [Openamf-user] Mapping objects >> >> >> >>> hmm, definitely try using service capture and see what that says about >>> the >>> object being sent to flash (i think you get a 30 day trial...i bought it >>> because >>> its an invaluable tool for remoting development) >>> >>> one other thing i noticed which you should be aware of is that the >>> constructor >>> of the actionscript class gets called after de-serialization so you have >>> to be >>> careful what you do in your constructors. >>> >>> read this post for more information : >>> >>> http://www.darronschall.com/weblog/archives/000186.cfm >>> >>> anyway...back to the point..if you are getting a null that means that >>> flash cant >>> do that cast, so i think that the object is being sent as the correct >>> type >>> from >>> java. >>> >>> personally i would try these things (as well as using service capture) >>> >>> 1. Make both constructors parameter less >>> >>> 2. Remove the underscores from the properties >>> >>> 3. triple check the mapping configuration >>> >>> 4. Keep the Object.registerClass call as part of the initialization code >>> in the >>> Smacklet class >>> >>> class com.flashdb.domain.Smacklet >>> { >>> private var reg:Boolean = >>> Object.registerClass("com.flashdb.domain.Smacklet",com.flashdb.domain.Smacklet); >>> >>> // Rest of class code >>> } >>> >>> >>> if it doesnt work after that then i try a liberal dose of swearing. :) >>> >>> good luck. >>> >>> Martin >>> >>> Using Tomcat but need to do more? Need to support web services, >>> security? >>> Get stuff done quickly with pre-integrated technology to make your job >>> easier >>> Download IBM WebSphere Application Server v.1.0.1 based on Apache >>> Geronimo >>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 >>> _______________________________________________ >>> Openamf-user mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/openamf-user >>> >>> >> >> >> Using Tomcat but need to do more? Need to support web services, security? >> Get stuff done quickly with pre-integrated technology to make your job >> easier >> Download IBM WebSphere Application Server v.1.0.1 based on Apache >> Geronimo >> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 >> _______________________________________________ >> Openamf-user mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/openamf-user >> > > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Openamf-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/openamf-user > Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642