Re: Mapping objects
Todd Hivnor <[email protected]> Wed, 05 Jul 2006 12:19:22 -0700
| Newsgroups | gmane.comp.java.openamf.user |
|---|---|
| Message-ID | <[email protected]> |
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