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/10 00:30:14 UTC

[12/14] git commit: [flex-utilities] [refs/heads/develop] - get basic filesets to copy

get basic filesets to copy


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

Branch: refs/heads/develop
Commit: 3a3f2326070cadf1cd6b6c14f1a916d74b0ce9df
Parents: a4728f7
Author: Alex Harui <ah...@apache.org>
Authored: Mon Dec 9 14:01:53 2013 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Dec 9 14:01:53 2013 -0800

----------------------------------------------------------------------
 ant_on_air/src/org/apache/flex/ant/tags/Copy.as | 36 +++++++--
 .../src/org/apache/flex/ant/tags/FileSet.as     |  1 +
 .../ant/tags/filesetClasses/DirectoryScanner.as | 77 ++++++++++----------
 .../flex/ant/tags/filesetClasses/FileUtils.as   |  8 +-
 .../ant/tags/filesetClasses/StringTokenizer.as  | 18 +++--
 .../tags/supportClasses/FileSetTaskHandler.as   |  5 +-
 ant_on_air/tests/TestTarget.as                  |  7 ++
 ant_on_air/tests/test.xml                       | 20 +++++
 8 files changed, 117 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/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 4bdb0cc..3636ad0 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
@@ -18,6 +18,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.ant.tags
 {
+    import flash.filesystem.File;
+    
     import mx.core.IFlexModuleFactory;
     
     import org.apache.flex.ant.Ant;
@@ -46,7 +48,7 @@ package org.apache.flex.ant.tags
             if (name == "file")
                 fileName = value;
             else if (name == "toFile")
-                toFileName == value;
+                toFileName = value;
             else if (name == "toDir")
                 toDirName = value;
             else if (name == "overwrite")
@@ -57,17 +59,37 @@ package org.apache.flex.ant.tags
 
         override protected function actOnFile(dir:String, fileName:String):void
         {
+            var srcName:String;
+            if (dir)
+                srcName = dir + File.separator + fileName;
+            else
+                srcName = fileName;
+            var srcFile:File = File.applicationDirectory.resolvePath(srcName);
             
+            var destName:String;
+            if (toDirName)
+                destName = toDirName + File.separator + fileName;
+            else
+                destName = toFileName;
+            var destFile:File = File.applicationDirectory.resolvePath(destName);
+                
+            srcFile.copyTo(destFile, overwrite);
         }
         
-        /**
-         *  Do the work.
-         *  TaskHandlers lazily create their children so
-         *  super.execute() should be called before
-         *  doing any real work. 
-         */
         override public function execute():Boolean
         {
+            var retVal:Boolean = super.execute();
+            if (numChildren > 0)
+                return retVal;
+            
+            var srcFile:File = File.applicationDirectory.resolvePath(fileName);
+            var destFile:File = File.applicationDirectory.resolvePath(toFileName);;
+            //var destDir:File = destFile.parent;
+            //var resolveName:String = destFile.nativePath.substr(destFile.nativePath.lastIndexOf(File.separator) + 1);
+            //destDir.resolvePath(resolveName);
+            
+            
+            srcFile.copyTo(destFile, overwrite);
             return true;
         }
     }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/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 4a01395..c6fb109 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
@@ -53,6 +53,7 @@ package org.apache.flex.ant.tags
         {
             if (_value) return _value;
             
+            ant.processChildren(xml, context, 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/3a3f2326/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 e6f1927..379bb6c 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
@@ -526,11 +526,14 @@ package org.apache.flex.ant.tags.filesetClasses
          * @since Ant 1.6
          */
         public static function resetDefaultExcludes():Vector.<String> {
-                defaultExcludes.length = 0;
+                var arr:Vector.<String> = defaultExcludes;
+                if (!arr)
+                    arr = new Vector.<String>();
+                arr.length = 0;
                 for (var i:int = 0; i < DEFAULTEXCLUDES.length; i++) {
-                    defaultExcludes.push(DEFAULTEXCLUDES[i]);
+                    arr.push(DEFAULTEXCLUDES[i]);
                 }
-                return defaultExcludes;
+                return arr;
         }
         
         /**
@@ -819,6 +822,8 @@ package org.apache.flex.ant.tags.filesetClasses
                     excludes = nullExcludes ? null : excludes;
             } catch (ex:IOException) {
                 throw new BuildException(ex.message);
+            } catch (e:Error) {
+                throw new BuildException(e.message);
             } finally {
                 basedir = savedBase;
             }
@@ -843,14 +848,14 @@ package org.apache.flex.ant.tags.filesetClasses
                         pattern;
                 }
             }
-            for each (var entry:Dictionary in includeNonPatterns.entrySet()) {
+            for each (var entry:Object in includeNonPatterns) {
                 for (var p:String in entry)
                 {
                     pattern = p;
                     break;
                 }
                 if (!shouldSkipPattern(pattern)) {
-                    newroots[entry.getValue()] = pattern;
+                    newroots[entry[pattern]] = pattern;
                 }
             }
             
@@ -870,13 +875,9 @@ package org.apache.flex.ant.tags.filesetClasses
                 }
                 // only scan directories that can include matched files or
                 // directories
-                for each (entry in newroots.entrySet()) {
+                for (entry in newroots) {
                     var currentPath:TokenizedPath;
-                    for (p in entry)
-                    {
-                        currentPath = p as TokenizedPath;
-                        break;
-                    }
+                    currentPath = entry as TokenizedPath;
                     var currentelement:String = currentPath.toString();
                     if (basedir == null
                         && !FileUtils.isAbsolutePath(currentelement)) {
@@ -895,7 +896,7 @@ package org.apache.flex.ant.tags.filesetClasses
                                 ? myCanonFile.nativePath
                                 : FILE_UTILS.removeLeadingPath(canonBase,
                                     myCanonFile);
-                            if (!path == currentelement) {
+                            if (path != currentelement) {
                                 myfile = currentPath.findFile(basedir, true);
                                 if (myfile != null && basedir != null) {
                                     currentelement = FILE_UTILS.removeLeadingPath(
@@ -941,10 +942,7 @@ package org.apache.flex.ant.tags.filesetClasses
                             }
                         } else {
                             var originalpattern:String;
-                            for (var q:* in entry)
-                            {
-                                originalpattern = entry[q];
-                            }
+                                originalpattern = newroots[entry] as String;
                             var included:Boolean = isCaseSensitive()
                                 ? originalpattern == currentelement
                                 : originalpattern.toUpperCase() == currentelement.toUpperCase();
@@ -1089,21 +1087,21 @@ package org.apache.flex.ant.tags.filesetClasses
             if (dir == null) {
                 throw new BuildException("dir must not be null.");
             }
-            var arr:Array = dir.getDirectoryListing();
+            else if (!dir.exists) {
+                throw new BuildException(dir + DOES_NOT_EXIST_POSTFIX);
+            } else if (!dir.isDirectory) {
+                throw new BuildException(dir + " is not a directory.");
+            }
+            try {
+                var arr:Array = dir.getDirectoryListing();                
+            } catch (e:Error) {
+                throw new BuildException("IO error scanning directory '"
+                    + dir.nativePath + "'");
+            }
             var arr2:Array = [];
             for each (var f:File in arr)
-                arr2.push(f.nativePath);
+                arr2.push(f.name);
             var newfiles:Vector.<String> = Vector.<String>(arr2);;
-            if (newfiles == null) {
-                if (!dir.exists) {
-                    throw new BuildException(dir + DOES_NOT_EXIST_POSTFIX);
-                } else if (!dir.isDirectory) {
-                    throw new BuildException(dir + " is not a directory.");
-                } else {
-                    throw new BuildException("IO error scanning directory '"
-                        + dir.nativePath + "'");
-                }
-            }
             _scandir(dir, path, fast, newfiles, new Vector.<String>());
         }
         
@@ -1150,11 +1148,16 @@ package org.apache.flex.ant.tags.filesetClasses
                     name = vpath + newfiles[i];
                     var newPath:TokenizedPath = new TokenizedPath("").initAsChild(path, newfiles[i]);
                     file = new File(dir.nativePath + File.separator + newfiles[i]);
-                    var arr:Array = file.getDirectoryListing();
+                    var arr:Array = null;
                     var arr2:Array = [];
-                    for each (var f:File in arr)
-                        arr2.push(f.nativePath);
-                    var children:Vector.<String> = Vector.<String>(arr2);
+                    var children:Vector.<String> = null;
+                    if (file.isDirectory)
+                    {
+                        arr = file.getDirectoryListing();
+                        for each (var f:File in arr)
+                            arr2.push(f.name);
+                        children = Vector.<String>(arr2);
+                    }
                     if (children == null || (children.length == 0 && !file.isDirectory)) {
                         if (isIncludedPath(newPath)) {
                             accountForIncludedFile(newPath, file);
@@ -1272,8 +1275,8 @@ package org.apache.flex.ant.tags.filesetClasses
             ensureNonPatternSetsReady();
             
             if (isCaseSensitive()
-                ? includeNonPatterns.containsKey(path.toString())
-                : includeNonPatterns.containsKey(path.toString().toUpperCase())) {
+                ? includeNonPatterns.hasOwnProperty(path.toString())
+                : includeNonPatterns.hasOwnProperty(path.toString().toUpperCase())) {
                 return true;
             }
             for (var i:int = 0; i < includePatterns.length; i++) {
@@ -1668,8 +1671,8 @@ package org.apache.flex.ant.tags.filesetClasses
          * @since Ant 1.6
          */
         private function clearCaches():void {
-            includeNonPatterns.clear();
-            excludeNonPatterns.clear();
+            includeNonPatterns = {};
+            excludeNonPatterns = {};
             includePatterns = null;
             excludePatterns = null;
             areNonPatternSetsReady = false;
@@ -1698,7 +1701,7 @@ package org.apache.flex.ant.tags.filesetClasses
          * @since Ant 1.8.0
          */
         private function fillNonPatternSet(map:Object, patterns:Vector.<String>):Vector.<TokenizedPattern> {
-            var al:Vector.<TokenizedPattern> = new Vector.<TokenizedPattern>(patterns.length);
+            var al:Vector.<TokenizedPattern> = new Vector.<TokenizedPattern>();
             for (var i:int = 0; i < patterns.length; i++) {
                 if (!SelectorUtils.hasWildcards(patterns[i])) {
                     var s:String = isCaseSensitive()

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/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 d0409ca..146b972 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
@@ -175,7 +175,7 @@ package org.apache.flex.ant.tags.filesetClasses
             var sep:String = File.separator;
             filename = filename.replace(/\//g, sep).replace(/\\/g, sep);
             var c:String = filename.charAt(0);
-            if (ON_DOS)
+            if (!ON_DOS)
                 return (c == sep);
             
             if (c == sep) {
@@ -258,7 +258,7 @@ package org.apache.flex.ant.tags.filesetClasses
                     continue;
                 }
                 if (".." == thisToken) {
-                    if (s.size() < 2) {
+                    if (s.length < 2) {
                         // Cannot resolve it, so skip it.
                         return new File(path);
                     }
@@ -268,14 +268,14 @@ package org.apache.flex.ant.tags.filesetClasses
                 }
             }
             var sb:String = "";
-            var size:int = s.size();
+            var size:int = s.length;
             for (var i:int = 0; i < size; i++) {
                 if (i > 1) {
                     // not before the filesystem root and not after it, since root
                     // already contains one
                     sb += File.separator;
                 }
-                sb += s.elementAt(i);
+                sb += s[i];
             }
             return new File(sb);
         }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/StringTokenizer.as
----------------------------------------------------------------------
diff --git a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/StringTokenizer.as b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/StringTokenizer.as
index fcd97ba..02ddff5 100644
--- a/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/StringTokenizer.as
+++ b/ant_on_air/src/org/apache/flex/ant/tags/filesetClasses/StringTokenizer.as
@@ -27,29 +27,35 @@ package org.apache.flex.ant.tags.filesetClasses
             var c1:int = 0;
             var c2:int = 0;
             var n:int = s.length;
-            while (c1 < n)
+            while (c2 < n)
             {
                 var c:String = s.charAt(c2);
                 if (delims.indexOf(c) != -1)
                 {
-                    tokens.push(s.substring(c1, c2 - 1));
+                    tokens.push(s.substring(c1, c2));
                     c1 = c2;
-                    while (c1 < n)
+                    while (c2 < n)
                     {
                         c = s.charAt(c2);
                         if (delims.indexOf(c) == -1)
                         {
                             if (returnDelims)
-                            {
-                                tokens.push(s.substring(c1, c2 - 1))
-                            }
+                                tokens.push(s.substring(c1, c2))
                             c1 = c2;
                             break;
                         }
+                        c2++;
+                    }
+                    if (returnDelims && c1 < c2)
+                    {
+                        tokens.push(s.substring(c1, c2));
+                        c1 = c2;
                     }
                 }
                 c2++;
             }
+            if (c1 < n)
+                tokens.push(s.substring(c1))
         }
         
         private var tokens:Vector.<String>;

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/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 c399e52..c0320a8 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
@@ -18,6 +18,8 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.ant.tags.supportClasses
 {
+    import flash.filesystem.File;
+    
     import org.apache.flex.ant.tags.FileSet;
     
     /**
@@ -47,9 +49,10 @@ package org.apache.flex.ant.tags.supportClasses
                     var list:Vector.<String> = fs.value as Vector.<String>;
                     if (list)
                     {
+                        var dir:File = new File(fs.dir);
                         for each (var fileName:String in list)
                         {
-                            actOnFile(fs.dir, fileName);
+                            actOnFile(dir.nativePath, fileName);
                         }
                     }
                 }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/ant_on_air/tests/TestTarget.as
----------------------------------------------------------------------
diff --git a/ant_on_air/tests/TestTarget.as b/ant_on_air/tests/TestTarget.as
index 1235d41..722986a 100644
--- a/ant_on_air/tests/TestTarget.as
+++ b/ant_on_air/tests/TestTarget.as
@@ -23,9 +23,16 @@ package
     import flash.events.Event;
     import flash.filesystem.File;
     import org.apache.flex.ant.Ant;
+    import org.apache.flex.ant.tags.Available; Available.init(null);
     import org.apache.flex.ant.tags.Condition; Condition.init(null);
+    import org.apache.flex.ant.tags.Copy; Copy.init(null);
+    import org.apache.flex.ant.tags.Delete; Delete.init(null);
     import org.apache.flex.ant.tags.Echo; Echo.init(null);
+    import org.apache.flex.ant.tags.FileSet; FileSet.init(null);
+    import org.apache.flex.ant.tags.FileSetExclude; FileSetExclude.init(null);
+    import org.apache.flex.ant.tags.FileSetInclude; FileSetInclude.init(null);
     import org.apache.flex.ant.tags.IsSet; IsSet.init(null);
+    import org.apache.flex.ant.tags.Mkdir; Mkdir.init(null);
     import org.apache.flex.ant.tags.OS; OS.init(null);
     import org.apache.flex.ant.tags.Project; Project.init(null);
     import org.apache.flex.ant.tags.Property; Property.init(null);

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3a3f2326/ant_on_air/tests/test.xml
----------------------------------------------------------------------
diff --git a/ant_on_air/tests/test.xml b/ant_on_air/tests/test.xml
index 5d55451..8114225 100644
--- a/ant_on_air/tests/test.xml
+++ b/ant_on_air/tests/test.xml
@@ -45,6 +45,26 @@
 
 	<target name="test">
 		<echo>FLEX_HOME is ${FLEX_HOME}. DEBUG is ${DEBUG_FLAG}. The OS is ${theOS}</echo>
+        <mkdir dir="${basedir}/temp" />
+        <copy file="${basedir}/test.xml" toFile="${basedir}/temp/copied.xml" />
+        <available file="${basedir}/temp/copied.xml" property="copied.doesnt.exist" value="got copied" />
+        <echo>copied ${copied.doesnt.exist}.  Should say: got copied</echo>
+        <copy toDir="${basedir}/temp">
+            <fileset dir="${basedir}/../src">
+                <include name="**/**" />
+                <exclude name="**/Ant.as" />
+            </fileset>
+        </copy>
+        <available file="${basedir}/temp/org/apache/flex/ant/Ant.as" property="ant.doesnt.exist" value="got copied" />
+        <echo>Ant.as ${ant.doesnt.exist}. Should NOT say: got copied</echo>
+        <available file="${basedir}/temp/org/apache/flex/ant/tags/Project.as" property="project.doesnt.exist" value="got copied" />
+        <echo>Project.as ${project.doesnt.exist}. Should say: got copied</echo>
+        <delete file="${basedir}/temp/copied.xml" />
+        <available file="${basedir}/temp/copied.xml" property="copied.doesnt.exist.after.delete" value="didn't get deleted" />
+        <echo>copied.xml ${copied.doesnt.exist.after.delete}. Should NOT say: didn't get deleted</echo>
+        <delete dir="${basedir}/temp" />
+        <available file="${basedir}/temp/org/apache/flex/ant/tags/Project.as" property="project.doesnt.exist.after.delete" value="didn't get deleted" />
+        <echo>Project.as ${project.doesnt.exist.after.delete}. Should NOT say: didn't get deleted</echo>
 	</target>
 
     <target name="build" depends="init,compile"