Flex: Annoyed with COMPC Ant task

In my continuing journey with TeamCity, I’ve discovered something highly annoying… not with TeamCity but with Adobe.

I’m trying to build a master configuration with an Ant script that will automatically build several child modules. First thing I realize is that I have to override the path properties of the child Ant script with relatives paths from the parent script. Ok, that makes sense since it’s a subtask being called from the scope of the parent, so the paths have to be from that directory.

Then I try to call COMPC in the child Ant script. It chokes hard with:

[compc] command line: Error: unable to open 'api/src/Manifest.xml'

“That’s odd,” I think. I know I’m passing it the right path (contained in the ${src.dir} property). However, just to check, let’s echo out the contents of the path I’m sending to the child script.

<fileset id="dir.contents" dir="${src.dir}" includes="*"/>
<property name="file.name" refid="dir.contents"/>
<echo>${file.name}</echo>

I run the script again, and lo and behold, guess what echoes out?

 [echo] Manifest.xml

wtf?

Ant says that the file exists in the path contained in the ${src.dir} property, but the COMPC task says it doesn’t exist?

<compc output="${build.dir}/${build.file}" debug="false">
	<include-namespaces uri="${namespace}" />
	<namespace uri="${namespace}" manifest="${src.dir}/${manifest.filename}" />
   ...

Still haven’t figured this one out, because I’m now stuck in the process of throwing darts with a blindfold on, simply guessing which directory COMPC thinks it’s starting from, because, of course, there’s no way to output anything from inside the COMPC task.

ARGH!!!

Mad love for TeamCity – Automated Builds and Continuous Integration

First, the link: TeamCity

I’ve used several automated build tools over these many years, and even though I’ve only been using TeamCity for <24 hours, I can honestly say it's the easiest one I've ever used.

During 2 hours last night, and 3 hours this morning, I was able to set up every project we have, convert the Ant scripts, establish the proper dependencies, and have build triggers set up for each one.

Additionally, the Eclipse plugin they made is professional and bug-free. Here's a quick screenshot I took last night while I was getting all the projects configured.

teamcity_eclipse_plugin

It even includes support for Jabber, so I’m installing a test server on my machine to see how that works. Hard to imagine that I could have a complete build management server set up, including notifications, and integration with task management within 48 hours – cuz that’s how long I think it’s going to take.

Application and Client Specific Messaging in Flex

I’ve had a task I assigned to myself open for some time now. I needed to figure out how to implement Flex/ColdFusion messaging for our clients. There were three (3) criteria for success:

  1. It needed to integrate seamlessly with our existing Cairngorm Extensions
  2. It needed to allow for application level messages
  3. It needed to allow for client specific messages

The trick was to create an abstract class that multiple departments could use, because internally we use ColdFusion, Java and .NET to produce and consume messages. In our department, we use ColdFusion, so I had to create a concrete implementation of the abstract class called ColdFusionMessagingDelegate which handles the construction and publication of an AsyncMessage to a ColdFusion Event Gateway.

Other departments’ implementation of this process will be different, so I couldn’t force an implementation in the abstract class.

Additionally, in the application I was using for testing, I wanted to have two categories of messages:

  1. Messages intended to be produced and consumed by individual clients
  2. Messages intended to be consumed by any client

To that end, I created another abstract class at the application level that simply passed along specific a Flex Producer and Consumer for each category. I then created two concrete classes. One specified the Producer and Consumer for the application, and the other specified the Producer and Consumer for that individual client.

Here’s a diagram showing the architecture.

Generic Messaging Architecture

Generic Messaging Architecture

So far, it’s working great in the development test lab, but I still need to get with my colleagues for a group code review and hopefully fine tune the code and the architecture a bit more.

CFEclipse 1.3.5 Released

Definitely upgrade ASAP. The improvements to the Code Assist/Insight feature alone is worth the upgrade.

Release Notes on CFEclipse 1.3.5
Installation Instructions

The Nashville Blizzard of 2010

Well, we finally got real snow. I’ve been here three years now and this is our first official snow storm that has shut down the surrounding areas. Schools are canceled, businesses have shut down, the roads are empty.

Yesterday I drove to the store (being one of the few people in the area with 4-wheel drive) and was amazed how many people were walking from the surrounding house farms, and, being in the south, was also amazed how many 4-wheel ATV’s were at the grocery store.

The one day every few years that the locals can feel superior to the “city folk”. They were all decked out in their full camo hunting gear, with their son/daughter tucked in snugly behind them having a great time.

Meanwhile, I passed no less than 10 cars that had been abandoned along the roadsides. Keep in mind that I live exactly 1.2 miles from the grocery store… 10 cars.

Looks like the next two days it will be pushing 50 again, so all this snow is going to melt within 48 hours and then we’ll have flash floods. Then the day after, it’s scheduled to rain. More floods.

Going to be a fun winter.