Using ColdFusion Builder's debugger for Flex and Ajax

This is probably one more blog entry of mine that falls into the “obvious” category, but until I tried it today I didn’t know it was possible so hopefully I’m not the only one. I don’t normally use the debugger in ColdFusion Builder. There isn’t anything wrong with it - it just doesn’t really mesh with the way I like to write code. On the flip side, I make a heck of a lot of use out of the debugger in Flash Builder. Why do I use it more there and less in ColdFusion? No idea. That being said, a reader this week asked me an interesting question. He is using Flash Builder and wanted to know about debugging on the server side. I knew you could debug the Flex side of course. You can also easily debug the network communications. What I wasn’t sure of was how I’d handle debugging on the ColdFusion Builder side when I’m actually using Flash Builder. The debuggers in both products aren’t related. (Well, I assume they share some code at the Eclipse level.) Here is what I found out.

I began by creating a super simple CFC to act as my service. I put some bogus code in there just to give me a few lines of logic.

component { remote function double(numeric x) { var thisisdumb = now(); var thisismoredumb = randRange(1,1000); var result = arguments.x*2; return result; } }

Over in Flash Builder I then created an extremely simple front end.

<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <fx:Declarations> <mx:RemoteObject destination="ColdFusion" source="double" id="doubleService"> <mx:method name="double" result="handleResult(event)" fault="handleFault(event)" /> </mx:RemoteObject> </fx:Declarations> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; public function handleFault(evt:FaultEvent):void { mx.controls.Alert.show(evt.toString()) } public function handleResult(evt:ResultEvent):void { resultValue.text = evt.result.toString() } public function tryIt():void { doubleService.double(initialValue.text); } ]]> </fx:Script> <s:HGroup> <s:TextInput id="initialValue" /> <s:Button id="doubleBtn" label="Click to double" click="tryIt()" /> <s:TextInput id="resultValue" /> </s:HGroup> </s:Application>

All this code does is take input from the first field and send it to my CFC. When the result is returned I place it in the second field. I hit run in Flash Builder and confirmed everything worked. I then went to ColdFusion Builder (I don't run my installs in the same Eclipse package) and switched to the ColdFusion Debugging perspective. I put a breakpoint on one of the lines and then I clicked the little green bug to start up the debugging session. This launched double.cfc in the browser which gave me the normal CFC view.

Now at this point I then switched back to my browser tab containing my Flex app. I entered another number, hit the button, and voila - all of a sudden CFBuilder is blinking in my task bar. I could see nothing being displayed in the Flex app and when I alt-tabed over to CFBuilder I was in the middle of a debugging session.

When I let the method carry on, my data was returned to Flex. I tried the same thing in a simple Ajax based application and it also worked.

Even better - I then switched over to Aptana and converted my jQuery example into a simple AIR application. I ran it and once again - the result was 'hung' up while I debugged in ColdFusion Builder.

Cool! So - as I said, I guess this is 100% expected, but it never occurred to me to try using CFBuilder's debugger like this. I can actually see myself using it more now.

Raymond Camden's Picture

About Raymond Camden

Raymond is a developer advocate for Extend by Auth0. He focuses on serverless and enterprise cat demos. If you like this article, please consider visiting my Amazon Wishlist or donating via PayPal to show your support.

Lafayette, LA https://www.raymondcamden.com

Comments