<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Notes from the Flex Flash and ColdFusion Trenches - cfadapter</title>
			<link>http://blogs.digitalprimates.net/jefftapper/index.cfm</link>
			<description>Jeff Tapper&apos;s Blog</description>
			<language>en-us</language>
			<pubDate>Thu, 09 Sep 2010 16:43:59 -0400</pubDate>
			<lastBuildDate>Wed, 04 Jan 2006 05:00:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>jtapper@digitalprimates.net (Jeff Tapper)</managingEditor>
			<webMaster>jtapper@digitalprimates.net (Jeff Tapper)</webMaster>
			
			<item>
				<title>Creating a Remote Object DataManager in ActionScript 3.0 for Flex 2.0</title>
				<link>http://blogs.digitalprimates.net/jefftapper/index.cfm?mode=entry&amp;entry=A8113386-EC0D-B1E0-521DB68A04884006</link>
				<description>
				
				&lt;p&gt;Tien Nguyen followed up on my WebService DataManager with one for RemoteObject as well.&lt;br /&gt;I haven&apos;t had a chance to try it myself yet, but this RemoteObject DataManager should work through the CFAdapter for more efficient data transport with ColdFusion Components&lt;/p&gt;
&lt;pre&gt;package managers {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import flash.events.EventDispatcher;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import flash.util.*;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import mx.rpc.events.ResultEvent;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import mx.rpc.events.FaultEvent;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import mx.rpc.AbstractOperation;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import mx.rpc.remoting.mxml.RemoteObject;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import mx.utils.ObjectUtil;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import events.DataManagerResultEvent;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; import mx.controls.Alert;&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160; /**&lt;br /&gt;&amp;#160;&amp;#160; DataManager - singleton class which enforces only &lt;br /&gt;&amp;#160;&amp;#160; a single object is created for each service.&amp;#160; To &lt;br /&gt;&amp;#160;&amp;#160; access DataManager, use getDataManager(cfservice:String)&lt;br /&gt;&amp;#160; */&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public class DataManagerCF extends EventDispatcher {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private var CFsvc:RemoteObject;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private var eventName:String;&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // hashmap of instances for each service&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private static var instanceMap:Object = new Object();&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public function DataManagerCF(pri:PrivateClass,dest:String){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.CFsvc = new RemoteObject();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CFsvc.destination = dest;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static function getDataManager(CFsvc:String):DataManagerCF{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(DataManagerCF.instanceMap[CFsvc] == null){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DataManagerCF.instanceMap[CFsvc] = new DataManagerCF(new PrivateClass(),CFsvc);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var dm:DataManagerCF= DataManagerCF.instanceMap[CFsvc];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return dm;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public function makeRemoteCall(methodName:String,eventName:String,...args:Array):Void{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.eventName = eventName;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var op:mx.rpc.AbstractOperation = CFsvc[methodName];&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CFsvc.addEventListener(&amp;quot;result&amp;quot;, doResults);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CFsvc.addEventListener(&amp;quot;fault&amp;quot;, doFault);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(args.length &amp;gt;0){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; op.send.apply(null,args);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; else {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; op.send();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private function doResults(result:ResultEvent):Void{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var e:DataManagerResultEvent = new DataManagerResultEvent(eventName,result.result);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.dispatchEvent(e);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private function doFault(fault:FaultEvent){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.dispatchEvent(fault); &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public override function toString():String{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return &amp;quot;DataManagerCF&amp;quot;; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160; /**&lt;br /&gt;&amp;#160;&amp;#160; PrivateClass is used to make &lt;br /&gt;&amp;#160;&amp;#160; DataManager constructor private&lt;br /&gt;&amp;#160; */&lt;br /&gt;&amp;#160;&lt;br /&gt;&amp;#160; private class PrivateClass{&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public function PrivateClass() {}&lt;br /&gt;&amp;#160; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;I&apos;ll post more on this in the next few days as I get a chance to work with it.&lt;br /&gt;&lt;/p&gt; 
				</description>
				
				<category>flex2</category>				
				
				<category>cfadapter</category>				
				
				<category>actionscript3</category>				
				
				<category>as3</category>				
				
				<category>coldfusion</category>				
				
				<category>remoteobject</category>				
				
				<pubDate>Wed, 04 Jan 2006 05:00:00 -0400</pubDate>
				<guid>http://blogs.digitalprimates.net/jefftapper/index.cfm?mode=entry&amp;entry=A8113386-EC0D-B1E0-521DB68A04884006</guid>
				
			</item>
			</channel></rss>