<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>gem/demo-app/src/AirClient.mxml</filename>
    </added>
    <added>
      <filename>gem/examples/cucumber/air-features/select_date.feature</filename>
    </added>
    <added>
      <filename>gem/examples/cucumber/air-features/step_definitions/date_steps.rb</filename>
    </added>
    <added>
      <filename>gem/examples/cucumber/air-features/support/academiqwatir.rb</filename>
    </added>
    <added>
      <filename>gem/examples/cucumber/air-features/support/env.rb</filename>
    </added>
    <added>
      <filename>gem/flex/src/main/flex/src/funfx/external/AirExternal.as</filename>
    </added>
    <added>
      <filename>gem/flex/src/main/flex/src/funfx/external/BrowserExternal.as</filename>
    </added>
    <added>
      <filename>gem/flex/src/main/flex/src/funfx/external/External.as</filename>
    </added>
    <added>
      <filename>gem/flex/src/main/flex/src/funfx/external/ExternalFactory.as</filename>
    </added>
    <added>
      <filename>gem/flex/src/main/flex/src/funfx/external/FunctionRegistry.as</filename>
    </added>
    <added>
      <filename>gem/flex/src/main/flex/src/funfx/external/RemoteProxy.as</filename>
    </added>
    <added>
      <filename>gem/flex/src/test/flex/src/funfx/external/FunctionRegistryTest.as</filename>
    </added>
    <added>
      <filename>gem/website/demo-app/airClient.html</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -45,6 +45,13 @@ task :httpd do
   end
 end
 
+desc 'Start air application'
+task :air do
+  Dir.chdir('gem') do
+    sh &quot;rake flex:run_air_app&quot;
+  end
+end
+
 namespace :components do
   desc 'Create xml for custom components'
   task :generate_xml_for_custom_components, :directory do |t, args|</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
 #!/bin/sh
 FLEX_SDK_HOME=&quot;/Applications/Adobe Flex Builder 3/sdks/3.0.0&quot;
-&quot;$FLEX_SDK_HOME/bin/mxmlc&quot; -verbose-stacktraces -include-libraries ../flex/src/main/flex/bin/funfx-0.2.3.swc &quot;$FLEX_SDK_HOME/frameworks/libs/automation.swc&quot; &quot;$FLEX_SDK_HOME/frameworks/libs/automation_dmv.swc&quot;  &quot;$FLEX_SDK_HOME/frameworks/libs/automation_agent.swc&quot; -output ../website/demo-app/DemoApp.swf -- src/FlexObjectTest.mxml
\ No newline at end of file
+&quot;$FLEX_SDK_HOME/bin/mxmlc&quot; -verbose-stacktraces -include-libraries ../flex/src/main/flex/bin/funfx-0.2.3.swc &quot;$FLEX_SDK_HOME/frameworks/libs/automation.swc&quot; &quot;$FLEX_SDK_HOME/frameworks/libs/automation_dmv.swc&quot;  &quot;$FLEX_SDK_HOME/frameworks/libs/automation_agent.swc&quot; -output ../website/demo-app/DemoApp.swf -- src/FlexObjectTest.mxml
+&quot;$FLEX_SDK_HOME/bin/mxmlc&quot; -verbose-stacktraces -source-path ../flex/src/main/flex/src -output ../website/demo-app/AirClient.swf -- src/AirClient.mxml</diff>
      <filename>gem/demo-app/build.sh</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
 #!/bin/sh
 FLEX_SDK_HOME=&quot;/Applications/Adobe Flex Builder 3/sdks/3.0.0&quot;
-&quot;$FLEX_SDK_HOME/bin/compc&quot; -verbose-stacktraces -include-libraries libs/FlexSpy.swc -source-path+=src -output bin/funfx-0.2.3.swc -include-classes AQAdapter custom.CustomAutomationClass AQEnvironment custom.CustomAutomationEventDescriptor custom.CustomAutomationMethodDescriptor custom.CustomAutomationPropertyDescriptor custom.utilities.EnvXMLParser custom.utilities.IFlexObjectLocatorUtility custom.utilities.IFlexObjectLocatorUtilityHelper custom.utilities.FlexObjectLocatorUtility custom.utilities.FlexObjectLocatorUtilityHelper IAQCodecHelper IAQMethodDescriptor IAQPropertyDescriptor codec.ArrayPropertyCodec codec.AssetPropertyCodec codec.AutomationObjectPropertyCodec codec.ColorPropertyCodec codec.DatePropertyCodec codec.DateRangePropertyCodec codec.DateScrollDetailPropertyCodec codec.DefaultPropertyCodec codec.HitDataCodec codec.KeyCodePropertyCodec codec.KeyModifierPropertyCodec codec.ListDataObjectCodec codec.ScrollDetailPropertyCodec codec.ScrollDirectionPropertyCodec codec.TabObjectCodec codec.TriggerEventPropertyCodec funfx.Proxy funfx.model.FunFXRecordingModel funfx.model.FunFXRecordedCommand funfx.flexlocator.FlexObjectLocator funfx.recording.FunFXRecording
+&quot;$FLEX_SDK_HOME/bin/compc&quot; -verbose-stacktraces -include-libraries libs/FlexSpy.swc -source-path+=src -output bin/funfx-0.2.3.swc -include-classes AQAdapter custom.CustomAutomationClass AQEnvironment custom.CustomAutomationEventDescriptor custom.CustomAutomationMethodDescriptor custom.CustomAutomationPropertyDescriptor custom.utilities.EnvXMLParser custom.utilities.IFlexObjectLocatorUtility custom.utilities.IFlexObjectLocatorUtilityHelper custom.utilities.FlexObjectLocatorUtility custom.utilities.FlexObjectLocatorUtilityHelper IAQCodecHelper IAQMethodDescriptor IAQPropertyDescriptor codec.ArrayPropertyCodec codec.AssetPropertyCodec codec.AutomationObjectPropertyCodec codec.ColorPropertyCodec codec.DatePropertyCodec codec.DateRangePropertyCodec codec.DateScrollDetailPropertyCodec codec.DefaultPropertyCodec codec.HitDataCodec codec.KeyCodePropertyCodec codec.KeyModifierPropertyCodec codec.ListDataObjectCodec codec.ScrollDetailPropertyCodec codec.ScrollDirectionPropertyCodec codec.TabObjectCodec codec.TriggerEventPropertyCodec funfx.Proxy funfx.model.FunFXRecordingModel funfx.model.FunFXRecordedCommand funfx.flexlocator.FlexObjectLocator funfx.recording.FunFXRecording funfx.external.AirExternal funfx.external.BrowserExternal funfx.external.External funfx.external.ExternalFactory funfx.external.FunctionRegistry funfx.external.RemoteProxy</diff>
      <filename>gem/flex/src/main/flex/build.sh</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,9 @@ package funfx {
     import flash.display.DisplayObject;
     import flash.external.ExternalInterface;
     
-    import funfx.flexlocator.FlexObjectLocator;
+    import funfx.external.External;
+    import funfx.external.ExternalFactory;
+import funfx.flexlocator.FlexObjectLocator;
     import funfx.log.LogElement;
     import funfx.log.Logger;
     
@@ -19,17 +21,21 @@ package funfx {
     public class Proxy
     {
     	private var flexObjectlocator:FlexObjectLocator;
+        private static var external:External;
     	
         public function Proxy()
         {
         	flexObjectlocator = new FlexObjectLocator();
         	flexObjectlocator.flexObjectLocatorUtility = new FlexObjectLocatorUtility();
         	flexObjectlocator.flexObjectLocatorUtility.flexLocatorhelper = new FlexObjectLocatorUtilityHelper();
-        	
-	        ExternalInterface.addCallback(&quot;fireFunFXEvent&quot;, fireFunFXEvent);
-	        ExternalInterface.addCallback(&quot;getFunFXPropertyValue&quot;, getFunFXPropertyValue);
-	        ExternalInterface.addCallback(&quot;getFunFXTabularPropertyValue&quot;, getFunFXTabularPropertyValue);
-	        ExternalInterface.addCallback(&quot;invokeFunFXTabularMethod&quot;, invokeFunFXTabularMethod);
+        	if (external == null)
+            {
+                external = ExternalFactory.getExternal();
+            }
+	        external.addCallback(&quot;fireFunFXEvent&quot;, fireFunFXEvent);
+	        external.addCallback(&quot;getFunFXPropertyValue&quot;, getFunFXPropertyValue);
+	        external.addCallback(&quot;getFunFXTabularPropertyValue&quot;, getFunFXTabularPropertyValue);
+	        external.addCallback(&quot;invokeFunFXTabularMethod&quot;, invokeFunFXTabularMethod);
         }
         
         private function fireFunFXEvent(locator:Object, eventName:String, args:String) : String{</diff>
      <filename>gem/flex/src/main/flex/src/funfx/Proxy.as</filename>
    </modified>
    <modified>
      <diff>@@ -1,40 +1,40 @@
 package {
-	import custom.utilities.*;
-	
-	import flexlocator.*;
-	
-	import flexunit.framework.TestSuite;
-	
-	import funfx.log.LogTest;
-	
-	import recording.*;
+    import custom.utilities.*;
+    import flexlocator.*;
+    import flexunit.framework.TestSuite;
+    import funfx.external.FunctionRegistryTest;
+    import funfx.log.LogTest;
+    import recording.*;
 
-	/*
-		This file is autogenerated by rake test:build:suite. Manual changes to it
-		are going to be blown away next time it is generated, so don't edit it if you
-		want to keep your changes around.
-	*/
-	public class FunFxTestSuite extends TestSuite {
-		public function FunFxTestSuite(param:Object=null) {
-			super(param);
-						
-			addTests();
-		}
+    /*
+     This file is autogenerated by rake test:build:suite. Manual changes to it
+     are going to be blown away next time it is generated, so don't edit it if you
+     want to keep your changes around.
+     */
+    public class FunFxTestSuite extends TestSuite {
+        public function FunFxTestSuite(param:Object = null)
+        {
+            super(param);
 
-		protected function addTests():void {
-			// flexlocator			
-			addTestSuite(LocatorTest)
+            addTests();
+        }
 
-			// recording			
-			addTestSuite(FunFXRecordingTest)
+        protected function addTests():void
+        {
+            // flexlocator
+            addTestSuite(LocatorTest)
 
-      // logger
-      addTestSuite(LogTest)
+            // recording
+            addTestSuite(FunFXRecordingTest)
 
-			// custom.utilities			
-			addTestSuite(CSVUtilityTest)
-			addTestSuite(FlexObjectLocatorUtilityTest)
+            // logger
+            addTestSuite(LogTest)
 
-		}
-	}
+            // custom.utilities
+            addTestSuite(CSVUtilityTest)
+            addTestSuite(FlexObjectLocatorUtilityTest)
+            addTestSuite(FunctionRegistryTest)
+
+        }
+    }
 }</diff>
      <filename>gem/flex/src/test/flex/src/FunFxTestSuite.as</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,8 @@ namespace :flex do
   win = Config::CONFIG['host_os'] =~ /mswin|mingw/
   suffix = win ? '.bat' : ''
   build = win ? 'build.bat' : './build.sh'
+  set_path='export PATH=&quot;/Applications/Adobe Flex Builder 3/sdks/3.0.0/bin&quot;:$PATH'
+  run = &quot;#{set_path};adl applicationdescriptor.xml&quot;
   
   desc 'Compile FunFX Flex code'
   task :compile do
@@ -17,4 +19,12 @@ namespace :flex do
       sh build
     end
   end
+
+  desc 'Run air app'
+  task :run_air_app do
+    Dir.chdir('website/demo-app') do
+      sh run
+    end
+  end
+
 end
\ No newline at end of file</diff>
      <filename>gem/rake_tasks/flex.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>754db1f006e14ace8b6b3560332590a73da7dfee</id>
    </parent>
  </parents>
  <author>
    <name>Michael Melia</name>
    <email>mike@GigantiqMike.local</email>
  </author>
  <url>http://github.com/peternic/funfx/commit/a0180de7f78afd1b9e9aa862e7f3b42b57cd9ff1</url>
  <id>a0180de7f78afd1b9e9aa862e7f3b42b57cd9ff1</id>
  <committed-date>2009-05-04T21:49:11-07:00</committed-date>
  <authored-date>2009-05-04T21:49:11-07:00</authored-date>
  <message>First pass at adding functionality to allow testing of Air apps.</message>
  <tree>f0ce3bb4fefabdf19677f2a342fd402ec9fc1ca9</tree>
  <committer>
    <name>Michael Melia</name>
    <email>mike@GigantiqMike.local</email>
  </committer>
</commit>
