You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2013/12/24 07:48:41 UTC

[2/8] git commit: [flex-utilities] [refs/heads/develop] - refactor so context is passed in execute() and attributes are also processed lazily. Looks like AntCall creates its own context so we can't assume a context until execute()

refactor so context is passed in execute() and attributes are also processed lazily.  Looks like AntCall creates its own context so we can't assume a context until execute()


Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/4b53170a
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/4b53170a
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/4b53170a

Branch: refs/heads/develop
Commit: 4b53170a891a7e006993dc0e40875e41702e2ef9
Parents: dd196d1
Author: Alex Harui <ah...@apache.org>
Authored: Thu Dec 19 15:37:33 2013 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Dec 19 15:37:33 2013 -0800

----------------------------------------------------------------------
 ant_on_air/build.xml                            |  8 +++
 ant_on_air/src/AntClasses.as                    |  3 +
 ant_on_air/src/org/apache/flex/ant/Ant.as       | 49 +++++++++------
 .../src/org/apache/flex/ant/tags/Available.as   | 12 ++--
 .../src/org/apache/flex/ant/tags/Checksum.as    |  4 +-
 .../src/org/apache/flex/ant/tags/Condition.as   |  6 +-
 ant_on_air/src/org/apache/flex/ant/tags/Copy.as |  4 +-
 .../src/org/apache/flex/ant/tags/Delete.as      |  4 +-
 ant_on_air/src/org/apache/flex/ant/tags/Echo.as |  4 +-
 .../src/org/apache/flex/ant/tags/Equals.as      |  8 ++-
 ant_on_air/src/org/apache/flex/ant/tags/Fail.as |  8 +--
 .../src/org/apache/flex/ant/tags/FileSet.as     |  5 +-
 ant_on_air/src/org/apache/flex/ant/tags/Get.as  |  8 +--
 .../src/org/apache/flex/ant/tags/Input.as       |  4 +-
 .../src/org/apache/flex/ant/tags/IsSet.as       |  6 +-
 .../org/apache/flex/ant/tags/LoadProperties.as  |  9 +--
 .../src/org/apache/flex/ant/tags/Mkdir.as       |  4 +-
 ant_on_air/src/org/apache/flex/ant/tags/Not.as  |  7 ++-
 ant_on_air/src/org/apache/flex/ant/tags/OS.as   |  4 +-
 .../src/org/apache/flex/ant/tags/Project.as     | 36 +++++++----
 .../src/org/apache/flex/ant/tags/Property.as    | 10 +---
 .../org/apache/flex/ant/tags/PropertyFile.as    | 10 +---
 .../src/org/apache/flex/ant/tags/Replace.as     |  4 +-
 .../src/org/apache/flex/ant/tags/Target.as      | 63 +++++++++++---------
 .../src/org/apache/flex/ant/tags/Untar.as       |  6 +-
 .../src/org/apache/flex/ant/tags/Unzip.as       |  8 +--
 .../src/org/apache/flex/ant/tags/XmlProperty.as |  9 +--
 .../flex/ant/tags/filesetClasses/DataType.as    |  4 +-
 .../ant/tags/filesetClasses/DirectoryScanner.as |  4 +-
 .../flex/ant/tags/filesetClasses/FileUtils.as   |  4 +-
 .../ant/tags/filesetClasses/TokenizedPath.as    |  2 +-
 .../tags/supportClasses/FileSetTaskHandler.as   | 13 ++--
 .../ant/tags/supportClasses/IValueTagHandler.as |  8 ++-
 .../ant/tags/supportClasses/NamedTagHandler.as  |  3 +
 .../flex/ant/tags/supportClasses/TagHandler.as  |  9 ++-
 .../flex/ant/tags/supportClasses/TaskHandler.as | 13 ++--
 .../src/org/apache/flex/xml/ITagHandler.as      |  3 +-
 .../src/org/apache/flex/xml/XMLTagProcessor.as  |  8 +--
 ant_on_air/tests/AntTest.mxml                   |  4 +-
 ant_on_air/tests/test.xml                       |  4 +-
 40 files changed, 210 insertions(+), 172 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/build.xml
----------------------------------------------------------------------
diff --git a/ant_on_air/build.xml b/ant_on_air/build.xml
index 8d6d5fc..5f06203 100644
--- a/ant_on_air/build.xml
+++ b/ant_on_air/build.xml
@@ -137,4 +137,12 @@
         </exec>
     </target>
 
+    <target name="debug-test" >
+        <delete dir="${basedir}/tests/temp" failonerror="false" />
+        <exec executable="${AIR_HOME}/bin/${adl}" dir="${basedir}/tests" failonerror="true">
+            <arg value="-runtime" />
+            <arg value="${AIR_HOME}/runtimes/air/${runtime}" />
+            <arg value="${basedir}/tests/AntTest-app.xml" />
+        </exec>
+    </target>
 </project>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/AntClasses.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/AntClasses.as b/ant_on_air/src/AntClasses.as
index ab6b80b..91abdf1 100644
--- a/ant_on_air/src/AntClasses.as
+++ b/ant_on_air/src/AntClasses.as
@@ -24,6 +24,9 @@ package
         {
             import org.apache.flex.ant.Ant; Ant;
             import org.apache.flex.ant.tags.Project; Project;
+			import org.apache.flex.ant.tags.And; And;
+			import org.apache.flex.ant.tags.AntTask; AntTask;
+			import org.apache.flex.ant.tags.AntCall; AntCall;
             import org.apache.flex.ant.tags.Available; Available;
             import org.apache.flex.ant.tags.Checksum; Checksum;
             import org.apache.flex.ant.tags.Condition; Condition;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/Ant.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/Ant.as b/ant_on_air/src/org/apache/flex/ant/Ant.as
index 1dc97c6..e3727f2 100644
--- a/ant_on_air/src/org/apache/flex/ant/Ant.as
+++ b/ant_on_air/src/org/apache/flex/ant/Ant.as
@@ -57,6 +57,7 @@ package org.apache.flex.ant
          */
         public function processXMLFile(file:File, context:Object = null, callbackMode:Boolean = true):Boolean
         {
+			Ant.ants.push(this);
             this.file = file;
             var fs:FileStream = new FileStream();
             fs.open(file, FileMode.READ);
@@ -68,13 +69,14 @@ package org.apache.flex.ant
             if (!context)
                 context = {};
             this.context = context;
-            var project:Project = processXMLTag(xml, context) as Project;
-            Ant.project = project;
-            if (!project.execute(callbackMode))
+            var project:Project = processXMLTag(xml) as Project;
+            this.project = project;
+            if (!project.execute(callbackMode, context))
             {
                 project.addEventListener(Event.COMPLETE, completeHandler);
                 return false;                
             }
+			Ant.ants.pop();
             return true;
         }
     
@@ -103,13 +105,19 @@ package org.apache.flex.ant
         public var progressClass:Object;
         
         private var context:Object;
-        public static var ant:Ant;
-        public static var project:Project;
-        public static function log(msg:String, level:int):void
-        {
-            ant.output(msg);
-        }
-                
+        public var ant:Ant;
+        public var project:Project;
+		
+		// the stack of ant instances (ant can call <ant/>)
+		public static var ants:Array = [];
+		
+		public static function get currentAnt():Ant
+		{
+			if (ants.length == 0)
+				return null;
+			return ants[ants.length - 1] as Ant;
+		}
+		
         private function completeHandler(event:Event):void
         {
             dispatchEvent(event);
@@ -149,19 +157,19 @@ package org.apache.flex.ant
                     if (c != -1)
                     {
                         var token:String = input.substring(i + 2, c);
-                        if (context.hasOwnProperty(token))
+						if (token == "basedir")
+						{
+							var basedir:String = context.basedir;
+							rep = file.parent.resolvePath(basedir).nativePath;
+							input = input.replace("${" + token + "}", rep);
+							i += rep.length - token.length - 3;
+						}
+						else if (context.hasOwnProperty(token))
                         {
                             var rep:String = context[token];
                             input = input.replace("${" + token + "}", rep);
                             i += rep.length - token.length - 3;
                         }
-                        else if (token == "basedir")
-                        {
-                            var basedir:String = context.project.basedir;
-                            rep = file.parent.resolvePath(basedir).nativePath;
-                            input = input.replace("${" + token + "}", rep);
-                            i += rep.length - token.length - 3;
-                        }
                     }
                 }
                 i++;
@@ -170,6 +178,11 @@ package org.apache.flex.ant
             return input;
         }
         
+		public static function log(s:String, level:int):void
+		{
+			currentAnt.output(s);	
+		}
+		
         /**
          *  Output for Echo.  Defaults to trace().
          */

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Available.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Available.as b/ant_on_air/src/org/apache/flex/ant/tags/Available.as
index 9942359..219aa64 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Available.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Available.as
@@ -44,8 +44,10 @@ package org.apache.flex.ant.tags
         private var _property:String;
         private var _value:String;
         
-        public function get value():Object
+        public function getValue(context:Object):Object
         {
+			processAttributes(xml.attributes(), context);
+
             if (_file == null) return false;
             
             var file:File = new File(_file);
@@ -58,12 +60,12 @@ package org.apache.flex.ant.tags
             return true;
         }
 
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
-            if (value)
+            super.execute(callbackMode, context);
+            var value:Object = getValue(context);
                 if (!context.hasOwnProperty(_property))
-                    context[_property] = _value;
+                    context[_property] = _value != null ? _value : true;
             return true;
         }
         

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Checksum.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Checksum.as b/ant_on_air/src/org/apache/flex/ant/tags/Checksum.as
index 8881eaa..5e19157 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Checksum.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Checksum.as
@@ -70,9 +70,9 @@ package org.apache.flex.ant.tags
         private var md5:MD5Stream;
         private var fs:FileStream;
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
          
             var f:File = File.applicationDirectory.resolvePath(file);
             fs = new FileStream();

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Condition.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Condition.as b/ant_on_air/src/org/apache/flex/ant/tags/Condition.as
index dd5238f..ce565d1 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Condition.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Condition.as
@@ -39,9 +39,9 @@ package org.apache.flex.ant.tags
             super();
         }
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
             
             // if the property is not already set
             if (_property && _value != null && !context.hasOwnProperty(_property))
@@ -61,7 +61,7 @@ package org.apache.flex.ant.tags
         public function get computedValue():Object
         {
             // get the value from the children
-            var val:Object = IValueTagHandler(getChildAt(0)).value;
+            var val:Object = IValueTagHandler(getChildAt(0)).getValue(context);
             return val;
         }
         

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Copy.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Copy.as b/ant_on_air/src/org/apache/flex/ant/tags/Copy.as
index b1c0c46..8742bd3 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Copy.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Copy.as
@@ -76,9 +76,9 @@ package org.apache.flex.ant.tags
             srcFile.copyTo(destFile, overwrite);
         }
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            var retVal:Boolean = super.execute(callbackMode);
+            var retVal:Boolean = super.execute(callbackMode, context);
             if (numChildren > 0)
                 return retVal;
             

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Delete.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Delete.as b/ant_on_air/src/org/apache/flex/ant/tags/Delete.as
index 0d5b010..77aba9d 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Delete.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Delete.as
@@ -65,9 +65,9 @@ package org.apache.flex.ant.tags
                 delFile.deleteFile();
         }
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            var retVal:Boolean = super.execute(callbackMode);
+            var retVal:Boolean = super.execute(callbackMode, context);
             if (numChildren > 0)
                 return retVal;
             

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Echo.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Echo.as b/ant_on_air/src/org/apache/flex/ant/tags/Echo.as
index 2e92f18..fbcfa7f 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Echo.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Echo.as
@@ -52,9 +52,9 @@ package org.apache.flex.ant.tags
                 super.processAttribute(name, value);
         }
 
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
             ant.output(ant.getValue(text, context));
             return true;
         }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Equals.as b/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
index 66af57b..6c4923c 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Equals.as
@@ -43,9 +43,11 @@ package org.apache.flex.ant.tags
         private var casesensitive:Boolean;
         private var trim:Boolean;
         
-        public function get value():Object
+        public function getValue(context:Object):Object
         {
-            var val1:String = arg1;
+			processAttributes(xml.attributes(), context);
+
+			var val1:String = arg1;
             var val2:String = arg2;
             if (casesensitive)
             {
@@ -69,7 +71,7 @@ package org.apache.flex.ant.tags
             else if (name == "casesensitive")
                 casesensitive = value == "true";
             else if (name == "trim")
-                casesensitive = value == "true";
+                trim = value == "true";
         }
         
     }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Fail.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Fail.as b/ant_on_air/src/org/apache/flex/ant/tags/Fail.as
index e08619c..7f6cab4 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Fail.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Fail.as
@@ -51,15 +51,15 @@ package org.apache.flex.ant.tags
                 super.processAttribute(name, value);
         }
 
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
             if (numChildren == 1)
             {
                 var child:Condition = getChildAt(0) as Condition;
                 if (child)
                 {
-                    child.execute(false);
+                    child.execute(false, context);
                     var val:Object = child.computedValue;
                     if (!(val == "true" || val == true))
                     {
@@ -69,7 +69,7 @@ package org.apache.flex.ant.tags
             }
             if (text)
                 ant.output(ant.getValue(text, context));
-            Ant.project.status = false;
+            ant.project.status = false;
             return true;
         }
     }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/FileSet.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/FileSet.as b/ant_on_air/src/org/apache/flex/ant/tags/FileSet.as
index c6fb109..4b3d597 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/FileSet.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/FileSet.as
@@ -49,11 +49,12 @@ package org.apache.flex.ant.tags
         
         private var _value:Vector.<String>;
         
-        public function get value():Object
+        public function getValue(context:Object):Object
         {
             if (_value) return _value;
             
-            ant.processChildren(xml, context, this);
+			processAttributes(xml.attributes(), context);
+            ant.processChildren(xml, this);
             var ds:DirectoryScanner = new DirectoryScanner();
             var n:int = numChildren;
             var includes:Vector.<String> = new Vector.<String>();

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Get.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Get.as b/ant_on_air/src/org/apache/flex/ant/tags/Get.as
index d11c194..6512071 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Get.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Get.as
@@ -67,9 +67,9 @@ package org.apache.flex.ant.tags
         
         private var urlLoader:URLLoader;
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
          
             if (skipexisting)
             {
@@ -90,14 +90,14 @@ package org.apache.flex.ant.tags
         
         private function ioErrorEventHandler(event:IOErrorEvent):void
         {
-            Ant.project.status = false;
+            ant.project.status = false;
             dispatchEvent(new Event(Event.COMPLETE));
             event.preventDefault();
         }
             
         private function securityErrorHandler(event:SecurityErrorEvent):void
         {
-            Ant.project.status = false;
+            ant.project.status = false;
             dispatchEvent(new Event(Event.COMPLETE));
             event.preventDefault();
         }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Input.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Input.as b/ant_on_air/src/org/apache/flex/ant/tags/Input.as
index 52210f2..2567e43 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Input.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Input.as
@@ -59,9 +59,9 @@ package org.apache.flex.ant.tags
                 super.processAttribute(name, value);
         }
 
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
             if (text)
                 ant.output(ant.getValue(text, context));
             if (validArgs)

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/IsSet.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/IsSet.as b/ant_on_air/src/org/apache/flex/ant/tags/IsSet.as
index 3ea565d..8b88e97 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/IsSet.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/IsSet.as
@@ -39,9 +39,11 @@ package org.apache.flex.ant.tags
         
         private var _property:String;
         
-        public function get value():Object
+        public function getValue(context:Object):Object
         {
-            if (_property == null) return false;
+			processAttributes(xml.attributes(), context);
+
+			if (_property == null) return false;
             
             return context.hasOwnProperty(_property);
         }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as b/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
index 54ffb5f..ef68bd0 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/LoadProperties.as
@@ -48,13 +48,10 @@ package org.apache.flex.ant.tags
         {
         }
         
-        override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
-        {
-            super.init(xml, context, xmlProcessor);
-        }
-        
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
+			super.execute(callbackMode, context);
+			
             var f:File = new File(fileName);
             var fs:FileStream = new FileStream();
             fs.open(f, FileMode.READ);

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Mkdir.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Mkdir.as b/ant_on_air/src/org/apache/flex/ant/tags/Mkdir.as
index 3c41623..c1c92d8 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Mkdir.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Mkdir.as
@@ -40,9 +40,9 @@ package org.apache.flex.ant.tags
         
         private var _dir:String;
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
             
             var dir:File = new File(_dir);
             dir.createDirectory();

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Not.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Not.as b/ant_on_air/src/org/apache/flex/ant/tags/Not.as
index 3ea0b7e..0aa38b0 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Not.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Not.as
@@ -37,14 +37,15 @@ package org.apache.flex.ant.tags
             super();
         }
         
-        public function get value():Object
+        public function getValue(context:Object):Object
         {
-            ant.processChildren(xml, context, this);
+			processAttributes(xml.attributes(), context);
+            ant.processChildren(xml, this);
             if (numChildren == 1)
             {
                 var value:IValueTagHandler = getChildAt(0) as IValueTagHandler;
                 // get the value from the children
-                var val:Object = IValueTagHandler(value).value;
+                var val:Object = IValueTagHandler(value).getValue(context);
                 if (!(val == "true" || val == true))
                 {
                     return true;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/OS.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/OS.as b/ant_on_air/src/org/apache/flex/ant/tags/OS.as
index cc81459..a4e8ba2 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/OS.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/OS.as
@@ -41,8 +41,10 @@ package org.apache.flex.ant.tags
         
         private var _family:String;
         
-        public function get value():Object
+        public function getValue(context:Object):Object
         {
+			processAttributes(xml.attributes(), context);
+			
             if (_family == null) return false;
             
             return Capabilities.os.toLowerCase().indexOf(_family.toLowerCase()) != -1;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Project.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Project.as b/ant_on_air/src/org/apache/flex/ant/tags/Project.as
index 91f8f98..29e0392 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Project.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Project.as
@@ -52,20 +52,26 @@ package org.apache.flex.ant.tags
         {
         }
         
+		private var _status:Boolean;
         /**
          *  true if tasks completed successfully.
          *  Do not monitor this property to determine if the project is done executing.
          *  This property is set to true and a failing task sets it to false.
          */
-        public var status:Boolean;
-        
-        override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
-        {
-            context.project = this;
-            super.init(xml, context, xmlProcessor);
-            ant.processChildren(xml, context, this);
-        }
-        
+        public function get status():Boolean
+		{
+			return _status;
+		}
+		
+		public function set status(value:Boolean):void
+		{
+			if (_status != value)
+			{
+				_status = value;
+				ant.dispatchEvent(new Event("statusChanged"));
+			}
+		}
+                
         private var _basedir:String;
         
         public function get basedir():String
@@ -92,10 +98,14 @@ package org.apache.flex.ant.tags
                 super.processAttribute(name, value);
         }
 
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
+			super.execute(callbackMode, context);
+			
             this.callbackMode = callbackMode;
-            
+			
+            context.basedir = basedir;
+			
             status = true;
             
             if (context.targets == null)
@@ -128,7 +138,7 @@ package org.apache.flex.ant.tags
                 if (child is TaskHandler)
                 {
                     var task:TaskHandler = TaskHandler(child);
-                    if (!task.execute(callbackMode))
+                    if (!task.execute(callbackMode, context))
                     {
                         task.addEventListener(Event.COMPLETE, childCompleteHandler);
                         return false;
@@ -187,7 +197,7 @@ package org.apache.flex.ant.tags
         public function executeTarget(targetName:String):Boolean
         {
             var t:Target = getTarget(targetName);
-            if (!t.execute(callbackMode))
+            if (!t.execute(callbackMode, context))
             {
                 t.addEventListener(Event.COMPLETE, completeHandler);
                 return false;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Property.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Property.as b/ant_on_air/src/org/apache/flex/ant/tags/Property.as
index 0d7619c..adfa9c4 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Property.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Property.as
@@ -34,7 +34,6 @@ package org.apache.flex.ant.tags
     
     import org.apache.flex.ant.Ant;
     import org.apache.flex.ant.tags.supportClasses.TaskHandler;
-    import org.apache.flex.xml.XMLTagProcessor;
     
     [Mixin]
     public class Property extends TaskHandler
@@ -48,13 +47,10 @@ package org.apache.flex.ant.tags
         {
         }
         
-        override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
-        {
-            super.init(xml, context, xmlProcessor);
-        }
-        
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
+			super.execute(callbackMode, context);
+			
             if (name && value && !context.hasOwnProperty(name))
                 context[name] = value;
             else if (fileName != null)

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as b/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
index 25c1627..9d5e8a0 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/PropertyFile.as
@@ -48,14 +48,10 @@ package org.apache.flex.ant.tags
         {
         }
         
-        override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.init(xml, context, xmlProcessor);
-        }
-        
-        override public function execute(callbackMode:Boolean):Boolean
-        {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
+			
             var f:File = new File(fileName);
             var fs:FileStream = new FileStream();
             fs.open(f, FileMode.WRITE);

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Replace.as b/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
index 0a1fe04..7eadd2f 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Replace.as
@@ -58,9 +58,9 @@ package org.apache.flex.ant.tags
                 super.processAttribute(name, value);
         }
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
 
             var f:File = File.applicationDirectory.resolvePath(file);
             var fs:FileStream = new FileStream();

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Target.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Target.as b/ant_on_air/src/org/apache/flex/ant/tags/Target.as
index 92b82da..5f6abbf 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Target.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Target.as
@@ -24,7 +24,6 @@ package org.apache.flex.ant.tags
     
     import org.apache.flex.ant.Ant;
     import org.apache.flex.ant.tags.supportClasses.TaskHandler;
-    import org.apache.flex.xml.XMLTagProcessor;
     
     [Mixin]
     public class Target extends TaskHandler
@@ -37,16 +36,11 @@ package org.apache.flex.ant.tags
         public function Target()
         {
         }
-        
-        override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
-        {
-            this.xml = xml;
-            project = context.project as Project;
-            super.init(xml, context, xmlProcessor);
-        }
-        
+                
         private var project:Project;
-        
+		private var ifProperty:String;
+		private var unlessProperty:String;
+		
         private var _depends:String;
         
         public function get depends():String
@@ -58,16 +52,14 @@ package org.apache.flex.ant.tags
         {
             if (name == "depends")
                 _depends = value;
+			else if (name == "if")
+				ifProperty = value;
+			else if (name == "unless")
+				unlessProperty = value;
             else
                 super.processAttribute(name, value);
         }
         
-        override protected function processAttributes(xmlList:XMLList, context:Object):void
-        {
-            super.processAttributes(xmlList, context);
-            context.currentTarget = this;
-        }
-        
         private var dependsList:Array;
         
         private function processDepends():Boolean
@@ -82,7 +74,7 @@ package org.apache.flex.ant.tags
             {
                 var depend:String = dependsList.shift();
                 var t:Target = project.getTarget(depend);
-                if (!t.execute(callbackMode))
+                if (!t.execute(callbackMode, context))
                 {
                     t.addEventListener(Event.COMPLETE, dependCompleteHandler);
                     return false;
@@ -99,8 +91,10 @@ package org.apache.flex.ant.tags
         
         private var inExecute:Boolean;
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
+			super.execute(callbackMode, context);
+			
             inExecute = true;
             this.callbackMode = callbackMode;
             if (_depends)
@@ -120,9 +114,8 @@ package org.apache.flex.ant.tags
         
         private function continueOnToSteps():Boolean
         {
-            if (!Ant.project.status)
+            if (!ant.project.status)
                 return true;
-            ant.processChildren(xml, context, this);
             return processSteps();
         }
         
@@ -130,6 +123,24 @@ package org.apache.flex.ant.tags
         
         private function processSteps():Boolean
         {
+			if (ifProperty != null)
+			{
+				if (!context.hasOwnProperty(ifProperty))
+				{
+					dispatchEvent(new Event(Event.COMPLETE));
+					return true;
+				}
+			}
+			
+			if (unlessProperty != null)
+			{
+				if (context.hasOwnProperty(unlessProperty))
+				{
+					dispatchEvent(new Event(Event.COMPLETE));
+					return true;
+				}
+			}
+			
             if (current == numChildren)
             {
                 dispatchEvent(new Event(Event.COMPLETE));
@@ -139,18 +150,12 @@ package org.apache.flex.ant.tags
             while (current < numChildren)
             {
                 var step:TaskHandler = getChildAt(current++) as TaskHandler;
-                if (step.ifProperty != null)
-                    if (!context.hasOwnProperty(step.ifProperty))
-                        continue;
-                if (step.unlessProperty != null)
-                    if (context.hasOwnProperty(step.unlessProperty))
-                        continue;
-                if (!step.execute(callbackMode))
+                if (!step.execute(callbackMode, context))
                 {
                     step.addEventListener(Event.COMPLETE, completeHandler);
                     return false;
                 }
-                if (!Ant.project.status)
+                if (!ant.project.status)
                 {
                     if (!inExecute)
                         dispatchEvent(new Event(Event.COMPLETE));
@@ -168,7 +173,7 @@ package org.apache.flex.ant.tags
 
         private function completeHandler(event:Event):void
         {
-            if (!Ant.project.status)
+            if (!ant.project.status)
             {
                 dispatchEvent(new Event(Event.COMPLETE));
                 return;                

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Untar.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Untar.as b/ant_on_air/src/org/apache/flex/ant/tags/Untar.as
index a7a27f2..ee119f1 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Untar.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Untar.as
@@ -62,9 +62,9 @@ package org.apache.flex.ant.tags
         
         private var destFile:File;
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
          
             var srcFile:File = File.applicationDirectory.resolvePath(src);
             destFile = File.applicationDirectory.resolvePath(dest);
@@ -105,7 +105,7 @@ package org.apache.flex.ant.tags
             var output:String = _process.standardError.readUTFBytes(_process.standardError.bytesAvailable);
             ant.output(output);
             if (failonerror)
-                Ant.project.status = false;
+                ant.project.status = false;
             dispatchEvent(new Event(Event.COMPLETE));
         }
         

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/Unzip.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/Unzip.as b/ant_on_air/src/org/apache/flex/ant/tags/Unzip.as
index 3424ea7..6ae9d36 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/Unzip.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/Unzip.as
@@ -64,9 +64,9 @@ package org.apache.flex.ant.tags
         
         private var destFile:File;
         
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
          
             var srcFile:File = File.applicationDirectory.resolvePath(src);
             destFile = File.applicationDirectory.resolvePath(dest);
@@ -116,7 +116,7 @@ package org.apache.flex.ant.tags
                 
             } catch (error:Error) {
                 if (failonerror)
-                    Ant.project.status = false;
+                    ant.project.status = false;
             }
         }
         
@@ -135,7 +135,7 @@ package org.apache.flex.ant.tags
             fzip.removeEventListener(Event.COMPLETE, onUnzipComplete);            
             fzip.removeEventListener(ErrorEvent.ERROR, onUnzipError);
             if (failonerror)
-                Ant.project.status = false;
+                ant.project.status = false;
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/XmlProperty.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/XmlProperty.as b/ant_on_air/src/org/apache/flex/ant/tags/XmlProperty.as
index f5f126d..9fda9b4 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/XmlProperty.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/XmlProperty.as
@@ -40,13 +40,10 @@ package org.apache.flex.ant.tags
         {
         }
         
-        override public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
-        {
-            super.init(xml, context, xmlProcessor);
-        }
-        
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
+			super.execute(callbackMode, context);
+			
             var f:File = new File(fileName);
             var fs:FileStream = new FileStream();
             fs.open(f, FileMode.READ);

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DataType.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DataType.as b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DataType.as
index 1efa665..16acca7 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DataType.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DataType.as
@@ -121,7 +121,7 @@ package org.apache.flex.ant.tags.filesetClasses
         protected function dieOnCircularReference(stack:Vector.<String> = null, project:Project = null):void
         {
             if (!project)
-                project = Ant.project;
+                project = Ant.currentAnt.project;
             
             if (!stack)
                 stack = new Vector.<String>();
@@ -190,7 +190,7 @@ package org.apache.flex.ant.tags.filesetClasses
         protected function getCheckedRef(p:Project = null):Object 
         {
             if (!p)
-                p = Ant.project;
+                p = Ant.currentAnt.project;
             return getCheckedRefActual(Class(ApplicationDomain.currentDomain.getDefinition(getQualifiedClassName(this))), 
                     getDataTypeName(), p);
         }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DirectoryScanner.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DirectoryScanner.as b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DirectoryScanner.as
index 379bb6c..3257fc9 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DirectoryScanner.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/DirectoryScanner.as
@@ -1135,7 +1135,7 @@ package org.apache.flex.ant.tags.filesetClasses
                             var msg:String = "IOException caught while checking "
                                 + "for links, couldn't get canonical path!";
                             // will be caught and redirected to Ant's logging system
-                            Ant.ant.output(msg);
+                            Ant.currentAnt.output(msg);
                             noLinks.push(newfiles[i]);
                         }
                     }
@@ -1171,7 +1171,7 @@ package org.apache.flex.ant.tags.filesetClasses
                             && causesIllegalSymlinkLoop(newfiles[i], dir,
                                 directoryNamesFollowed)) {
                             // will be caught and redirected to Ant's logging system
-                            Ant.ant.output("skipping symbolic link "
+                            Ant.currentAnt.output("skipping symbolic link "
                                 + file.nativePath
                                 + " -- too many levels of symbolic"
                                 + " links.");

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/FileUtils.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/FileUtils.as b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/FileUtils.as
index 146b972..0c1d9e2 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/FileUtils.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/FileUtils.as
@@ -473,11 +473,11 @@ package org.apache.flex.ant.tags.filesetClasses
             from = normalize(from.nativePath);
             to = normalize(to.nativePath);
             if (!from.exists) {
-                Ant.ant.output("Cannot rename nonexistent file " + from);
+                Ant.currentAnt.output("Cannot rename nonexistent file " + from);
                 return;
             }
             if (from.nativePath == to.nativePath) {
-                Ant.ant.output("Rename of " + from + " to " + to + " is a no-op.");
+                Ant.currentAnt.output("Rename of " + from + " to " + to + " is a no-op.");
                 return;
             }
             if (to.exists)

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/TokenizedPath.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/TokenizedPath.as b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/TokenizedPath.as
index f9dc3d2..e5f8c3d 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/TokenizedPath.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/TokenizedPath.as
@@ -152,7 +152,7 @@ package org.apache.flex.ant.tags.filesetClasses
                     var msg:String = "IOException caught while checking "
                         + "for links, couldn't get canonical path!";
                     // will be caught and redirected to Ant's logging system
-                    Ant.ant.output(msg);
+                    Ant.currentAnt.output(msg);
                 }
             }
             return false;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/FileSetTaskHandler.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/FileSetTaskHandler.as b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/FileSetTaskHandler.as
index d35c8a2..9c3015b 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/FileSetTaskHandler.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/FileSetTaskHandler.as
@@ -43,13 +43,14 @@ package org.apache.flex.ant.tags.supportClasses
         
         /**
          *  Do the work.
-         *  TaskHandlers lazily create their children so
+         *  TaskHandlers lazily create their children
+		 *  and attributes so
          *  super.execute() should be called before
          *  doing any real work. 
          */
-        override public function execute(callbackMode:Boolean):Boolean
+        override public function execute(callbackMode:Boolean, context:Object):Boolean
         {
-            super.execute(callbackMode);
+            super.execute(callbackMode, context);
             totalFiles = 0;
             thisFile = 0;
             for (var i:int = 0; i < numChildren; i++)
@@ -59,7 +60,7 @@ package org.apache.flex.ant.tags.supportClasses
                 {
                     try
                     {
-                        var list:Vector.<String> = fs.value as Vector.<String>;
+                        var list:Vector.<String> = fs.getValue(context) as Vector.<String>;
                         if (list)
                         {
                             totalFiles += list.length;
@@ -69,7 +70,7 @@ package org.apache.flex.ant.tags.supportClasses
                     {
                         if (failonerror)
                         {
-                            Ant.project.status = false;
+                            ant.project.status = false;
                             return true;
                         }
                     }
@@ -92,7 +93,7 @@ package org.apache.flex.ant.tags.supportClasses
                 var fs:FileSet = getChildAt(current++) as FileSet;
                 if (fs)
                 {
-                    var list:Vector.<String> = fs.value as Vector.<String>;
+                    var list:Vector.<String> = fs.getValue(context) as Vector.<String>;
                     if (list)
                     {
                         currentDir = new File(fs.dir);

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/IValueTagHandler.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/IValueTagHandler.as b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/IValueTagHandler.as
index cc202b5..49b0fec 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/IValueTagHandler.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/IValueTagHandler.as
@@ -25,6 +25,12 @@ package org.apache.flex.ant.tags.supportClasses
      */
     public interface IValueTagHandler extends ITagHandler
     {
-        function get value():Object;
+		/**
+		 *  Return a value based on the attributes and children.
+		 *  @param context Object A object of properties and values
+		 *  @return Object The computed value.  Often a Boolean but
+		 *  always.
+		 */
+        function getValue(context:Object):Object;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/NamedTagHandler.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/NamedTagHandler.as b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/NamedTagHandler.as
index bfe3f6e..a264bc7 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/NamedTagHandler.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/NamedTagHandler.as
@@ -34,6 +34,9 @@ package org.apache.flex.ant.tags.supportClasses
          */
         public function get name():String
         {
+			if (_name == null && xml != null)
+				_name = xml.@name.toString();
+			
             return _name;
         }
         

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TagHandler.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TagHandler.as b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TagHandler.as
index 3b3b1d2..7834fe0 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TagHandler.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TagHandler.as
@@ -42,7 +42,7 @@ package org.apache.flex.ant.tags.supportClasses
         protected var ant:Ant;
         
         /**
-         *  The context object.  Contains a project property referencing the project.
+         *  The context object.  Contains the properties that currently apply.
          */
         protected var context:Object;
         
@@ -54,12 +54,10 @@ package org.apache.flex.ant.tags.supportClasses
         /**
          *  @see org.apache.flex.xml.ITagHandler 
          */
-        public function init(xml:XML, context:Object, xmlProcessor:XMLTagProcessor):void
+        public function init(xml:XML, xmlProcessor:XMLTagProcessor):void
         {
             ant = xmlProcessor as Ant;
-            this.context = context;
             this.xml = xml;
-            processAttributes(xml.attributes(), context);
         }
         
         /**
@@ -80,7 +78,8 @@ package org.apache.flex.ant.tags.supportClasses
          *  @param value String The attribute value.
          */
         protected function processAttribute(name:String, value:String):void
-        {     
+        {
+			trace("unknown attribute:", name);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TaskHandler.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TaskHandler.as b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TaskHandler.as
index 6ee826b..38e3550 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TaskHandler.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/supportClasses/TaskHandler.as
@@ -30,9 +30,6 @@ package org.apache.flex.ant.tags.supportClasses
         
         public var failonerror:Boolean = true;
         
-        public var ifProperty:String;
-        public var unlessProperty:String;
-        
         protected var callbackMode:Boolean;
         
         /**
@@ -41,10 +38,12 @@ package org.apache.flex.ant.tags.supportClasses
          *  super.execute() should be called before
          *  doing any real work. 
          */
-        public function execute(callbackMode:Boolean):Boolean
+        public function execute(callbackMode:Boolean, context:Object):Boolean
         {
             this.callbackMode = callbackMode;
-            ant.processChildren(this.xml, context, this);
+			this.context = context;
+			processAttributes(xml.attributes(), context);
+            ant.processChildren(xml, this);
             return true;
         }
         
@@ -52,10 +51,6 @@ package org.apache.flex.ant.tags.supportClasses
         {
             if (name == "failonerror")
                 failonerror = value == "true";
-            else if (name == "if")
-                ifProperty = value;
-            else if (name == "unless")
-                unlessProperty = value;
             else
                 super.processAttribute(name, value);
         }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/xml/ITagHandler.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/xml/ITagHandler.as b/ant_on_air/src/org/apache/flex/xml/ITagHandler.as
index 36fde54..385d9db 100644
--- a/ant_on_air/src/org/apache/flex/xml/ITagHandler.as
+++ b/ant_on_air/src/org/apache/flex/xml/ITagHandler.as
@@ -26,9 +26,8 @@ package org.apache.flex.xml
         /**
          *  This method is called after the instance is created
          *  @param xml XML The XML node.
-         *  @param context Object An object containing useful information.
          *  @param tagProcessor The XMLTagProcessor that generated this instance.
          */
-        function init(xml:XML, context:Object, tagProcessor:XMLTagProcessor):void;
+        function init(xml:XML, tagProcessor:XMLTagProcessor):void;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/src/org/apache/flex/xml/XMLTagProcessor.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/xml/XMLTagProcessor.as b/ant_on_air/src/org/apache/flex/xml/XMLTagProcessor.as
index a666f7c..99f19c0 100644
--- a/ant_on_air/src/org/apache/flex/xml/XMLTagProcessor.as
+++ b/ant_on_air/src/org/apache/flex/xml/XMLTagProcessor.as
@@ -40,7 +40,7 @@ package org.apache.flex.xml
          *  @param context Object An object containing useful information.
          *  @return ITagHandler An instance representing this XML node
          */
-        public function processXMLTag(xml:XML, context:Object):ITagHandler
+        public function processXMLTag(xml:XML):ITagHandler
         {
             var tag:String = xml.name().toString();
             var c:Class = tagMap[tag];
@@ -50,7 +50,7 @@ package org.apache.flex.xml
                 throw new Error("no processor for " + tag);
             }
             var o:ITagHandler = new c() as ITagHandler;
-            o.init(xml, context, this);
+            o.init(xml, this);
             return o;
         }
         
@@ -61,7 +61,7 @@ package org.apache.flex.xml
          *  @param context Object An object containing useful information.
          *  @param parentTag IParentTagHandler The parent for the instances that are created.
          */
-        public function processChildren(xml:XML, context:Object, parentTag:IParentTagHandler):void
+        public function processChildren(xml:XML, parentTag:IParentTagHandler):void
         {
             var xmlList:XMLList = xml.children();
             var n:int = xmlList.length();
@@ -72,7 +72,7 @@ package org.apache.flex.xml
                     ITextTagHandler(parentTag).setText(xmlList[i].toString());
                 else
                 {
-                    var tagHandler:ITagHandler = processXMLTag(xmlList[i], context);
+                    var tagHandler:ITagHandler = processXMLTag(xmlList[i]);
                     parentTag.addChild(tagHandler);
                 }
             }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/tests/AntTest.mxml
----------------------------------------------------------------------
diff --git a/ant_on_air/tests/AntTest.mxml b/ant_on_air/tests/AntTest.mxml
index 670ccf4..6e60e05 100644
--- a/ant_on_air/tests/AntTest.mxml
+++ b/ant_on_air/tests/AntTest.mxml
@@ -85,13 +85,13 @@ limitations under the License.
             
             private function completeHandler(event:Event):void
             {
-                if (Ant.project.status)
+                if (Ant.currentAnt.project.status)
                     output("SUCCESS!");
                 else
                     output("FAILURE!");
                 
                 if (exitwhendone)
-                    NativeApplication.nativeApplication.exit(Ant.project.status ? 0 : 255);
+                    NativeApplication.nativeApplication.exit(Ant.currentAnt.project.status ? 0 : 255);
             }
             
             private var ant:Ant;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/4b53170a/ant_on_air/tests/test.xml
----------------------------------------------------------------------
diff --git a/ant_on_air/tests/test.xml b/ant_on_air/tests/test.xml
index edab88c..46e2d74 100644
--- a/ant_on_air/tests/test.xml
+++ b/ant_on_air/tests/test.xml
@@ -134,7 +134,7 @@
             </condition>
         </fail>
         <mkdir dir="${basedir}/temp/untar" />
-        <untar src="${basedir}/temp/apache-rat-0.10-src.tar.gz" dest="${basedir}/temp/untar" if="isMac" />
+        <untar src="${basedir}/temp/apache-rat-0.10-src.tar.gz" dest="${basedir}/temp/untar" />
         <fail message="untar did not result in expected files">
             <condition>
                 <not>
@@ -170,7 +170,7 @@
                 <equals arg1="${replacedkey1}" arg2="somevalue1" />
             </condition>
         </fail>
-        <input message="Ok to delete temp directory?" unless="exitwhendone"
+        <input message="Ok to delete temp directory?"
             validargs="yn"
             addproperty="oktodelete" />
         <fail message="you were supposed to hit 'y'" >