flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aha...@apache.org
Subject [47/55] [abbrv] git commit: [flex-asjs] [refs/heads/develop] - refactor classes into more swcs and get AS build running (JS build will be fixed in later commit)
Date Wed, 15 Apr 2015 21:43:52 GMT
refactor classes into more swcs and get AS build running (JS build will be fixed in later commit)


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

Branch: refs/heads/develop
Commit: c84daedb27af3caad0564170173680af5e60ddcc
Parents: c548870
Author: Alex Harui <aharui@apache.org>
Authored: Tue Apr 14 12:51:42 2015 -0700
Committer: Alex Harui <aharui@apache.org>
Committed: Tue Apr 14 12:51:42 2015 -0700

----------------------------------------------------------------------
 build.xml                                       |  10 +-
 frameworks/air-config-template.xml              |   6 +-
 frameworks/air-config.xml                       |   6 +-
 frameworks/build.xml                            | 108 +++-
 frameworks/flex-config-template.xml             |   8 +-
 frameworks/flex-config.xml                      |   8 +-
 frameworks/js/.jshintrc                         |  14 +
 .../projects/Binding/as/src/BindingClasses.as   | 126 +----
 .../apache/flex/binding/ViewBaseDataBinding.as  | 296 +++++++++++
 .../flex/binding/ApplicationDataBinding.as      | 329 ++++++++++++
 .../apache/flex/binding/ContainerDataBinding.as | 382 ++++++++++++++
 .../flex/binding/MXMLBeadViewBaseDataBinding.as | 328 ++++++++++++
 frameworks/projects/Binding/basic-manifest.xml  |  31 ++
 frameworks/projects/Binding/build.xml           |  81 +++
 frameworks/projects/Binding/compile-config.xml  |  77 +++
 .../projects/Charts/as/src/ChartsClasses.as     | 112 +---
 .../projects/Charts/asjs/ChartsClasses.as       |  95 ----
 frameworks/projects/Charts/asjs/defaults.css    | 102 ++++
 .../Charts/asjs/src/ChartASJSClasses.as         |  61 +++
 frameworks/projects/Charts/basic-manifest.xml   |  50 ++
 frameworks/projects/Charts/build.xml            |  81 +++
 frameworks/projects/Charts/compile-config.xml   |  82 +++
 .../Collections/as/src/CollectionsClasses.as    | 127 +----
 .../org/apache/flex/collections/ICollection.as  |  43 ++
 .../flex/collections/IStringCollection.as       |  43 ++
 .../apache/flex/collections/LazyCollection.as   | 248 +++++++++
 .../collections/converters/IItemConverter.as    |  49 ++
 .../collections/converters/JSONItemConverter.as |  74 +++
 .../flex/collections/parsers/IInputParser.as    |  50 ++
 .../flex/collections/parsers/JSONInputParser.as |  54 ++
 .../as/src/org/apache/flex/data/ICollection.as  |  43 --
 .../org/apache/flex/data/IStringCollection.as   |  43 --
 .../projects/Collections/basic-manifest.xml     |  28 +
 frameworks/projects/Collections/build.xml       |  81 +++
 .../projects/Collections/compile-config.xml     |  76 +++
 frameworks/projects/Core/as/basic-manifest.xml  | 110 ----
 frameworks/projects/Core/as/build.xml           |  79 ---
 frameworks/projects/Core/as/compile-config.xml  | 107 ----
 frameworks/projects/Core/as/defaults.css        | 514 -------------------
 frameworks/projects/Core/as/mx-manifest.xml     |  26 -
 frameworks/projects/Core/as/src/CoreClasses.as  | 162 ++----
 .../as/src/org/apache/flex/core/FormatBase.as   | 115 -----
 .../apache/flex/core/IScrollingLayoutParent.as  |  71 ---
 .../org/apache/flex/core/ViewBaseDataBinding.as | 296 -----------
 .../as/src/org/apache/flex/events/DragEvent.as  | 317 ------------
 .../as/src/org/apache/flex/svg/TextButton.as    |  30 --
 frameworks/projects/Core/as/svg-manifest.xml    |  24 -
 .../projects/Core/asjs/basic-manifest.xml       |  67 ---
 .../projects/Core/asjs/src/CoreASJSClasses.as   |  38 ++
 .../projects/Core/asjs/src/CoreClasses.as       |  95 ----
 .../apache/flex/core/ApplicationDataBinding.as  | 328 ------------
 .../apache/flex/core/ContainerDataBinding.as    | 381 --------------
 .../asjs/src/org/apache/flex/core/DropType.as   |  64 ---
 .../org/apache/flex/core/MXMLBeadViewBase.as    | 320 ------------
 .../flex/core/MXMLBeadViewBaseDataBinding.as    | 327 ------------
 .../flex/core/StatesWithTransitionsImpl.as      | 299 -----------
 .../asjs/tests/FlexUnitFlexJSApplication.mxml   |  46 --
 frameworks/projects/Core/asjs/tests/build.xml   | 141 -----
 .../tests/flexUnitTests/DataGridColumnTester.as |  27 -
 .../flexUnitTests/DataGridColumnTesterTest.as   |  55 --
 frameworks/projects/Core/basic-manifest.xml     |  37 ++
 frameworks/projects/Core/build.xml              |  82 +++
 frameworks/projects/Core/compile-config.xml     |  83 +++
 frameworks/projects/Core/mx-manifest.xml        |  26 +
 .../projects/CreateJS/as/createjs-manifest.xml  |  31 --
 frameworks/projects/CreateJS/as/defaults.css    |  36 ++
 .../projects/CreateJS/as/src/CreateJSClasses.as | 127 +----
 frameworks/projects/CreateJS/build.xml          |  81 +++
 frameworks/projects/CreateJS/compile-config.xml |  79 +++
 .../projects/CreateJS/createjs-manifest.xml     |  31 ++
 .../projects/DragDrop/as/src/DragDropClasses.as | 128 +----
 .../as/src/org/apache/flex/events/DragEvent.as  | 317 ++++++++++++
 .../DragDrop/asjs/src/DragDropASJSClasses.as    |  33 ++
 .../asjs/src/org/apache/flex/core/DropType.as   |  64 +++
 .../beads/controllers/DragMouseController.as    | 261 ++++++++++
 .../beads/controllers/DropMouseController.as    | 181 +++++++
 frameworks/projects/DragDrop/basic-manifest.xml |  27 +
 frameworks/projects/DragDrop/build.xml          |  81 +++
 frameworks/projects/DragDrop/compile-config.xml |  78 +++
 .../projects/Effects/as/src/EffectsClasses.as   | 128 +----
 .../projects/Effects/asjs/EffectsClasses.as     |  95 ----
 .../Effects/asjs/src/EffectsASJSClasses.as      |  37 ++
 .../flex/core/StatesWithTransitionsImpl.as      | 299 +++++++++++
 frameworks/projects/Effects/basic-manifest.xml  |  32 ++
 frameworks/projects/Effects/build.xml           |  81 +++
 frameworks/projects/Effects/compile-config.xml  |  78 +++
 .../Formatters/as/src/FormattersClasses.as      | 126 +----
 .../as/src/org/apache/flex/core/FormatBase.as   | 115 +++++
 .../asjs/src/FormattersASJSClasses.as           |  36 ++
 .../flex/html/accessories/CurrencyFormatter.as  | 215 ++++++++
 .../html/accessories/DateFormatMMDDYYYYBead.as  | 158 ++++++
 .../flex/html/accessories/NumberFormatter.as    | 210 ++++++++
 .../flex/html/beads/FormatableLabelView.as      |  90 ++++
 .../flex/html/beads/FormatableTextInputView.as  |  91 ++++
 .../projects/Formatters/basic-manifest.xml      |  25 +
 frameworks/projects/Formatters/build.xml        |  81 +++
 .../projects/Formatters/compile-config.xml      |  79 +++
 frameworks/projects/GoogleMaps/as/defaults.css  |  28 +
 .../GoogleMaps/as/src/GoogleMapsClasses.as      | 127 +----
 frameworks/projects/GoogleMaps/build.xml        |  81 +++
 .../projects/GoogleMaps/compile-config.xml      |  78 +++
 .../projects/GoogleMaps/google-manifest.xml     |  24 +
 .../projects/Graphics/as/src/GraphicsClasses.as | 117 +----
 frameworks/projects/Graphics/basic-manifest.xml |  34 ++
 frameworks/projects/Graphics/build.xml          |  81 +++
 frameworks/projects/Graphics/compile-config.xml |  76 +++
 frameworks/projects/HTML/as/defaults.css        | 431 ++++++++++++++++
 frameworks/projects/HTML/as/src/HTMLClasses.as  |  51 +-
 .../apache/flex/core/IScrollingLayoutParent.as  |  71 +++
 .../src/org/apache/flex/html/beads/AlertView.as |   2 +-
 .../flex/html/beads/NumericStepperView.as       |   4 +-
 .../as/src/org/apache/flex/svg/TextButton.as    |  30 ++
 frameworks/projects/HTML/asjs/HTMLClasses.as    |  95 ----
 .../projects/HTML/asjs/src/HTMLASJSClasses.as   |  52 ++
 .../org/apache/flex/html/MXMLBeadViewBase.as    | 323 ++++++++++++
 .../flex/html/accessories/CurrencyFormatter.as  | 215 --------
 .../html/accessories/DateFormatMMDDYYYYBead.as  | 158 ------
 .../flex/html/accessories/NumberFormatter.as    | 210 --------
 .../flex/html/beads/FormatableLabelView.as      |  90 ----
 .../flex/html/beads/FormatableTextInputView.as  |  91 ----
 .../beads/controllers/DragMouseController.as    | 261 ----------
 .../beads/controllers/DropMouseController.as    | 181 -------
 .../asjs/tests/FlexUnitFlexJSApplication.mxml   |  46 ++
 frameworks/projects/HTML/asjs/tests/build.xml   | 141 +++++
 .../tests/flexUnitTests/DataGridColumnTester.as |  27 +
 .../flexUnitTests/DataGridColumnTesterTest.as   |  55 ++
 frameworks/projects/HTML/basic-manifest.xml     |  98 ++++
 frameworks/projects/HTML/build.xml              |  82 +++
 frameworks/projects/HTML/compile-config.xml     |  87 ++++
 frameworks/projects/HTML/svg-manifest.xml       |  24 +
 frameworks/projects/HTML5/as/defaults.css       |  68 +++
 frameworks/projects/HTML5/as/html5-manifest.xml |  35 --
 .../projects/HTML5/as/src/HTML5Classes.as       | 127 +----
 frameworks/projects/HTML5/build.xml             |  81 +++
 frameworks/projects/HTML5/compile-config.xml    |  79 +++
 frameworks/projects/HTML5/html5-manifest.xml    |  35 ++
 frameworks/projects/JQuery/as/defaults.css      |  44 ++
 .../projects/JQuery/as/jquery-manifest.xml      |  30 --
 .../projects/JQuery/as/src/JQueryClasses.as     | 127 +----
 frameworks/projects/JQuery/build.xml            |  81 +++
 frameworks/projects/JQuery/compile-config.xml   |  79 +++
 frameworks/projects/JQuery/jquery-manifest.xml  |  30 ++
 .../projects/Mobile/as/cordova-manifest.xml     |  28 -
 .../projects/Mobile/as/src/MobileClasses.as     | 122 +----
 .../projects/Mobile/asjs/MobileClasses.as       |  95 ----
 .../Mobile/asjs/src/MobileASJSClasses.as        |  39 ++
 frameworks/projects/Mobile/basic-manifest.xml   |  29 ++
 frameworks/projects/Mobile/build.xml            |  81 +++
 frameworks/projects/Mobile/compile-config.xml   |  83 +++
 frameworks/projects/Mobile/cordova-manifest.xml |  28 +
 .../projects/Network/as/src/NetworkClasses.as   | 127 +----
 .../as/src/org/apache/flex/net/IInputParser.as  |  50 --
 .../src/org/apache/flex/net/IItemConverter.as   |  49 --
 .../src/org/apache/flex/net/JSONInputParser.as  |  54 --
 .../org/apache/flex/net/JSONItemConverter.as    |  74 ---
 .../flex/net/dataConverters/LazyCollection.as   | 249 ---------
 frameworks/projects/Network/basic-manifest.xml  |  27 +
 frameworks/projects/Network/build.xml           |  81 +++
 frameworks/projects/Network/compile-config.xml  |  76 +++
 159 files changed, 8817 insertions(+), 7912 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index 3822577..dd3f0f1 100644
--- a/build.xml
+++ b/build.xml
@@ -160,8 +160,8 @@
        clean does not remove these since they don't change often and the downloads take time.
     -->
     <target name="thirdparty-downloads" description="Downloads all the required thirdparty code.">
-        <ant dir="${basedir}/frameworks/as" target="thirdparty-downloads"/>        
-        <ant dir="${basedir}/frameworks/js" target="thirdparty-downloads"/>
+        <ant dir="${basedir}/frameworks" target="thirdparty-downloads"/>
+        <!-- <ant dir="${basedir}/frameworks/js" target="thirdparty-downloads"/> -->
         <!-- don't ask again about these since we just did if these weren't already set -->	    
 	    <property name="build.noprompt" value="set" />
     </target>
@@ -316,8 +316,8 @@
     </target>
 	
     <target name="create-config" description="Create flex config file">
-        <ant dir="${basedir}/frameworks/as" target="flex-config" />
-        <ant dir="${basedir}/frameworks/as" target="air-config" />
+        <ant dir="${basedir}/frameworks" target="flex-config" />
+        <ant dir="${basedir}/frameworks" target="air-config" />
     </target>
 	
     <target name="setup-binary-release" depends="thirdparty-clean"
@@ -405,7 +405,7 @@
     -->
 
     <target name="frameworks-as" description="Full build of all Actionscript framework SWCs, including resource bundles and themes">
-        <ant dir="${basedir}/frameworks/as">
+        <ant dir="${basedir}/frameworks">
             <property name="locale" value="${locale}"/>
         </ant>
     </target>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/air-config-template.xml
----------------------------------------------------------------------
diff --git a/frameworks/air-config-template.xml b/frameworks/air-config-template.xml
index a58ad0f..20ed8ec 100644
--- a/frameworks/air-config-template.xml
+++ b/frameworks/air-config-template.xml
@@ -77,7 +77,7 @@
       
       <!-- List of SWC files or directories that contain SWC files. -->
       <library-path>
-         <path-element>as/libs</path-element>
+         <path-element>libs</path-element>
          <path-element>{airHome}/frameworks/libs/air</path-element>
       </library-path>
      
@@ -94,13 +94,13 @@
          <namespace>
             <uri>library://ns.apache.org/flexjs/basic</uri>
             
-            <manifest>as/projects/FlexJSUI/basic-manifest.xml</manifest>
+            <manifest>projects/Core/basic-manifest.xml</manifest>
          
         </namespace>                                                 
          <namespace>
             <uri>library://ns.apache.org/flexjs/html5</uri>
             
-            <manifest>as/projects/FlexJSUI/html5-manifest.xml</manifest>
+            <manifest>projects/HTML5/html5-manifest.xml</manifest>
          
         </namespace>   
       </namespaces>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/air-config.xml
----------------------------------------------------------------------
diff --git a/frameworks/air-config.xml b/frameworks/air-config.xml
index e79cb73..789c730 100644
--- a/frameworks/air-config.xml
+++ b/frameworks/air-config.xml
@@ -77,7 +77,7 @@
       
       <!-- List of SWC files or directories that contain SWC files. -->
       <library-path>
-         <path-element>as/libs</path-element>
+         <path-element>libs</path-element>
          <path-element>{airHome}/frameworks/libs/air</path-element>
       </library-path>
      
@@ -94,13 +94,13 @@
          <namespace>
             <uri>library://ns.apache.org/flexjs/basic</uri>
             
-            <manifest>as/projects/FlexJSUI/basic-manifest.xml</manifest>
+            <manifest>projects/Core/basic-manifest.xml</manifest>
          
         </namespace>                                                 
          <namespace>
             <uri>library://ns.apache.org/flexjs/html5</uri>
             
-            <manifest>as/projects/FlexJSUI/html5-manifest.xml</manifest>
+            <manifest>projects/HTML5/html5-manifest.xml</manifest>
          
         </namespace>   
       </namespaces>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/build.xml
----------------------------------------------------------------------
diff --git a/frameworks/build.xml b/frameworks/build.xml
index 46e2145..d117ce5 100644
--- a/frameworks/build.xml
+++ b/frameworks/build.xml
@@ -23,9 +23,9 @@
     build_framework.xml is renamed to build.xml when it is packaged.
     It is used to build the frameworks directory from the zip file. 
 -->
-<project name="frameworks-as" default="main" basedir=".">
+<project name="frameworks" default="main" basedir=".">
 
-    <property name="FLEXJS_HOME" location="../.."/>
+    <property name="FLEXJS_HOME" location=".."/>
 
     <!-- Required for OSX 10.6 / Snow Leopard Performance. -->
     <!-- Java 7 on Mac requires OSX 10.7.3 or higher and is 64-bit only -->
@@ -75,9 +75,23 @@
     </target>
     
     <target name="compile" description="Builds all SWCs but not their resource bundles">
-        <antcall target="flexjsui"/>
+        <!-- order may matter due to dependencies -->
         <antcall target="mxmlcclasses"/>
-        <antcall target="flexjsjx"/>
+        <antcall target="Core"/>
+        <antcall target="Graphics"/>
+        <antcall target="Binding"/>
+        <antcall target="HTML"/>
+        <antcall target="Charts"/>
+        <antcall target="Collections"/>
+        <antcall target="CreateJS"/>
+        <antcall target="DragDrop"/>
+        <antcall target="Effects"/>
+        <antcall target="Formatters"/>
+        <antcall target="GoogleMaps"/>
+        <antcall target="HTML5"/>
+        <antcall target="JQuery"/>
+        <antcall target="Mobile"/>
+        <antcall target="Network"/>
     </target>
     
     <target name="other.locales" description ="Builds resource SWCs for all locales">
@@ -85,7 +99,7 @@
     </target>
     
     <target name="doc" >
-        <ant dir="${basedir}/projects/FlexJSUI" target="doc" />
+        <ant dir="${basedir}/projects/Core" target="doc" />
     </target>
    
     <!--
@@ -100,8 +114,22 @@
     
     <target name="clean" description="Cleans all SWCs and their resource bundles">
         <!-- Delete output from SWC projects -->
-        <ant dir="${basedir}/projects/FlexJSUI" target="clean"/>
-        <ant dir="${basedir}/projects/MXMLCClasses" target="clean"/>
+        <ant dir="${basedir}/projects/Binding" target="clean"/>
+        <ant dir="${basedir}/projects/Charts" target="clean"/>
+        <ant dir="${basedir}/projects/Collections" target="clean"/>
+        <ant dir="${basedir}/projects/Core" target="clean"/>
+        <ant dir="${basedir}/projects/CreateJS" target="clean"/>
+        <ant dir="${basedir}/projects/DragDrop" target="clean"/>
+        <ant dir="${basedir}/projects/Effects" target="clean"/>
+        <ant dir="${basedir}/projects/Formatters" target="clean"/>
+        <ant dir="${basedir}/projects/GoogleMaps" target="clean"/>
+        <ant dir="${basedir}/projects/Graphics" target="clean"/>
+        <ant dir="${basedir}/projects/HTML" target="clean"/>
+        <ant dir="${basedir}/projects/HTML5" target="clean"/>
+        <ant dir="${basedir}/projects/JQuery" target="clean"/>
+        <ant dir="${basedir}/projects/Mobile" target="clean"/>
+        <ant dir="${basedir}/projects/Network" target="clean"/>
+        <ant dir="${basedir}/as/projects/MXMLCClasses" target="clean"/>
 
         <!-- delete the FlashBuilder executable directories -->
         <delete includeemptydirs="true" failonerror="false">
@@ -121,20 +149,72 @@
         </delete> 
     </target>
     
-    <target name="flexjsjx" description="Clean build of FlexJSJX.swc">
-        <ant dir="${basedir}/projects/FlexJSJX"/>
+    <target name="Binding" description="Clean build of Binding.swc">
+        <ant dir="${basedir}/projects/Binding"/>
     </target>
     
-    <target name="flexjsui" description="Clean build of FlexJSUI.swc">
-        <ant dir="${basedir}/projects/FlexJSUI"/>
+    <target name="Charts" description="Clean build of Charts.swc">
+        <ant dir="${basedir}/projects/Charts"/>
+    </target>
+
+    <target name="Core" description="Clean build of Core.swc">
+        <ant dir="${basedir}/projects/Core"/>
+    </target>
+
+    <target name="Collections" description="Clean build of Collections.swc">
+        <ant dir="${basedir}/projects/Collections"/>
+    </target>
+
+    <target name="CreateJS" description="Clean build of CreateJS.swc">
+        <ant dir="${basedir}/projects/CreateJS"/>
+    </target>
+
+    <target name="DragDrop" description="Clean build of DragDrop.swc">
+        <ant dir="${basedir}/projects/DragDrop"/>
+    </target>
+
+    <target name="Effects" description="Clean build of Effects.swc">
+        <ant dir="${basedir}/projects/Effects"/>
+    </target>
+
+    <target name="Formatters" description="Clean build of Formatters.swc">
+        <ant dir="${basedir}/projects/Formatters"/>
+    </target>
+
+    <target name="GoogleMaps" description="Clean build of GoogleMaps.swc">
+        <ant dir="${basedir}/projects/GoogleMaps"/>
+    </target>
+
+    <target name="Graphics" description="Clean build of Graphics.swc">
+        <ant dir="${basedir}/projects/Graphics"/>
+    </target>
+
+    <target name="HTML" description="Clean build of HTML.swc">
+        <ant dir="${basedir}/projects/HTML"/>
+    </target>
+
+    <target name="HTML5" description="Clean build of HTML5.swc">
+        <ant dir="${basedir}/projects/HTML5"/>
+    </target>
+
+    <target name="JQuery" description="Clean build of JQuery.swc">
+        <ant dir="${basedir}/projects/JQuery"/>
+    </target>
+
+    <target name="Mobile" description="Clean build of Mobile.swc">
+        <ant dir="${basedir}/projects/Mobile"/>
+    </target>
+
+    <target name="Network" description="Clean build of Network.swc">
+        <ant dir="${basedir}/projects/Network"/>
     </target>
 
     <target name="mxmlcclasses" description="Clean build of MXMLClasses.swc">
-        <ant dir="${basedir}/projects/MXMLCClasses"/>
+        <ant dir="${basedir}/as/projects/MXMLCClasses"/>
     </target>
 
 	<target name="flex-config" depends="playerglobal-setswfversion" description="Copy the flex config template to flex-config.xml and inject version numbers">
-		<copy file="${basedir}/flex-config-template.xml" tofile="${basedir}/../flex-config.xml" overwrite="true">
+		<copy file="${basedir}/flex-config-template.xml" tofile="${basedir}/flex-config.xml" overwrite="true">
 			<filterset>
 				<filter token="playerversion" value="${playerglobal.version}"/>
 				<filter token="swfversion" value="${playerglobal.swfversion}"/>
@@ -144,7 +224,7 @@
 	</target>
 		
 	<target name="air-config" depends="playerglobal-setswfversion" description="Copy the air config template to air-config.xml and inject version numbers">
-		<copy file="${basedir}/air-config-template.xml" tofile="${basedir}/../air-config.xml" overwrite="true">
+		<copy file="${basedir}/air-config-template.xml" tofile="${basedir}/air-config.xml" overwrite="true">
 			<filterset>
 				<filter token="playerversion" value="${playerglobal.version}"/>
 				<filter token="swfversion" value="${playerglobal.swfversion}"/>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/flex-config-template.xml
----------------------------------------------------------------------
diff --git a/frameworks/flex-config-template.xml b/frameworks/flex-config-template.xml
index 65a7fc1..c003483 100644
--- a/frameworks/flex-config-template.xml
+++ b/frameworks/flex-config-template.xml
@@ -78,7 +78,7 @@
 
       <!-- List of SWC files or directories that contain SWC files. -->
       <library-path>
-         <path-element>as/libs</path-element>
+         <path-element>libs</path-element>
          <path-element>{playerglobalHome}/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}</path-element>
       </library-path>
 
@@ -103,18 +103,18 @@
          <namespace>
             <uri>library://ns.apache.org/flexjs/basic</uri>
             
-            <manifest>as/projects/FlexJSUI/basic-manifest.xml</manifest>
+            <manifest>projects/Core/basic-manifest.xml</manifest>
          
         </namespace>                                                 
          <namespace>
             <uri>library://ns.apache.org/flexjs/html5</uri>
             
-            <manifest>as/projects/FlexJSUI/html5-manifest.xml</manifest>
+            <manifest>projects/HTML5/html5-manifest.xml</manifest>
          
         </namespace>
 		<namespace>
             <uri>library://ns.apache.org/flexjs/svg</uri>
-         	<manifest>as/projects/FlexJSUI/svg-manifest.xml</manifest>
+         	<manifest>projects/HTML/svg-manifest.xml</manifest>
         </namespace>   
    
       </namespaces>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/flex-config.xml
----------------------------------------------------------------------
diff --git a/frameworks/flex-config.xml b/frameworks/flex-config.xml
index d4707fd..ddf8b02 100644
--- a/frameworks/flex-config.xml
+++ b/frameworks/flex-config.xml
@@ -78,7 +78,7 @@
 
       <!-- List of SWC files or directories that contain SWC files. -->
       <library-path>
-         <path-element>as/libs</path-element>
+         <path-element>libs</path-element>
          <path-element>{playerglobalHome}/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}</path-element>
       </library-path>
 
@@ -103,18 +103,18 @@
          <namespace>
             <uri>library://ns.apache.org/flexjs/basic</uri>
             
-            <manifest>as/projects/FlexJSUI/basic-manifest.xml</manifest>
+            <manifest>projects/Core/basic-manifest.xml</manifest>
          
         </namespace>                                                 
          <namespace>
             <uri>library://ns.apache.org/flexjs/html5</uri>
             
-            <manifest>as/projects/FlexJSUI/html5-manifest.xml</manifest>
+            <manifest>projects/HTML5/html5-manifest.xml</manifest>
          
         </namespace>
 		<namespace>
             <uri>library://ns.apache.org/flexjs/svg</uri>
-         	<manifest>as/projects/FlexJSUI/svg-manifest.xml</manifest>
+         	<manifest>projects/HTML/svg-manifest.xml</manifest>
         </namespace>   
    
       </namespaces>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/js/.jshintrc
----------------------------------------------------------------------
diff --git a/frameworks/js/.jshintrc b/frameworks/js/.jshintrc
new file mode 100644
index 0000000..62b335a
--- /dev/null
+++ b/frameworks/js/.jshintrc
@@ -0,0 +1,14 @@
+{
+    "curly": false,
+    "eqeqeq": false,
+    "eqnull": true,
+    "globalstrict": true,
+    "indent": 2,
+    "maxlen": 120,
+    "onevar": false,
+    "strict": false,
+    "sub": true,
+    "white": false,
+    "gcl": true,
+    "globals": { "goog" : false, "org" : false }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/projects/Binding/as/src/BindingClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/as/src/BindingClasses.as b/frameworks/projects/Binding/as/src/BindingClasses.as
index 2886df2..e9f56a2 100644
--- a/frameworks/projects/Binding/as/src/BindingClasses.as
+++ b/frameworks/projects/Binding/as/src/BindingClasses.as
@@ -25,133 +25,9 @@ package
  *  beyond those that are found by dependecy analysis starting
  *  from the classes specified in manifest.xml.
  */
-internal class FlexJSUIClasses
+internal class BindingClasses
 {	
-	import org.apache.cordova.camera.Camera; Camera;
-	import org.apache.cordova.Application; Application;
-	import org.apache.cordova.Weinre; Weinre;
-	
-	import org.apache.flex.charts.core.CartesianChart; CartesianChart;
-	import org.apache.flex.charts.core.ChartBase; ChartBase;
-	import org.apache.flex.charts.core.IAxisBead; IAxisBead;
-	import org.apache.flex.charts.core.IAxisGroup; IAxisGroup;
-	import org.apache.flex.charts.core.IChart; IChart;
-	import org.apache.flex.charts.core.ICartesianChartLayout; ICartesianChartLayout;
-	import org.apache.flex.charts.core.IChartDataGroup; IChartDataGroup;
-	import org.apache.flex.charts.core.IChartSeries; IChartSeries;
-	import org.apache.flex.charts.core.IHorizontalAxisBead; IHorizontalAxisBead;
-	import org.apache.flex.charts.core.IVerticalAxisBead; IVerticalAxisBead;
-	import org.apache.flex.charts.core.IChartItemRenderer; IChartItemRenderer;
-	import org.apache.flex.charts.core.IConnectedItemRenderer; IConnectedItemRenderer;
-	import org.apache.flex.charts.core.PolarChart; PolarChart;
-	import org.apache.flex.charts.supportClasses.ChartAxisGroup; ChartAxisGroup;
-	import org.apache.flex.charts.supportClasses.ChartDataGroup; ChartDataGroup;
-	import org.apache.flex.maps.google.Map; Map;
-	
-    import org.apache.flex.html.ToolTip; ToolTip;
-	import org.apache.flex.html.accessories.NumericOnlyTextInputBead; NumericOnlyTextInputBead;
-	import org.apache.flex.html.accessories.PasswordInputBead; PasswordInputBead;
-	import org.apache.flex.html.accessories.TextPromptBead; TextPromptBead;
-    import org.apache.flex.html.beads.AlertView; AlertView;
-	import org.apache.flex.html.beads.BackgroundImageBead; BackgroundImageBead;
-	import org.apache.flex.html.beads.ButtonBarView; ButtonBarView;
-	import org.apache.flex.html.beads.CheckBoxView; CheckBoxView;
-    import org.apache.flex.html.beads.ComboBoxView; ComboBoxView;
-    import org.apache.flex.html.beads.ContainerView; ContainerView;
-    import org.apache.flex.html.beads.ControlBarMeasurementBead; ControlBarMeasurementBead;
-    import org.apache.flex.html.beads.CSSButtonView; CSSButtonView;
-	import org.apache.flex.html.beads.CSSTextButtonView; CSSTextButtonView;
-    import org.apache.flex.html.beads.CSSTextToggleButtonView; CSSTextToggleButtonView;
-	import org.apache.flex.html.beads.DropDownListView; DropDownListView;
-	import org.apache.flex.html.beads.CloseButtonView; CloseButtonView;
-    import org.apache.flex.html.beads.ImageButtonView; ImageButtonView;
-    import org.apache.flex.html.beads.ImageAndTextButtonView; ImageAndTextButtonView;
-	import org.apache.flex.html.beads.ImageView; ImageView;
-    import org.apache.flex.html.beads.ListView; ListView;
-    import org.apache.flex.html.beads.NumericStepperView; NumericStepperView;
-    import org.apache.flex.html.beads.PanelView; PanelView;
-    import org.apache.flex.html.beads.PanelWithControlBarView; PanelWithControlBarView;
-	import org.apache.flex.html.beads.RadioButtonView; RadioButtonView;
-    import org.apache.flex.html.beads.ScrollBarView; ScrollBarView;
-	import org.apache.flex.html.beads.SimpleAlertView; SimpleAlertView;
-    import org.apache.flex.html.beads.SingleLineBorderBead; SingleLineBorderBead;
-	import org.apache.flex.html.beads.SliderView; SliderView;
-	import org.apache.flex.html.beads.SliderThumbView; SliderThumbView;
-	import org.apache.flex.html.beads.SliderTrackView; SliderTrackView;
-	import org.apache.flex.html.beads.SolidBackgroundBead; SolidBackgroundBead;
-    import org.apache.flex.html.beads.SpinnerView; SpinnerView;
-    import org.apache.flex.html.beads.TextButtonMeasurementBead; TextButtonMeasurementBead;
-	import org.apache.flex.html.beads.TextFieldLabelMeasurementBead; TextFieldLabelMeasurementBead;
-    import org.apache.flex.html.beads.TextAreaView; TextAreaView;
-    import org.apache.flex.html.beads.TextButtonView; TextButtonView;
-    import org.apache.flex.html.beads.TextFieldView; TextFieldView;
-    import org.apache.flex.html.beads.TextInputView; TextInputView;
-    import org.apache.flex.html.beads.TextInputWithBorderView; TextInputWithBorderView;
-    import org.apache.flex.html.beads.models.AlertModel; AlertModel;
-    import org.apache.flex.html.beads.models.ArraySelectionModel; ArraySelectionModel;
-    import org.apache.flex.html.beads.models.ComboBoxModel; ComboBoxModel;
-	import org.apache.flex.html.beads.models.ImageModel; ImageModel;
-    import org.apache.flex.html.beads.models.ImageAndTextModel; ImageAndTextModel;
-	import org.apache.flex.html.beads.models.PanelModel; PanelModel;
-    import org.apache.flex.html.beads.models.SingleLineBorderModel; SingleLineBorderModel;
-	import org.apache.flex.html.beads.models.TextModel; TextModel;
-    import org.apache.flex.html.beads.models.TitleBarModel; TitleBarModel;
-	import org.apache.flex.html.beads.models.ToggleButtonModel; ToggleButtonModel;
-	import org.apache.flex.html.beads.models.ValueToggleButtonModel; ValueToggleButtonModel;
-    import org.apache.flex.html.beads.controllers.AlertController; AlertController;
-	import org.apache.flex.html.beads.controllers.ComboBoxController; ComboBoxController;
-    import org.apache.flex.html.beads.controllers.DropDownListController; DropDownListController;
-	import org.apache.flex.html.beads.controllers.EditableTextKeyboardController; EditableTextKeyboardController;
-    import org.apache.flex.html.beads.controllers.ItemRendererMouseController; ItemRendererMouseController;
-    import org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController; ListSingleSelectionMouseController;
-	import org.apache.flex.html.beads.controllers.SliderMouseController; SliderMouseController;
-	import org.apache.flex.html.beads.controllers.SpinnerMouseController; SpinnerMouseController;
-    import org.apache.flex.html.beads.controllers.VScrollBarMouseController; VScrollBarMouseController;
-	import org.apache.flex.html.beads.layouts.ButtonBarLayout; ButtonBarLayout;
-    import org.apache.flex.html.beads.layouts.NonVirtualVerticalScrollingLayout; NonVirtualVerticalScrollingLayout;  
-	import org.apache.flex.html.beads.layouts.NonVirtualHorizontalScrollingLayout; NonVirtualHorizontalScrollingLayout;
-    import org.apache.flex.html.beads.layouts.NonVirtualBasicLayout; NonVirtualBasicLayout;
-    import org.apache.flex.html.beads.layouts.VScrollBarLayout; VScrollBarLayout;
-	import org.apache.flex.html.beads.layouts.TileLayout; TileLayout;
-    import org.apache.flex.html.beads.TextItemRendererFactoryForArrayData; TextItemRendererFactoryForArrayData;
-	import org.apache.flex.html.beads.DataItemRendererFactoryForArrayData; DataItemRendererFactoryForArrayData;
-	import org.apache.flex.html.supportClasses.NonVirtualDataGroup; NonVirtualDataGroup;
-    import org.apache.flex.core.ItemRendererClassFactory; ItemRendererClassFactory;  
-	import org.apache.flex.core.FilledRectangle; FilledRectangle;
-	import org.apache.flex.core.FormatBase; FormatBase;
-	import org.apache.flex.events.CustomEvent; CustomEvent;
-	import org.apache.flex.events.Event; Event;
-	import org.apache.flex.events.MouseEvent; MouseEvent;
-	import org.apache.flex.events.ValueEvent; ValueEvent;
-	import org.apache.flex.utils.EffectTimer; EffectTimer;
-	import org.apache.flex.utils.Timer; Timer;
-	import org.apache.flex.utils.UIUtils; UIUtils;
-	import org.apache.flex.core.ISelectableItemRenderer; ISelectableItemRenderer;
-    import org.apache.flex.core.SimpleStatesImpl; SimpleStatesImpl;
-	import org.apache.flex.core.graphics.GraphicShape; GraphicShape;
-	import org.apache.flex.core.graphics.Rect; Rect;
-	import org.apache.flex.core.graphics.Ellipse; Ellipse;
-	import org.apache.flex.core.graphics.Circle; Circle;
-	import org.apache.flex.core.graphics.Path; Path;
-	import org.apache.flex.core.graphics.SolidColor; SolidColor;
-	import org.apache.flex.core.graphics.SolidColorStroke; SolidColorStroke;
-	import org.apache.flex.core.graphics.Text; Text;
-	import org.apache.flex.core.graphics.GraphicsContainer; GraphicsContainer;
-	import org.apache.flex.core.graphics.LinearGradient; LinearGradient;
-    import org.apache.flex.core.DataBindingBase; DataBindingBase;
     import org.apache.flex.binding.ChainBinding; ChainBinding;
-    import org.apache.flex.effects.PlatformWiper; PlatformWiper;    
-    import org.apache.flex.events.DragEvent; DragEvent;   
-	import org.apache.flex.events.utils.MouseUtils; MouseUtils;
-    import org.apache.flex.geom.Rectangle; Rectangle;    
-	
-	import org.apache.flex.mobile.ManagerBase; ManagerBase;
-    
-	import mx.core.ClassFactory; ClassFactory;
-    import mx.states.AddItems; AddItems;
-    import mx.states.SetEventHandler; SetEventHandler;
-    import mx.states.SetProperty; SetProperty;
-    import mx.states.State; State;
 }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/projects/Binding/as/src/org/apache/flex/binding/ViewBaseDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/as/src/org/apache/flex/binding/ViewBaseDataBinding.as b/frameworks/projects/Binding/as/src/org/apache/flex/binding/ViewBaseDataBinding.as
new file mode 100644
index 0000000..7505e53
--- /dev/null
+++ b/frameworks/projects/Binding/as/src/org/apache/flex/binding/ViewBaseDataBinding.as
@@ -0,0 +1,296 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.binding
+{
+    import org.apache.flex.binding.ConstantBinding;
+    import org.apache.flex.binding.GenericBinding;
+    import org.apache.flex.binding.PropertyWatcher;
+    import org.apache.flex.binding.SimpleBinding;
+    import org.apache.flex.binding.WatcherBase;
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IStrand;
+    import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
+    
+    /**
+     *  The ViewBaseDataBinding class implements databinding for
+     *  ViewBase instances.  Different classes can have
+     *  different databinding implementation that optimize for
+     *  the different lifecycles.  For example, an item renderer
+     *  databinding implementation can wait to execute databindings
+     *  until the data property is set.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class ViewBaseDataBinding implements IBead
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function ViewBaseDataBinding()
+		{
+			super();
+		}
+        
+        private var _strand:IStrand;
+        
+        /**
+         *  @copy org.apache.flex.core.IBead#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            IEventDispatcher(_strand).addEventListener("initBindings", initCompleteHandler);
+        }    
+
+        private function initCompleteHandler(event:Event):void
+        {
+            var fieldWatcher:Object;
+            var sb:SimpleBinding;
+            if (!("_bindings" in _strand))
+                return;
+            var bindingData:Array = _strand["_bindings"];
+            var n:int = bindingData[0];
+            var bindings:Array = [];
+            var i:int;
+            var index:int = 1;
+            for (i = 0; i < n; i++)
+            {
+                var binding:Object = {};
+                binding.source = bindingData[index++];
+				binding.destFunc = bindingData[index++];
+                binding.destination = bindingData[index++];
+                bindings.push(binding);
+            }
+            var watchers:Object = decodeWatcher(bindingData.slice(index));
+            for (i = 0; i < n; i++)
+            {
+                    binding = bindings[i];
+                if (binding.source is Array)
+                {
+                    if (binding.source[0] == "applicationModel")
+                    {
+                        if (binding.source.length == 2 && binding.destination.length == 2)
+                        {
+                            var destination:IStrand;
+                            // can be simplebinding or constantbinding
+                            var modelWatcher:Object = watchers.watcherMap["applicationModel"];
+                            fieldWatcher = modelWatcher.children.watcherMap[binding.source[1]];
+                            if (fieldWatcher.eventNames is String)
+                            {
+                                sb = new SimpleBinding();
+                                sb.destinationPropertyName = binding.destination[1];
+                                sb.eventName = fieldWatcher.eventNames as String;
+                                sb.sourceID = binding.source[0];
+                                sb.sourcePropertyName = binding.source[1];
+                                sb.setDocument(_strand);
+                                destination = _strand[binding.destination[0]] as IStrand;
+                                if (destination)
+                                    destination.addBead(sb);
+                                else
+                                {
+                                    deferredBindings[binding.destination[0]] = sb;
+                                    IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                                }
+                            }
+                            else if (fieldWatcher.eventNames == null)
+                            {
+                                var cb:ConstantBinding = new ConstantBinding();
+                                cb.destinationPropertyName = binding.destination[1];
+                                cb.sourceID = binding.source[0];
+                                cb.sourcePropertyName = binding.source[1];
+                                cb.setDocument(_strand);
+                                destination = _strand[binding.destination[0]] as IStrand;
+                                if (destination)
+                                    destination.addBead(cb);
+                                else
+                                {
+                                    deferredBindings[binding.destination[0]] = cb;
+                                    IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                                }
+                            }
+                        }
+                    }
+                }
+                else if (binding.source is String)
+                {
+                    fieldWatcher = watchers.watcherMap[binding.source];
+                    if (fieldWatcher.eventNames is String)
+                    {
+                        sb = new SimpleBinding();
+                        sb.destinationPropertyName = binding.destination[1];
+                        sb.eventName = fieldWatcher.eventNames as String;
+                        sb.sourcePropertyName = binding.source;
+                        sb.setDocument(_strand);
+                        destination = _strand[binding.destination[0]] as IStrand;
+                        if (destination)
+                            destination.addBead(sb);
+                        else
+                        {
+                            deferredBindings[binding.destination[0]] = sb;
+                            IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                        }
+                    }
+                }
+                else
+                {
+                    makeGenericBinding(binding, i, watchers);
+                }
+            }
+        }
+
+        private function makeGenericBinding(binding:Object, index:int, watchers:Object):void
+        {
+            var gb:GenericBinding = new GenericBinding();
+            gb.setDocument(_strand);
+            gb.destinationData = binding.destination;
+			gb.destinationFunction = binding.destFunc;
+            gb.source = binding.source;
+            setupWatchers(gb, index, watchers.watchers, null);
+        }
+        
+        private function setupWatchers(gb:GenericBinding, index:int, watchers:Array, parentWatcher:WatcherBase):void
+        {
+            var n:int = watchers.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var watcher:Object = watchers[i];
+                if (watcher.bindings.indexOf(index) != -1)
+                {
+                    var type:String = watcher.type;
+                    switch (type)
+                    {
+                        case "property":
+                        {
+                            var pw:PropertyWatcher = new PropertyWatcher(this, 
+                                        watcher.propertyName, 
+                                        watcher.eventNames,
+                                        watcher.getterFunction);
+                            watcher.watcher = pw;
+                            if (parentWatcher)
+                                pw.parentChanged(parentWatcher.value);
+                            else
+                                pw.parentChanged(_strand);
+                            if (parentWatcher)
+                                parentWatcher.addChild(pw);
+                            if (watcher.children == null)
+                                pw.addBinding(gb);
+                            break;
+                        }
+                    }
+                    if (watcher.children)
+                    {
+                        setupWatchers(gb, index, watcher.children, watcher.watcher);
+                    }
+                }
+            }
+        }
+        
+        private function decodeWatcher(bindingData:Array):Object
+        {
+            var watcherMap:Object = {};
+            var watchers:Array = [];
+            var n:int = bindingData.length;
+            var index:int = 0;
+            var watcherData:Object;
+            while (index < n)
+            {
+                var watcherIndex:int = bindingData[index++];
+                var type:int = bindingData[index++];
+                switch (type)
+                {
+                    case 0:
+                    {
+                        watcherData = { type: "function" };
+                        watcherData.functionName = bindingData[index++];
+						watcherData.paramFunction = bindingData[index++];
+                        watcherData.eventNames = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        break;
+                    }
+                    case 1:
+					{
+						watcherData = { type: "static" };
+						watcherData.propertyName = bindingData[index++];
+						watcherData.eventNames = bindingData[index++];
+						watcherData.bindings = bindingData[index++];
+						watcherData.getterFunction = bindingData[index++];
+						watcherData.parentObj = bindingData[index++];
+						watcherMap[watcherData.propertyName] = watcherData;
+						break;
+					}
+                    case 2:
+                    {
+                        watcherData = { type: "property" };
+                        watcherData.propertyName = bindingData[index++];
+                        watcherData.eventNames = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        watcherData.getterFunction = bindingData[index++];
+                        watcherMap[watcherData.propertyName] = watcherData;
+                        break;
+                    }
+                    case 3:
+                    {
+                        watcherData = { type: "xml" };
+                        watcherData.propertyName = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        watcherMap[watcherData.propertyName] = watcherData;
+                        break;
+                    }
+                }
+                watcherData.children = bindingData[index++];
+                if (watcherData.children != null)
+                {
+                    watcherData.children = decodeWatcher(watcherData.children);
+                }
+                watcherData.index = watcherIndex;
+                watchers.push(watcherData);
+            }            
+            return { watchers: watchers, watcherMap: watcherMap };
+        }
+        
+        private var deferredBindings:Object = {};
+        private function deferredBindingsHandler(event:Event):void
+        {
+            for (var p:String in deferredBindings)
+            {
+                if (_strand[p] != null)
+                {
+                    var destination:IStrand = _strand[p] as IStrand;
+                    destination.addBead(deferredBindings[p]);
+                    delete deferredBindings[p];
+                }
+            }
+        }
+        
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ApplicationDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ApplicationDataBinding.as b/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ApplicationDataBinding.as
new file mode 100644
index 0000000..e752cc0
--- /dev/null
+++ b/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ApplicationDataBinding.as
@@ -0,0 +1,329 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.binding
+{
+    import org.apache.flex.binding.ConstantBinding;
+    import org.apache.flex.binding.GenericBinding;
+    import org.apache.flex.binding.PropertyWatcher;
+    import org.apache.flex.binding.SimpleBinding;
+    import org.apache.flex.binding.WatcherBase;
+    import org.apache.flex.core.DataBindingBase;
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IStrand;
+    import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
+    
+    /**
+     *  The ApplicationDataBinding class implements databinding for
+     *  Application instances.  Different classes can have
+     *  different databinding implementation that optimize for
+     *  the different lifecycles.  For example, an item renderer
+     *  databinding implementation can wait to execute databindings
+     *  until the data property is set.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class ApplicationDataBinding extends DataBindingBase implements IBead
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function ApplicationDataBinding()
+		{
+			super();
+		}
+        
+        private var _strand:IStrand;
+        
+        /**
+         *  @copy org.apache.flex.core.IBead#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            IEventDispatcher(_strand).addEventListener("viewChanged", initCompleteHandler);
+        }    
+
+        private function initCompleteHandler(event:Event):void
+        {
+            var fieldWatcher:Object;
+            var sb:SimpleBinding;
+            if (!("_bindings" in _strand))
+                return;
+            var bindingData:Array = _strand["_bindings"];
+            var n:int = bindingData[0];
+            var bindings:Array = [];
+            var i:int;
+            var index:int = 1;
+            for (i = 0; i < n; i++)
+            {
+                var binding:Object = {};
+                binding.source = bindingData[index++];
+				binding.destFunc = bindingData[index++];
+                binding.destination = bindingData[index++];
+                bindings.push(binding);
+            }
+            var watchers:Object = decodeWatcher(bindingData.slice(index));
+            for (i = 0; i < n; i++)
+            {
+                    binding = bindings[i];
+                if (binding.source is Array)
+                {
+                    if (binding.source[0] in _strand)
+                    {
+                        if (binding.source.length == 2 && binding.destination.length == 2)
+                        {
+                            // simple component.property binding
+                            var destObject:Object;
+                            var destination:IStrand;
+                            // can be simplebinding or constantbinding
+                            var compWatcher:Object = watchers.watcherMap[binding.source[0]];
+                            fieldWatcher = compWatcher.children.watcherMap[binding.source[1]];
+                            if (fieldWatcher.eventNames is String)
+                            {
+                                sb = new SimpleBinding();
+                                sb.destinationPropertyName = binding.destination[1];
+                                sb.eventName = fieldWatcher.eventNames as String;
+                                sb.sourceID = binding.source[0];
+                                sb.sourcePropertyName = binding.source[1];
+                                sb.setDocument(_strand);
+                                destObject = _strand[binding.destination[0]];                                
+                                destination = destObject as IStrand;
+                                if (destination)
+                                    destination.addBead(sb);
+                                else
+                                {
+                                    if (destObject)
+                                    {
+                                        sb.destination = destObject;
+                                        _strand.addBead(sb);
+                                    }
+                                    else
+                                    {
+                                        deferredBindings[binding.destination[0]] = sb;
+                                        IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                                    }
+                                }
+                            }
+                            else if (fieldWatcher.eventNames == null)
+                            {
+                                var cb:ConstantBinding = new ConstantBinding();
+                                cb.destinationPropertyName = binding.destination[1];
+                                cb.sourceID = binding.source[0];
+                                cb.sourcePropertyName = binding.source[1];
+                                cb.setDocument(_strand);
+                                destObject = _strand[binding.destination[0]];                                
+                                destination = destObject as IStrand;
+                                if (destination)
+                                    destination.addBead(cb);
+                                else
+                                {
+                                    if (destObject)
+                                    {
+                                        cb.destination = destObject;
+                                        _strand.addBead(sb);
+                                    }
+                                    else
+                                    {
+                                        deferredBindings[binding.destination[0]] = sb;
+                                        IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                else if (binding.source is String)
+                {
+                    fieldWatcher = watchers.watcherMap[binding.source];
+                    if (fieldWatcher.eventNames is String)
+                    {
+                        sb = new SimpleBinding();
+                        sb.destinationPropertyName = binding.destination[1];
+                        sb.eventName = fieldWatcher.eventNames as String;
+                        sb.sourcePropertyName = binding.source;
+                        sb.setDocument(_strand);
+                        destObject = _strand[binding.destination[0]];                                
+                        destination = destObject as IStrand;
+                        if (destination)
+                            destination.addBead(sb);
+                        else
+                        {
+                            if (destObject)
+                            {
+                                sb.destination = destObject;
+                                _strand.addBead(sb);
+                            }
+                            else
+                            {
+                                deferredBindings[binding.destination[0]] = sb;
+                                IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    makeGenericBinding(binding, i, watchers);
+                }
+            }
+        }
+
+        private function makeGenericBinding(binding:Object, index:int, watchers:Object):void
+        {
+            var gb:GenericBinding = new GenericBinding();
+            gb.setDocument(_strand);
+            gb.destinationData = binding.destination;
+			gb.destinationFunction = binding.destFunc;
+            gb.source = binding.source;
+            setupWatchers(gb, index, watchers.watchers, null);
+        }
+        
+        private function setupWatchers(gb:GenericBinding, index:int, watchers:Array, parentWatcher:WatcherBase):void
+        {
+            var n:int = watchers.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var watcher:Object = watchers[i];
+                if (watcher.bindings.indexOf(index) != -1)
+                {
+                    var type:String = watcher.type;
+                    switch (type)
+                    {
+                        case "property":
+                        {
+                            var pw:PropertyWatcher = new PropertyWatcher(this, 
+                                        watcher.propertyName, 
+                                        watcher.eventNames,
+                                        watcher.getterFunction);
+                            watcher.watcher = pw;
+                            if (parentWatcher)
+                                pw.parentChanged(parentWatcher.value);
+                            else
+                                pw.parentChanged(_strand);
+                            if (parentWatcher)
+                                parentWatcher.addChild(pw);
+                            if (watcher.children == null)
+                                pw.addBinding(gb);
+                            break;
+                        }
+                    }
+                    if (watcher.children)
+                    {
+                        setupWatchers(gb, index, watcher.children, watcher.watcher);
+                    }
+                }
+            }
+        }
+        
+        private function decodeWatcher(bindingData:Array):Object
+        {
+            var watcherMap:Object = {};
+            var watchers:Array = [];
+            var n:int = bindingData.length;
+            var index:int = 0;
+            var watcherData:Object;
+            // FalconJX adds an extra null to the data so make sure
+            // we have enough data for a complete watcher otherwise
+            // say we are done
+            while (index < n - 2)
+            {
+                var watcherIndex:int = bindingData[index++];
+                var type:int = bindingData[index++];
+                switch (type)
+                {
+                    case 0:
+                    {
+                        watcherData = { type: "function" };
+                        watcherData.functionName = bindingData[index++];
+						watcherData.paramFunction = bindingData[index++];
+                        watcherData.eventNames = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        break;
+                    }
+                    case 1:
+					{
+						watcherData = { type: "static" };
+						watcherData.propertyName = bindingData[index++];
+						watcherData.eventNames = bindingData[index++];
+						watcherData.bindings = bindingData[index++];
+						watcherData.getterFunction = bindingData[index++];
+						watcherData.parentObj = bindingData[index++];
+						watcherMap[watcherData.propertyName] = watcherData;
+						break;
+					}
+                    case 2:
+                    {
+                        watcherData = { type: "property" };
+                        watcherData.propertyName = bindingData[index++];
+                        watcherData.eventNames = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        watcherData.getterFunction = bindingData[index++];
+                        watcherMap[watcherData.propertyName] = watcherData;
+                        break;
+                    }
+                    case 3:
+                    {
+                        watcherData = { type: "xml" };
+                        watcherData.propertyName = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        watcherMap[watcherData.propertyName] = watcherData;
+                        break;
+                    }
+                }
+                watcherData.children = bindingData[index++];
+                if (watcherData.children != null)
+                {
+                    watcherData.children = decodeWatcher(watcherData.children);
+                }
+                watcherData.index = watcherIndex;
+                watchers.push(watcherData);
+            }            
+            return { watchers: watchers, watcherMap: watcherMap };
+        }
+        
+        private var deferredBindings:Object = {};
+        private function deferredBindingsHandler(event:Event):void
+        {
+            for (var p:String in deferredBindings)
+            {
+                if (_strand[p] != null)
+                {
+                    var destination:IStrand = _strand[p] as IStrand;
+                    destination.addBead(deferredBindings[p]);
+                    delete deferredBindings[p];
+                }
+            }
+        }
+        
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c84daedb/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ContainerDataBinding.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ContainerDataBinding.as b/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ContainerDataBinding.as
new file mode 100644
index 0000000..fbe399f
--- /dev/null
+++ b/frameworks/projects/Binding/asjs/src/org/apache/flex/binding/ContainerDataBinding.as
@@ -0,0 +1,382 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.binding
+{
+    import org.apache.flex.binding.ChainBinding;
+    import org.apache.flex.binding.ConstantBinding;
+    import org.apache.flex.binding.GenericBinding;
+    import org.apache.flex.binding.PropertyWatcher;
+    import org.apache.flex.binding.SimpleBinding;
+    import org.apache.flex.binding.WatcherBase;
+    import org.apache.flex.core.DataBindingBase;
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IStrand;
+    import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
+    
+    /**
+     *  The ContainerDataBinding class implements databinding for
+     *  Container instances.  Different classes can have
+     *  different databinding implementation that optimize for
+     *  the different lifecycles.  For example, an item renderer
+     *  databinding implementation can wait to execute databindings
+     *  until the data property is set.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+	public class ContainerDataBinding extends DataBindingBase implements IBead
+	{
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+		public function ContainerDataBinding()
+		{
+			super();
+		}
+        
+        private var _strand:IStrand;
+        
+        /**
+         *  @copy org.apache.flex.core.IBead#strand
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            IEventDispatcher(_strand).addEventListener("initBindings", initCompleteHandler);
+        }    
+
+        private function initCompleteHandler(event:Event):void
+        {
+            var fieldWatcher:Object;
+            var sb:SimpleBinding;
+            var cb:ConstantBinding;
+            if (!("_bindings" in _strand))
+                return;
+            var bindingData:Array = _strand["_bindings"];
+            var n:int = bindingData[0];
+            var bindings:Array = [];
+            var i:int;
+            var index:int = 1;
+            for (i = 0; i < n; i++)
+            {
+                var binding:Object = {};
+                binding.source = bindingData[index++];
+				binding.destFunc = bindingData[index++];
+                binding.destination = bindingData[index++];
+                bindings.push(binding);
+            }
+            var watchers:Object = decodeWatcher(bindingData.slice(index));
+            for (i = 0; i < n; i++)
+            {
+                    binding = bindings[i];
+                if (binding.source is Array)
+                {
+                    if (binding.source[0] in _strand)
+                    {
+                        var destObject:Object;
+                        var destination:IStrand;
+                        var compWatcher:Object;
+                        if (binding.source.length == 2 && binding.destination.length == 2)
+                        {
+                            // simple component.property binding
+                            // can be simplebinding or constantbinding
+                            compWatcher = watchers.watcherMap[binding.source[0]];
+                            fieldWatcher = compWatcher.children.watcherMap[binding.source[1]];
+                            if (fieldWatcher.eventNames is String)
+                            {
+                                sb = new SimpleBinding();
+                                sb.destinationPropertyName = binding.destination[1];
+                                sb.eventName = fieldWatcher.eventNames as String;
+                                sb.sourceID = binding.source[0];
+                                sb.sourcePropertyName = binding.source[1];
+                                sb.setDocument(_strand);
+                                destObject = _strand[binding.destination[0]];                                
+                                destination = destObject as IStrand;
+                                if (destination)
+                                    destination.addBead(sb);
+                                else
+                                {
+                                    if (destObject)
+                                    {
+                                        sb.destination = destObject;
+                                        _strand.addBead(sb);
+                                    }
+                                    else
+                                    {
+                                        deferredBindings[binding.destination[0]] = sb;
+                                        IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                                    }
+                                }
+                            }
+                            else if (fieldWatcher.eventNames == null)
+                            {
+                                cb = new ConstantBinding();
+                                cb.destinationPropertyName = binding.destination[1];
+                                cb.sourceID = binding.source[0];
+                                cb.sourcePropertyName = binding.source[1];
+                                cb.setDocument(_strand);
+                                destObject = _strand[binding.destination[0]];                                
+                                destination = destObject as IStrand;
+                                if (destination)
+                                    destination.addBead(cb);
+                                else
+                                {
+                                    if (destObject)
+                                    {
+                                        cb.destination = destObject;
+                                        _strand.addBead(sb);
+                                    }
+                                    else
+                                    {
+                                        deferredBindings[binding.destination[0]] = sb;
+                                        IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                                    }
+                                }
+                            }
+                        }
+                        else
+                        {
+                            compWatcher = watchers.watcherMap[binding.source[0]];
+                            var chb:ChainBinding = new ChainBinding();
+                            chb.destination = binding.destination;
+                            chb.source = binding.source;
+                            chb.watcherChain = compWatcher;
+                            chb.setDocument(_strand);
+                            _strand.addBead(chb);
+                        }
+                    }
+                }
+                else if (binding.source is String && binding.destination is Array)
+                {
+                    fieldWatcher = watchers.watcherMap[binding.source];
+                    if (fieldWatcher == null)
+                    {
+                        cb = new ConstantBinding();
+                        cb.destinationPropertyName = binding.destination[1];
+                        cb.sourcePropertyName = binding.source;
+                        cb.setDocument(_strand);
+                        if (binding.destination[0] == "this")
+                            destObject = _strand;
+                        else
+                            destObject = _strand[binding.destination[0]];                                
+                        destination = destObject as IStrand;
+                        if (destination)
+                            destination.addBead(cb);
+                        else
+                        {
+                            if (destObject)
+                            {
+                                cb.destination = destObject;
+                                _strand.addBead(cb);
+                            }
+                            else
+                            {
+                                deferredBindings[binding.destination[0]] = cb;
+                                IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                            }
+                        }
+                    }
+                    else if (fieldWatcher.eventNames is String)
+                    {
+                        sb = new SimpleBinding();
+                        sb.destinationPropertyName = binding.destination[1];
+                        sb.eventName = fieldWatcher.eventNames as String;
+                        sb.sourcePropertyName = binding.source;
+                        sb.setDocument(_strand);
+                        destObject = _strand[binding.destination[0]];                                
+                        destination = destObject as IStrand;
+                        if (destination)
+                            destination.addBead(sb);
+                        else
+                        {
+                            if (destObject)
+                            {
+                                sb.destination = destObject;
+                                _strand.addBead(sb);
+                            }
+                            else
+                            {
+                                deferredBindings[binding.destination[0]] = sb;
+                                IEventDispatcher(_strand).addEventListener("valueChange", deferredBindingsHandler);
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    makeGenericBinding(binding, i, watchers);
+                }
+            }
+        }
+
+        private function makeGenericBinding(binding:Object, index:int, watchers:Object):void
+        {
+            var gb:GenericBinding = new GenericBinding();
+            gb.setDocument(_strand);
+            gb.destinationData = binding.destination;
+			gb.destinationFunction = binding.destFunc;
+            gb.source = binding.source;
+            if (watchers.watchers.length)
+                setupWatchers(gb, index, watchers.watchers, null);
+            else
+            {
+                // should be a constant expression.
+                // the value doesn't matter as GenericBinding
+                // should get the value from the source
+                gb.valueChanged(null);  
+            }
+        }
+        
+        private function setupWatchers(gb:GenericBinding, index:int, watchers:Array, parentWatcher:WatcherBase):void
+        {
+            var n:int = watchers.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var watcher:Object = watchers[i];
+                var isValidWatcher:Boolean = false;
+                if (typeof(watcher.bindings) == "number")
+                    isValidWatcher = (watcher.bindings == index);
+                else
+                    isValidWatcher = (watcher.bindings.indexOf(index) != -1);
+                if (isValidWatcher)
+                {
+                    var type:String = watcher.type;
+                    switch (type)
+                    {
+                        case "property":
+                        {
+                            var pw:PropertyWatcher = new PropertyWatcher(this, 
+                                        watcher.propertyName, 
+                                        watcher.eventNames,
+                                        watcher.getterFunction);
+                            watcher.watcher = pw;
+                            if (parentWatcher)
+                                pw.parentChanged(parentWatcher.value);
+                            else
+                                pw.parentChanged(_strand);
+                            if (parentWatcher)
+                                parentWatcher.addChild(pw);
+                            if (watcher.children == null)
+                                pw.addBinding(gb);
+                            break;
+                        }
+                    }
+                    if (watcher.children)
+                    {
+                        setupWatchers(gb, index, watcher.children.watchers, watcher.watcher);
+                    }
+                }
+            }
+        }
+        
+        private function decodeWatcher(bindingData:Array):Object
+        {
+            var watcherMap:Object = {};
+            var watchers:Array = [];
+            var n:int = bindingData.length;
+            var index:int = 0;
+            var watcherData:Object;
+            // FalconJX adds an extra null to the data so make sure
+            // we have enough data for a complete watcher otherwise
+            // say we are done
+            while (index < n - 2)
+            {
+                var watcherIndex:int = bindingData[index++];
+                var type:int = bindingData[index++];
+                switch (type)
+                {
+                    case 0:
+                    {
+                        watcherData = { type: "function" };
+                        watcherData.functionName = bindingData[index++];
+						watcherData.paramFunction = bindingData[index++];
+                        watcherData.eventNames = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        break;
+                    }
+                    case 1:
+					{
+						watcherData = { type: "static" };
+						watcherData.propertyName = bindingData[index++];
+						watcherData.eventNames = bindingData[index++];
+						watcherData.bindings = bindingData[index++];
+						watcherData.getterFunction = bindingData[index++];
+						watcherData.parentObj = bindingData[index++];
+						watcherMap[watcherData.propertyName] = watcherData;
+						break;
+					}
+                    case 2:
+                    {
+                        watcherData = { type: "property" };
+                        watcherData.propertyName = bindingData[index++];
+                        watcherData.eventNames = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        watcherData.getterFunction = bindingData[index++];
+                        watcherMap[watcherData.propertyName] = watcherData;
+                        break;
+                    }
+                    case 3:
+                    {
+                        watcherData = { type: "xml" };
+                        watcherData.propertyName = bindingData[index++];
+                        watcherData.bindings = bindingData[index++];
+                        watcherMap[watcherData.propertyName] = watcherData;
+                        break;
+                    }
+                }
+                watcherData.children = bindingData[index++];
+                if (watcherData.children != null)
+                {
+                    watcherData.children = decodeWatcher(watcherData.children);
+                }
+                watcherData.index = watcherIndex;
+                watchers.push(watcherData);
+            }            
+            return { watchers: watchers, watcherMap: watcherMap };
+        }
+        
+        private var deferredBindings:Object = {};
+        private function deferredBindingsHandler(event:Event):void
+        {
+            for (var p:String in deferredBindings)
+            {
+                if (_strand[p] != null)
+                {
+                    var destination:IStrand = _strand[p] as IStrand;
+                    destination.addBead(deferredBindings[p]);
+                    delete deferredBindings[p];
+                }
+            }
+        }
+        
+    }
+}
\ No newline at end of file


Mime
View raw message