http://livedocs.macromedia.com/flex/2/docs/00001149.html

Tracy

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of brent_trx
Sent: Wednesday, January 31, 2007 5:51 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: Flex 2 HTTPService best practices

 

Correct ... but that's just because I'm lazy and wanted to play with
objectToInstance for automation purposes, as our model and XML
responses should always be in structural sync. In a previous
iteration, I was just mapping by hand.

I'll have to look more into AsyncToken, Tracy ... Got any recommended
reading? Thanks for the starting point.

--- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
>
> I'd assume your companies objects' members exactly match the nodes
in the xml ?
> 
> so if your xml has a node called "name" you have a property on your
companies object called 'name' ?
> 
> Grant.
> 
> ----- Original Message -----
> From: brent_trx [EMAIL PROTECTED]
> To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> 
> Sent: 1/31/07 4:44 PM
> Subject: [flexcoders] Re: Flex 2 HTTPService best practices
> 
> > Here's a snippet from my XMLUtils class that converts an XML list of
> > "companies" to an ArrayCollection of Company objects (relies on
Darron
> > Schall's ObjectTranslator tools for convenience):
> > 
> > /******************************************************
> > * Convert from XML List to Company ArrayCollection
> > ******************************************************/
> > public static function
> > companiesXMLDecoder(xml:XMLDocument):ArrayCollection {
> > var companyCollection:ArrayCollection = new ArrayCollection();
> > var xmlDecoder:SimpleXMLDecoder = new SimpleXMLDecoder();
> > 
> > if (xml.firstChild.childNodes.length > 0) {
> > var objectTree:Object = xmlDecoder.decodeXML(xml.firstChild);
> > var companies:Array;
> > 
> > if (objectTree.company is Array) companies =
objectTree.company;
> > else companies = new Array(objectTree.company);
> > 
> > for (var i:int=0; i < companies.length; i++) {
> > var company:Company =
> > ObjectTranslator.objectToInstance(companies[i], Company) as Company;
> > companyCollection.addItem(company);
> > }
> > }
> > return companyCollection;
> > }
> > 
> > 
> > ----- and now the HTTPService definition ----
> > 
> > 
> > 
> > 
> > 
> > 
> > ... the event.result received by getCompaniesResultHandler will be
an
> > ArrayCollection of Company objects. =]
> > 
> > 
> > 
> > 
> > --- In flexcoders@yahoogroups.com
<mailto:flexcoders%40yahoogroups.com> , "grant@" wrote:
> > >
> > > I'd love to see an example, we were about to parse the XML and
create
> > our own array objects with the correct types for binding but this
sounds
> > like a much cleaner method.
> > >
> > > Cheers,
> > > Grant
> > >
> > > ----- Original Message -----
> > > From: brent_trx brent.dearth@
> > > To: flexcoders@yahoogroups.com
<mailto:flexcoders%40yahoogroups.com> 
> > > Sent: 1/31/07 4:27 PM
> > > Subject: [flexcoders] Re: Flex 2 HTTPService best practices
> > >
> > > > I was facing a very similar issue just recently. I had all
these AS
> > > > model classes that mapped identical properties in accordance
to the
> > > > backend objects I was dealing with, but no FDS-style convenience
> > > > mechanism to handle typing via HTTPService calls. What I found
out
> > is
> > > > the beauty of the "xmlDecode" and "xmlEncode" methods.
> > > >
> > > > When you use the xmlDecode method, passing it a function
reference,
> > > > that function will expect an XMLDocument object that is
generated
> > > > automatically by the service. You can then take that
XMLDocument,
> > > > iterate through it, building and returning objects of whatever
type
> > > > you desire. When you access "event.result" in your handler
function,
> > > > that property value will be typed based on your decoder return
type.
> > > > So "event.result" is now, say a User object, rather than a
user xml
> > > > node representation.
> > > >
> > > > The beauty of this strategy is, at any point, your transport
> > mechanism
> > > > becomes disposable. If you suddenly decide to switch from XML to
> > JSON
> > > > as your transport mechanism of choice, you only need to code
some
> > > > decoder / encoder functions, and you're done. No need to change
> > what,
> > > > say, a datagrid expects. Very elegant architecture.
> > > >
> > > > I recommend taking a look at AS3's SimpleXMLDecoder class, along
> > with
> > > > Darron Schall's ObjectTranslator class, which makes writing an
XML
> > > > decoder a breeze.
> > > >
> > > > If anyone is interested, I can post a sample.
>

 

Reply via email to