flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cd...@apache.org
Subject [18/51] [partial] git commit: [flex-falcon] [refs/heads/feature/maven-migration-test] - - Check-In of the migrated project to make error analysis easier
Date Wed, 13 Apr 2016 18:56:10 GMT
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again.mxml
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again.mxml b/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again.mxml
new file mode 100644
index 0000000..2f3cbbd
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again.mxml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+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.
+
+-->
+<basic:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
+				   xmlns:local="*"
+				   xmlns:basic="library://ns.apache.org/flexjs/basic" 
+				   xmlns:models="models.*" 
+				   xmlns:controllers="controllers.*"
+				   initialize="MyModel(model).labelText='Hello World'"
+				   >
+	<basic:valuesImpl>
+		<basic:SimpleCSSValuesImpl />
+	</basic:valuesImpl>
+	<basic:initialView>
+		<local:MyInitialView />
+	</basic:initialView>
+	<basic:model>
+		<models:MyModel />
+	</basic:model>
+	<basic:controller>
+		<controllers:MyController />
+	</basic:controller>
+    <basic:beads>
+        <basic:HTTPService id="service">
+            <basic:LazyCollection id="collection">
+                <basic:inputParser>
+                    <basic:JSONInputParser />
+                </basic:inputParser>
+                <basic:itemConverter>
+                    <local:StockDataJSONItemConverter />
+                </basic:itemConverter> 
+            </basic:LazyCollection>
+        </basic:HTTPService>
+    </basic:beads>
+</basic:Application>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_result.js b/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_result.js
new file mode 100644
index 0000000..71eb945
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/FlexJSTest_again_result.js
@@ -0,0 +1,212 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * FlexJSTest_again
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('FlexJSTest_again');
+
+goog.require('org.apache.flex.core.Application');
+goog.require('org.apache.flex.core.SimpleCSSValuesImpl');
+goog.require('MyInitialView');
+goog.require('models.MyModel');
+goog.require('controllers.MyController');
+goog.require('org.apache.flex.net.HTTPService');
+goog.require('org.apache.flex.collections.LazyCollection');
+goog.require('org.apache.flex.collections.parsers.JSONInputParser');
+goog.require('StockDataJSONItemConverter');
+goog.require('org.apache.flex.events.Event');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.Application}
+ */
+FlexJSTest_again = function() {
+  FlexJSTest_again.base(this, 'constructor');
+  
+  /**
+   * @private
+   * @type {org.apache.flex.core.SimpleCSSValuesImpl}
+   */
+  this.$ID0_;
+  
+  /**
+   * @private
+   * @type {MyInitialView}
+   */
+  this.$ID1_;
+  
+  /**
+   * @private
+   * @type {models.MyModel}
+   */
+  this.$ID2_;
+  
+  /**
+   * @private
+   * @type {controllers.MyController}
+   */
+  this.$ID3_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.net.HTTPService}
+   */
+  this.service_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.collections.LazyCollection}
+   */
+  this.collection_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.collections.parsers.JSONInputParser}
+   */
+  this.$ID4_;
+  
+  /**
+   * @private
+   * @type {StockDataJSONItemConverter}
+   */
+  this.$ID5_;
+  
+  /**
+   * @private
+   * @type {Array}
+   */
+  this.mxmldd;
+  
+  /**
+   * @private
+   * @type {Array}
+   */
+  this.mxmldp;
+
+  this.generateMXMLAttributes
+  ([5,
+'model',
+false,
+[models.MyModel, 1, '_id', true, '$ID2', 0, 0, null],
+'valuesImpl',
+false,
+[org.apache.flex.core.SimpleCSSValuesImpl, 1, '_id', true, '$ID0', 0, 0, null],
+'initialView',
+false,
+[MyInitialView, 1, '_id', true, '$ID1', 0, 0, null],
+'controller',
+false,
+[controllers.MyController, 1, '_id', true, '$ID3', 0, 0, null],
+'beads',
+null, [org.apache.flex.net.HTTPService, 2, 'id', true, 'service', 'beads', null, [org.apache.flex.collections.LazyCollection, 3, 'id', true, 'collection', 'inputParser', false, [org.apache.flex.collections.parsers.JSONInputParser, 1, '_id', true, '$ID4', 0, 0, null], 'itemConverter', false, [StockDataJSONItemConverter, 1, '_id', true, '$ID5', 0, 0, null], 0, 0, null], 0, 0, null],
+0,
+1,
+'initialize',
+this.$EH0
+  ]);
+  
+};
+goog.inherits(FlexJSTest_again, org.apache.flex.core.Application);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+FlexJSTest_again.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'FlexJSTest_again', qName: 'FlexJSTest_again' }] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('FlexJSTest_again', FlexJSTest_again);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+FlexJSTest_again.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'service': { type: 'org.apache.flex.net.HTTPService', declaredBy: 'FlexJSTest_again'},
+        'collection': { type: 'org.apache.flex.collections.LazyCollection', declaredBy: 'FlexJSTest_again'}
+      };
+    },
+    methods: function () {
+      return {
+        '$EH0': { type: 'void', declaredBy: 'FlexJSTest_again'}
+      };
+    }
+  };
+};
+
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.Event} event
+ */
+FlexJSTest_again.prototype.$EH0 = function(event)
+{
+  org.apache.flex.utils.Language.as(this.model, models.MyModel, true).labelText = 'Hello World';
+};
+
+
+Object.defineProperties(FlexJSTest_again.prototype, /** @lends {FlexJSTest_again.prototype} */ {
+/** @export */
+    service: {
+    /** @this {FlexJSTest_again} */
+    get: function() {
+      return this.service_;
+    },
+    /** @this {FlexJSTest_again} */
+    set: function(value) {
+      if (value != this.service_) {
+        this.service_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'service', null, value));
+      }
+    }
+  },
+  /** @export */
+    collection: {
+    /** @this {FlexJSTest_again} */
+    get: function() {
+      return this.collection_;
+    },
+    /** @this {FlexJSTest_again} */
+    set: function(value) {
+      if (value != this.collection_) {
+        this.collection_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'collection', null, value));
+      }
+    }
+  }
+});
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/LocalFunction.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/LocalFunction.as b/compiler-jx/src/test/resources/flexjs/files/LocalFunction.as
new file mode 100644
index 0000000..70d3981
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/LocalFunction.as
@@ -0,0 +1,44 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+	
+	public class LocalFunction
+	{
+		public function LocalFunction() {}
+		
+		private var myMemberProperty:String = "got it: ";
+		
+		private function myMemberMethod(value:int):void
+		{
+			function myLocalFunction(value:int):String
+			{
+				return myMemberProperty + value;
+			}
+			
+			trace("WOW! :: " + myLocalFunction(value + 42));
+		}
+		
+		public function doIt():void
+		{
+			myMemberMethod(624);
+		}
+	}
+	
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/LocalFunction_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/LocalFunction_result.js b/compiler-jx/src/test/resources/flexjs/files/LocalFunction_result.js
new file mode 100644
index 0000000..c86bba7
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/LocalFunction_result.js
@@ -0,0 +1,99 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * LocalFunction
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('LocalFunction');
+
+
+
+/**
+ * @constructor
+ */
+LocalFunction = function() {
+};
+
+
+/**
+ * @private
+ * @type {string}
+ */
+LocalFunction.prototype.myMemberProperty = "got it: ";
+
+
+/**
+ * @private
+ * @param {number} value
+ */
+LocalFunction.prototype.myMemberMethod = function(value) {
+  var self = this;
+  function myLocalFunction(value) {
+    return this.myMemberProperty + value;
+  };
+  org.apache.flex.utils.Language.trace("WOW! :: " + myLocalFunction(value + 42));
+};
+
+
+/**
+ * @export
+ */
+LocalFunction.prototype.doIt = function() {
+  this.myMemberMethod(624);
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+LocalFunction.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'LocalFunction', qName: 'LocalFunction'}] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('LocalFunction', LocalFunction);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+LocalFunction.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'LocalFunction': { type: '', declaredBy: 'LocalFunction'},
+        'doIt': { type: 'void', declaredBy: 'LocalFunction'}
+      };
+    }
+  };
+};
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/MyInitialView.mxml b/compiler-jx/src/test/resources/flexjs/files/MyInitialView.mxml
new file mode 100644
index 0000000..2c30fd6
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/MyInitialView.mxml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+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.
+
+-->
+<basic:ViewBase xmlns:fx="http://ns.adobe.com/mxml/2009"
+				xmlns:basic="library://ns.apache.org/flexjs/basic" 
+			   >
+    <fx:Script>
+        <![CDATA[            
+			import org.apache.flex.events.CustomEvent;
+			import org.apache.flex.events.Event;
+			import org.apache.flex.utils.Timer;
+			
+			private var timer:org.apache.flex.utils.Timer;
+			
+			public function get symbol():String
+			{
+				return list.selectedItem as String;
+			}
+			
+			public function get city():String
+			{
+				return cityList.selectedItem as String;
+			}
+			
+			public function get inputText():String
+			{
+				return input.text;
+			}
+			
+			public function get comboBoxValue():String
+			{
+				return String(comboBox.selectedItem);
+			}
+			
+			public function startTimer(event:org.apache.flex.events.Event):void
+			{
+				timer = new org.apache.flex.utils.Timer(1000);
+				timer.addEventListener('timer', timerHandler);
+				timer.start()				
+			}
+			
+			public function timerHandler(event:org.apache.flex.events.Event):void
+			{
+				timerLabel.text = timer.currentCount.toString();	
+			}
+        ]]>
+    </fx:Script>
+	<basic:Label id="lbl" x="100" y="25" >
+		<basic:beads>
+			<basic:SimpleBinding eventName="labelTextChanged"
+								 sourceID="applicationModel"
+								 sourcePropertyName="labelText"
+								 destinationPropertyName="text" />
+		</basic:beads>
+	</basic:Label>
+	<basic:TextButton text="Let's Start Timer" x="100" y="75" click="startTimer(event)" />
+	<basic:TextButton text="Stop Timer" x="100" y="100" click="timer.removeEventListener('timer', timerHandler);timer.stop()" />
+	<basic:Label id="timerLabel" x="100" y="125" />
+	
+	<basic:List id="cityList"  x="200" y="75" width="100" height="75" change="dispatchEvent(new CustomEvent('cityListChanged'))">
+		<basic:beads>
+			<basic:ConstantBinding
+				sourceID="applicationModel"
+				sourcePropertyName="cities"
+				destinationPropertyName="dataProvider" />
+		</basic:beads>
+	</basic:List>
+	
+	<basic:TextArea x="320" y="25" width="150" height="75">
+		<basic:beads>
+			<basic:SimpleBinding eventName="labelTextChanged"
+								 sourceID="applicationModel"
+								 sourcePropertyName="labelText"
+								 destinationPropertyName="text" />
+		</basic:beads>
+	</basic:TextArea>
+	<basic:TextInput id="input" x="320" y="110" />
+	<basic:TextButton text="Transfer" x="320" y="138" click="dispatchEvent(new CustomEvent('transferClicked'))" />
+	
+	<basic:CheckBox id="checkbox" x="320" y="170" text="Check Me" />
+	
+	<basic:RadioButton groupName="group1" text="Apples" value="0" x="100" y="150" />
+	<basic:RadioButton groupName="group1" text="Oranges" value="1" x="100" y="170" selected="true" />
+	<basic:RadioButton groupName="group1" text="Grapes" value="2" x="100" y="190" />
+	
+	<basic:RadioButton groupName="group2" text="Red" value="red" x="100" y="250" selected="true" />
+	<basic:RadioButton groupName="group2" text="Green" value="green" x="100" y="270" />
+	<basic:RadioButton groupName="group2" text="Blue" value="blue" x="100" y="290"  />
+	
+	<basic:DropDownList id="list" x="200" y="200" width="100" height="24" change="dispatchEvent(new CustomEvent('listChanged'))">
+		<basic:beads>
+			<basic:ConstantBinding
+				sourceID="applicationModel"
+				sourcePropertyName="strings"
+				destinationPropertyName="dataProvider" />
+		</basic:beads>
+	</basic:DropDownList>
+	<basic:TextButton text="OK" x="200" y="230" click="dispatchEvent(new CustomEvent('buttonClicked'))" />
+	
+	<basic:ComboBox id="comboBox" x="320" y="200" width="100" change="dispatchEvent(new CustomEvent('comboBoxChanged'))">
+		<basic:beads>
+			<basic:ConstantBinding
+				sourceID="applicationModel"
+				sourcePropertyName="cities"
+				destinationPropertyName="dataProvider" />
+		</basic:beads>
+	</basic:ComboBox>
+    
+</basic:ViewBase>

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
new file mode 100644
index 0000000..95b90ce
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
@@ -0,0 +1,889 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * MyInitialView
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('MyInitialView');
+
+goog.require('org.apache.flex.core.ViewBase');
+goog.require('org.apache.flex.html.Label');
+goog.require('org.apache.flex.binding.SimpleBinding');
+goog.require('org.apache.flex.html.TextButton');
+goog.require('org.apache.flex.html.List');
+goog.require('org.apache.flex.binding.ConstantBinding');
+goog.require('org.apache.flex.html.TextArea');
+goog.require('org.apache.flex.html.TextInput');
+goog.require('org.apache.flex.html.CheckBox');
+goog.require('org.apache.flex.html.RadioButton');
+goog.require('org.apache.flex.html.DropDownList');
+goog.require('org.apache.flex.html.ComboBox');
+goog.require('org.apache.flex.events.CustomEvent');
+goog.require('org.apache.flex.events.Event');
+goog.require('org.apache.flex.events.MouseEvent');
+goog.require('org.apache.flex.utils.Timer');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.ViewBase}
+ */
+MyInitialView = function() {
+  MyInitialView.base(this, 'constructor');
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.Label}
+   */
+  this.lbl_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.binding.SimpleBinding}
+   */
+  this.$ID0_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.TextButton}
+   */
+  this.$ID1_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.TextButton}
+   */
+  this.$ID2_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.Label}
+   */
+  this.timerLabel_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.List}
+   */
+  this.cityList_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.binding.ConstantBinding}
+   */
+  this.$ID3_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.TextArea}
+   */
+  this.$ID5_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.binding.SimpleBinding}
+   */
+  this.$ID4_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.TextInput}
+   */
+  this.input_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.TextButton}
+   */
+  this.$ID6_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.CheckBox}
+   */
+  this.checkbox_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.RadioButton}
+   */
+  this.$ID7_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.RadioButton}
+   */
+  this.$ID8_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.RadioButton}
+   */
+  this.$ID9_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.RadioButton}
+   */
+  this.$ID10_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.RadioButton}
+   */
+  this.$ID11_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.RadioButton}
+   */
+  this.$ID12_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.DropDownList}
+   */
+  this.list_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.binding.ConstantBinding}
+   */
+  this.$ID13_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.TextButton}
+   */
+  this.$ID14_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.html.ComboBox}
+   */
+  this.comboBox_;
+  
+  /**
+   * @private
+   * @type {org.apache.flex.binding.ConstantBinding}
+   */
+  this.$ID15_;
+  
+  /**
+   * @private
+   * @type {Array}
+   */
+  this.mxmldd;
+  
+  /**
+   * @private
+   * @type {Array}
+   */
+  this.mxmldp;
+};
+goog.inherits(MyInitialView, org.apache.flex.core.ViewBase);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+MyInitialView.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyInitialView', qName: 'MyInitialView' }] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('MyInitialView', MyInitialView);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+MyInitialView.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'symbol': { type: 'String', declaredBy: 'MyInitialView'},
+        'city': { type: 'String', declaredBy: 'MyInitialView'},
+        'inputText': { type: 'String', declaredBy: 'MyInitialView'},
+        'comboBoxValue': { type: 'String', declaredBy: 'MyInitialView'},
+        'lbl': { type: 'org.apache.flex.html.Label', declaredBy: 'MyInitialView'},
+        'timerLabel': { type: 'org.apache.flex.html.Label', declaredBy: 'MyInitialView'},
+        'cityList': { type: 'org.apache.flex.html.List', declaredBy: 'MyInitialView'},
+        'input': { type: 'org.apache.flex.html.TextInput', declaredBy: 'MyInitialView'},
+        'checkbox': { type: 'org.apache.flex.html.CheckBox', declaredBy: 'MyInitialView'},
+        'list': { type: 'org.apache.flex.html.DropDownList', declaredBy: 'MyInitialView'},
+        'comboBox': { type: 'org.apache.flex.html.ComboBox', declaredBy: 'MyInitialView'}
+      };
+    },
+    methods: function () {
+      return {
+        'startTimer': { type: 'void', declaredBy: 'MyInitialView'},
+        'timerHandler': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH0': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH1': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH2': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH3': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH4': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH5': { type: 'void', declaredBy: 'MyInitialView'},
+        '$EH6': { type: 'void', declaredBy: 'MyInitialView'}
+      };
+    }
+  };
+};
+
+
+
+/**
+ * @private
+ * @type {org.apache.flex.utils.Timer}
+ */
+MyInitialView.prototype.timer;
+
+
+;
+
+
+;
+
+
+;
+
+
+;
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.Event} event
+ */
+MyInitialView.prototype.startTimer = function(event) {
+  this.timer = new org.apache.flex.utils.Timer(1000);
+  this.timer.addEventListener('timer', org.apache.flex.utils.Language.closure(this.timerHandler, this, 'timerHandler'));
+  this.timer.start();
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.Event} event
+ */
+MyInitialView.prototype.timerHandler = function(event) {
+  this.timerLabel.text = this.timer.currentCount.toString();
+};
+
+
+
+
+
+Object.defineProperties(MyInitialView.prototype, /** @lends {MyInitialView.prototype} */ {
+/** @export */
+symbol: {
+get: /** @this {MyInitialView} */ function() {
+  return org.apache.flex.utils.Language.as(this.list.selectedItem, String);
+}},
+/** @export */
+city: {
+get: /** @this {MyInitialView} */ function() {
+  return org.apache.flex.utils.Language.as(this.cityList.selectedItem, String);
+}},
+/** @export */
+inputText: {
+get: /** @this {MyInitialView} */ function() {
+  return this.input.text;
+}},
+/** @export */
+comboBoxValue: {
+get: /** @this {MyInitialView} */ function() {
+  return String(this.comboBox.selectedItem);
+}}}
+);/**
+ * @export
+ * @param {org.apache.flex.events.MouseEvent} event
+ */
+MyInitialView.prototype.$EH0 = function(event)
+{
+  this.startTimer(event);
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.MouseEvent} event
+ */
+MyInitialView.prototype.$EH1 = function(event)
+{
+  this.timer.removeEventListener('timer', org.apache.flex.utils.Language.closure(this.timerHandler, this, 'timerHandler'));
+  this.timer.stop();
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.Event} event
+ */
+MyInitialView.prototype.$EH2 = function(event)
+{
+  this.dispatchEvent(new org.apache.flex.events.CustomEvent('cityListChanged'));
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.MouseEvent} event
+ */
+MyInitialView.prototype.$EH3 = function(event)
+{
+  this.dispatchEvent(new org.apache.flex.events.CustomEvent('transferClicked'));
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.Event} event
+ */
+MyInitialView.prototype.$EH4 = function(event)
+{
+  this.dispatchEvent(new org.apache.flex.events.CustomEvent('listChanged'));
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.MouseEvent} event
+ */
+MyInitialView.prototype.$EH5 = function(event)
+{
+  this.dispatchEvent(new org.apache.flex.events.CustomEvent('buttonClicked'));
+};
+
+
+/**
+ * @export
+ * @param {org.apache.flex.events.Event} event
+ */
+MyInitialView.prototype.$EH6 = function(event)
+{
+  this.dispatchEvent(new org.apache.flex.events.CustomEvent('comboBoxChanged'));
+};
+
+
+Object.defineProperties(MyInitialView.prototype, /** @lends {MyInitialView.prototype} */ {
+/** @export */
+    lbl: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.lbl_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.lbl_) {
+        this.lbl_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'lbl', null, value));
+      }
+    }
+  },
+  /** @export */
+    timerLabel: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.timerLabel_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.timerLabel_) {
+        this.timerLabel_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'timerLabel', null, value));
+      }
+    }
+  },
+  /** @export */
+    cityList: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.cityList_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.cityList_) {
+        this.cityList_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'cityList', null, value));
+      }
+    }
+  },
+  /** @export */
+    input: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.input_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.input_) {
+        this.input_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'input', null, value));
+      }
+    }
+  },
+  /** @export */
+    checkbox: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.checkbox_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.checkbox_) {
+        this.checkbox_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'checkbox', null, value));
+      }
+    }
+  },
+  /** @export */
+    list: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.list_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.list_) {
+        this.list_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'list', null, value));
+      }
+    }
+  },
+  /** @export */
+    comboBox: {
+    /** @this {MyInitialView} */
+    get: function() {
+      return this.comboBox_;
+    },
+    /** @this {MyInitialView} */
+    set: function(value) {
+      if (value != this.comboBox_) {
+        this.comboBox_ = value;
+        this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(this, 'comboBox', null, value));
+      }
+    }
+  },
+  'MXMLDescriptor': {
+    /** @this {MyInitialView} */
+    get: function() {
+      {
+        if (this.mxmldd == undefined)
+        {
+          /** @type {Array} */
+          var arr = org.apache.flex.utils.Language.superGetter(MyInitialView,this, 'MXMLDescriptor');
+          /** @type {Array} */
+          var data = [
+      org.apache.flex.html.Label,
+4,
+'id',
+true,
+'lbl',
+'x',
+true,
+100,
+'y',
+true,
+25,
+'beads',
+null, [org.apache.flex.binding.SimpleBinding, 5, '_id', true, '$ID0', 'eventName', true, 'labelTextChanged', 'sourceID', true, 'applicationModel', 'sourcePropertyName', true, 'labelText', 'destinationPropertyName', true, 'text', 0, 0, null],
+0,
+0,
+null,
+org.apache.flex.html.TextButton,
+4,
+'_id',
+true,
+'$ID1',
+'text',
+true,
+'Let\'s Start Timer',
+'x',
+true,
+100,
+'y',
+true,
+75,
+0,
+1,
+'click',
+this.$EH0,
+null,
+org.apache.flex.html.TextButton,
+4,
+'_id',
+true,
+'$ID2',
+'text',
+true,
+'Stop Timer',
+'x',
+true,
+100,
+'y',
+true,
+100,
+0,
+1,
+'click',
+this.$EH1,
+null,
+org.apache.flex.html.Label,
+3,
+'id',
+true,
+'timerLabel',
+'x',
+true,
+100,
+'y',
+true,
+125,
+0,
+0,
+null,
+org.apache.flex.html.List,
+6,
+'id',
+true,
+'cityList',
+'x',
+true,
+200,
+'y',
+true,
+75,
+'width',
+true,
+100,
+'height',
+true,
+75,
+'beads',
+null, [org.apache.flex.binding.ConstantBinding, 4, '_id', true, '$ID3', 'sourceID', true, 'applicationModel', 'sourcePropertyName', true, 'cities', 'destinationPropertyName', true, 'dataProvider', 0, 0, null],
+0,
+1,
+'change',
+this.$EH2,
+null,
+org.apache.flex.html.TextArea,
+6,
+'_id',
+true,
+'$ID5',
+'x',
+true,
+320,
+'y',
+true,
+25,
+'width',
+true,
+150,
+'height',
+true,
+75,
+'beads',
+null, [org.apache.flex.binding.SimpleBinding, 5, '_id', true, '$ID4', 'eventName', true, 'labelTextChanged', 'sourceID', true, 'applicationModel', 'sourcePropertyName', true, 'labelText', 'destinationPropertyName', true, 'text', 0, 0, null],
+0,
+0,
+null,
+org.apache.flex.html.TextInput,
+3,
+'id',
+true,
+'input',
+'x',
+true,
+320,
+'y',
+true,
+110,
+0,
+0,
+null,
+org.apache.flex.html.TextButton,
+4,
+'_id',
+true,
+'$ID6',
+'text',
+true,
+'Transfer',
+'x',
+true,
+320,
+'y',
+true,
+138,
+0,
+1,
+'click',
+this.$EH3,
+null,
+org.apache.flex.html.CheckBox,
+4,
+'id',
+true,
+'checkbox',
+'x',
+true,
+320,
+'y',
+true,
+170,
+'text',
+true,
+'Check Me',
+0,
+0,
+null,
+org.apache.flex.html.RadioButton,
+6,
+'_id',
+true,
+'$ID7',
+'groupName',
+true,
+'group1',
+'text',
+true,
+'Apples',
+'value',
+true,
+0,
+'x',
+true,
+100,
+'y',
+true,
+150,
+0,
+0,
+null,
+org.apache.flex.html.RadioButton,
+7,
+'_id',
+true,
+'$ID8',
+'groupName',
+true,
+'group1',
+'text',
+true,
+'Oranges',
+'value',
+true,
+1,
+'x',
+true,
+100,
+'y',
+true,
+170,
+'selected',
+true,
+true,
+0,
+0,
+null,
+org.apache.flex.html.RadioButton,
+6,
+'_id',
+true,
+'$ID9',
+'groupName',
+true,
+'group1',
+'text',
+true,
+'Grapes',
+'value',
+true,
+2,
+'x',
+true,
+100,
+'y',
+true,
+190,
+0,
+0,
+null,
+org.apache.flex.html.RadioButton,
+7,
+'_id',
+true,
+'$ID10',
+'groupName',
+true,
+'group2',
+'text',
+true,
+'Red',
+'value',
+true,
+16711680,
+'x',
+true,
+100,
+'y',
+true,
+250,
+'selected',
+true,
+true,
+0,
+0,
+null,
+org.apache.flex.html.RadioButton,
+6,
+'_id',
+true,
+'$ID11',
+'groupName',
+true,
+'group2',
+'text',
+true,
+'Green',
+'value',
+true,
+32768,
+'x',
+true,
+100,
+'y',
+true,
+270,
+0,
+0,
+null,
+org.apache.flex.html.RadioButton,
+6,
+'_id',
+true,
+'$ID12',
+'groupName',
+true,
+'group2',
+'text',
+true,
+'Blue',
+'value',
+true,
+255,
+'x',
+true,
+100,
+'y',
+true,
+290,
+0,
+0,
+null,
+org.apache.flex.html.DropDownList,
+6,
+'id',
+true,
+'list',
+'x',
+true,
+200,
+'y',
+true,
+200,
+'width',
+true,
+100,
+'height',
+true,
+24,
+'beads',
+null, [org.apache.flex.binding.ConstantBinding, 4, '_id', true, '$ID13', 'sourceID', true, 'applicationModel', 'sourcePropertyName', true, 'strings', 'destinationPropertyName', true, 'dataProvider', 0, 0, null],
+0,
+1,
+'change',
+this.$EH4,
+null,
+org.apache.flex.html.TextButton,
+4,
+'_id',
+true,
+'$ID14',
+'text',
+true,
+'OK',
+'x',
+true,
+200,
+'y',
+true,
+230,
+0,
+1,
+'click',
+this.$EH5,
+null,
+org.apache.flex.html.ComboBox,
+5,
+'id',
+true,
+'comboBox',
+'x',
+true,
+320,
+'y',
+true,
+200,
+'width',
+true,
+100,
+'beads',
+null, [org.apache.flex.binding.ConstantBinding, 4, '_id', true, '$ID15', 'sourceID', true, 'applicationModel', 'sourcePropertyName', true, 'cities', 'destinationPropertyName', true, 'dataProvider', 0, 0, null],
+0,
+1,
+'change',
+this.$EH6,
+null
+      ];
+        
+          if (arr)
+            this.mxmldd = arr.concat(data);
+          else
+            this.mxmldd = data;
+        }
+        return this.mxmldd;
+      }
+      }
+    }
+  });
+  

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.as b/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.as
new file mode 100644
index 0000000..a39606b
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.as
@@ -0,0 +1,40 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+    import org.apache.flex.collections.converters.JSONItemConverter;
+    
+    public class StockDataJSONItemConverter extends JSONItemConverter
+    {
+        public function StockDataJSONItemConverter()
+        {
+            super();
+        }
+        
+        override public function convertItem(data:String):Object
+        {
+            var obj:Object = super.convertItem(data);
+			if (obj["query"]["count"] == 0)
+				return "No Data";
+			
+			obj = obj["query"]["results"]["quote"];
+			return obj;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.js b/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.js
new file mode 100644
index 0000000..8e8037e
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/StockDataJSONItemConverter.js
@@ -0,0 +1,39 @@
+/**
+ * Licensed 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.
+ */
+goog.provide('StockDataJSONItemConverter');
+
+goog.require('org.apache.flex.net.JSONItemConverter');
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.net.JSONItemConverter}
+ */
+StockDataJSONItemConverter = function() {
+	goog.base(this);
+}
+goog.inherits(StockDataJSONItemConverter, org.apache.flex.net.JSONItemConverter);
+
+/**
+ * @export
+ * @param {string} data
+ * @return {Object}
+ * @override
+ */
+StockDataJSONItemConverter.prototype.convertItem = function(data) {
+	var /** @type {Object} */ obj = goog.base(this, 'convertItem', data);
+	if (obj["query"]["count"] == 0)
+		return "No Data";
+	obj = obj["query"]["results"]["quote"];
+	return obj;
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/controllers/MyController.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/controllers/MyController.as b/compiler-jx/src/test/resources/flexjs/files/controllers/MyController.as
new file mode 100644
index 0000000..d7b0547
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/controllers/MyController.as
@@ -0,0 +1,92 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 controllers
+{
+	import org.apache.flex.core.Application;
+	import org.apache.flex.core.IDocument;
+	import org.apache.flex.events.Event;
+	
+	
+	import models.MyModel;
+	
+	public class MyController implements IDocument
+	{
+		public function MyController(app:Application = null)
+		{
+			if (app)
+			{
+				this.app = app as FlexJSTest_again;
+				app.addEventListener("viewChanged", viewChangeHandler);
+			}
+		}
+		
+		private var queryBegin:String = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22";
+		private var queryEnd:String = "%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
+		private var app:FlexJSTest_again;
+		
+		private function viewChangeHandler(event:Event):void
+		{
+			app.initialView.addEventListener("buttonClicked", buttonClickHandler);
+			app.initialView.addEventListener("listChanged", listChangedHandler);
+			app.initialView.addEventListener("cityListChanged", cityListChangeHandler);
+			app.initialView.addEventListener("transferClicked", transferClickHandler);
+			app.initialView.addEventListener("comboBoxChanged", comboBoxChangeHandler);
+		}
+		
+		private function buttonClickHandler(event:Event):void
+		{
+			var sym:String = MyInitialView(app.initialView).symbol;
+			app.service.url = queryBegin + sym + queryEnd;
+			app.service.send();
+			app.service.addEventListener("complete", completeHandler);
+		}
+		
+		private function completeHandler(event:Event):void
+		{
+			MyModel(app.model).labelText = app.collection.getItemAt(0) as String;
+		}
+		
+		private function listChangedHandler(event:Event):void
+		{
+			MyModel(app.model).labelText = MyInitialView(app.initialView).symbol;
+		}
+		
+		private function cityListChangeHandler(event:Event):void
+		{
+			MyModel(app.model).labelText = MyInitialView(app.initialView).city;
+		}
+		
+		private function transferClickHandler(event:Event):void
+		{
+			MyModel(app.model).labelText = MyInitialView(app.initialView).inputText;
+		}
+		
+		private function comboBoxChangeHandler(event:Event):void
+		{
+			MyModel(app.model).labelText = MyInitialView(app.initialView).comboBoxValue;
+		}
+		
+		public function setDocument(document:Object, id:String = null):void
+		{
+			this.app = document as FlexJSTest_again;
+			app.addEventListener("viewChanged", viewChangeHandler);
+		}
+		
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/controllers/MyController_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/controllers/MyController_result.js b/compiler-jx/src/test/resources/flexjs/files/controllers/MyController_result.js
new file mode 100644
index 0000000..883b408
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/controllers/MyController_result.js
@@ -0,0 +1,181 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * controllers.MyController
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('controllers.MyController');
+
+
+
+/**
+ * @constructor
+ * @implements {org.apache.flex.core.IDocument}
+ * @param {org.apache.flex.core.Application=} app
+ */
+controllers.MyController = function(app) {
+  app = typeof app !== 'undefined' ? app : null;
+  if (app) {
+    this.app = org.apache.flex.utils.Language.as(app, FlexJSTest_again);
+    app.addEventListener("viewChanged", org.apache.flex.utils.Language.closure(this.viewChangeHandler, this, 'viewChangeHandler'));
+  }
+};
+
+
+/**
+ * @private
+ * @type {string}
+ */
+controllers.MyController.prototype.queryBegin = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22";
+
+
+/**
+ * @private
+ * @type {string}
+ */
+controllers.MyController.prototype.queryEnd = "%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
+
+
+/**
+ * @private
+ * @type {FlexJSTest_again}
+ */
+controllers.MyController.prototype.app;
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.viewChangeHandler = function(event) {
+  this.app.initialView.addEventListener("buttonClicked", org.apache.flex.utils.Language.closure(this.buttonClickHandler, this, 'buttonClickHandler'));
+  this.app.initialView.addEventListener("listChanged", org.apache.flex.utils.Language.closure(this.listChangedHandler, this, 'listChangedHandler'));
+  this.app.initialView.addEventListener("cityListChanged", org.apache.flex.utils.Language.closure(this.cityListChangeHandler, this, 'cityListChangeHandler'));
+  this.app.initialView.addEventListener("transferClicked", org.apache.flex.utils.Language.closure(this.transferClickHandler, this, 'transferClickHandler'));
+  this.app.initialView.addEventListener("comboBoxChanged", org.apache.flex.utils.Language.closure(this.comboBoxChangeHandler, this, 'comboBoxChangeHandler'));
+};
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.buttonClickHandler = function(event) {
+  var /** @type {string} */ sym = org.apache.flex.utils.Language.as(this.app.initialView, MyInitialView, true).symbol;
+  this.app.service.url = this.queryBegin + sym + this.queryEnd;
+  this.app.service.send();
+  this.app.service.addEventListener("complete", org.apache.flex.utils.Language.closure(this.completeHandler, this, 'completeHandler'));
+};
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.completeHandler = function(event) {
+  org.apache.flex.utils.Language.as(this.app.model, models.MyModel, true).labelText = org.apache.flex.utils.Language.as(this.app.collection.getItemAt(0), String);
+};
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.listChangedHandler = function(event) {
+  org.apache.flex.utils.Language.as(this.app.model, models.MyModel, true).labelText = org.apache.flex.utils.Language.as(this.app.initialView, MyInitialView, true).symbol;
+};
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.cityListChangeHandler = function(event) {
+  org.apache.flex.utils.Language.as(this.app.model, models.MyModel, true).labelText = org.apache.flex.utils.Language.as(this.app.initialView, MyInitialView, true).city;
+};
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.transferClickHandler = function(event) {
+  org.apache.flex.utils.Language.as(this.app.model, models.MyModel, true).labelText = org.apache.flex.utils.Language.as(this.app.initialView, MyInitialView, true).inputText;
+};
+
+
+/**
+ * @private
+ * @param {org.apache.flex.events.Event} event
+ */
+controllers.MyController.prototype.comboBoxChangeHandler = function(event) {
+  org.apache.flex.utils.Language.as(this.app.model, models.MyModel, true).labelText = org.apache.flex.utils.Language.as(this.app.initialView, MyInitialView, true).comboBoxValue;
+};
+
+
+/**
+ * @export
+ * @param {Object} document
+ * @param {string=} id
+ */
+controllers.MyController.prototype.setDocument = function(document, id) {
+  id = typeof id !== 'undefined' ? id : null;
+  this.app = org.apache.flex.utils.Language.as(document, FlexJSTest_again);
+  this.app.addEventListener("viewChanged", org.apache.flex.utils.Language.closure(this.viewChangeHandler, this, 'viewChangeHandler'));
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+controllers.MyController.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyController', qName: 'controllers.MyController'}], interfaces: [org.apache.flex.core.IDocument] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('controllers.MyController', controllers.MyController);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+controllers.MyController.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'MyController': { type: '', declaredBy: 'controllers.MyController'},
+        'setDocument': { type: 'void', declaredBy: 'controllers.MyController'}
+      };
+    }
+  };
+};
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/models/MyModel.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/models/MyModel.as b/compiler-jx/src/test/resources/flexjs/files/models/MyModel.as
new file mode 100644
index 0000000..1dc23e6
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/models/MyModel.as
@@ -0,0 +1,59 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 models
+{
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.EventDispatcher;
+	
+	public class MyModel extends EventDispatcher
+	{
+		public function MyModel()
+		{
+		}
+		
+		private var _labelText:String;
+		
+		public function get labelText():String
+		{
+			return _labelText;
+		}
+		
+		public function set labelText(value:String):void
+		{
+			if (value != _labelText)
+			{
+				_labelText = value;
+				dispatchEvent(new Event("labelTextChanged"));
+			}
+		}
+        
+        private var _strings:Array = ["AAPL", "ADBE", "GOOG", "MSFT", "YHOO"];
+        public function get strings():Array
+        {
+            return _strings;
+        }
+		
+		private var _cities:Array = ["London", "Miami", "Paris", "Sydney", "Tokyo"];
+		public function get cities():Array
+		{
+			return _cities;
+		}
+
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
new file mode 100644
index 0000000..7a26fe9
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
@@ -0,0 +1,125 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * models.MyModel
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('models.MyModel');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.events.EventDispatcher}
+ */
+models.MyModel = function() {
+  models.MyModel.base(this, 'constructor');
+
+this._strings = ["AAPL", "ADBE", "GOOG", "MSFT", "YHOO"];
+this._cities = ["London", "Miami", "Paris", "Sydney", "Tokyo"];
+};
+goog.inherits(models.MyModel, org.apache.flex.events.EventDispatcher);
+
+
+/**
+ * @private
+ * @type {string}
+ */
+models.MyModel.prototype._labelText;
+
+
+/**
+ * @private
+ * @type {Array}
+ */
+models.MyModel.prototype._strings;
+
+
+/**
+ * @private
+ * @type {Array}
+ */
+models.MyModel.prototype._cities;
+
+
+Object.defineProperties(models.MyModel.prototype, /** @lends {models.MyModel.prototype} */ {
+/** @export */
+labelText: {
+get: /** @this {models.MyModel} */ function() {
+  return this._labelText;
+},
+set: /** @this {models.MyModel} */ function(value) {
+  if (value != this._labelText) {
+    this._labelText = value;
+    this.dispatchEvent(new org.apache.flex.events.Event("labelTextChanged"));
+  }
+}},
+/** @export */
+strings: {
+get: /** @this {models.MyModel} */ function() {
+  return this._strings;
+}},
+/** @export */
+cities: {
+get: /** @this {models.MyModel} */ function() {
+  return this._cities;
+}}}
+);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+models.MyModel.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'MyModel', qName: 'models.MyModel'}] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('models.MyModel', models.MyModel);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+models.MyModel.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+        'labelText': { type: 'String', declaredBy: 'models.MyModel'},
+        'strings': { type: 'Array', declaredBy: 'models.MyModel'},
+        'cities': { type: 'Array', declaredBy: 'models.MyModel'}
+      };
+    },
+    methods: function () {
+      return {
+        'MyModel': { type: '', declaredBy: 'models.MyModel'}
+      };
+    }
+  };
+};
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/wildcard_import.mxml
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/wildcard_import.mxml b/compiler-jx/src/test/resources/flexjs/files/wildcard_import.mxml
new file mode 100644
index 0000000..99406bc
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/wildcard_import.mxml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+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.
+
+-->
+<basic:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
+				   xmlns:basic="library://ns.apache.org/flexjs/basic" 
+				   >
+	<fx:Script>
+		<![CDATA[
+			
+			import org.apache.flex.html.*;
+			
+			private function tmp():void
+			{
+				var myButton:Button;
+				
+				myButton = new Button();				
+			}
+			
+		]]>
+	</fx:Script>
+</basic:Application>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/files/wildcard_import_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/wildcard_import_result.js b/compiler-jx/src/test/resources/flexjs/files/wildcard_import_result.js
new file mode 100644
index 0000000..4ef8a61
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/files/wildcard_import_result.js
@@ -0,0 +1,99 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * wildcard_import
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('wildcard_import');
+
+goog.require('org.apache.flex.core.Application');
+goog.require('org.apache.flex.html.Button');
+
+
+
+/**
+ * @constructor
+ * @extends {org.apache.flex.core.Application}
+ */
+wildcard_import = function() {
+  wildcard_import.base(this, 'constructor');
+  
+  /**
+   * @private
+   * @type {Array}
+   */
+  this.mxmldd;
+  
+  /**
+   * @private
+   * @type {Array}
+   */
+  this.mxmldp;
+};
+goog.inherits(wildcard_import, org.apache.flex.core.Application);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+wildcard_import.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'wildcard_import', qName: 'wildcard_import' }] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('wildcard_import', wildcard_import);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+wildcard_import.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};
+
+
+
+/**
+ * @private
+ */
+wildcard_import.prototype.tmp = function() {
+  var /** @type {org.apache.flex.html.Button} */ myButton;
+  myButton = new org.apache.flex.html.Button();
+};
+
+
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test.as
new file mode 100644
index 0000000..9190d6e
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test.as
@@ -0,0 +1,43 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+	import classes.A;
+	import classes.C;
+	import interfaces.IC;
+
+  public class Test extends A
+  {
+    public function Test()
+    {
+      super();
+    }
+    
+    override public function someFunction():C
+    {
+		return null;
+    }
+	
+	override public function someOtherFunction():IC
+	{
+		return null;
+    }
+	
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test_result.js
new file mode 100644
index 0000000..8f8fd20
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/Test_result.js
@@ -0,0 +1,94 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * Test
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('Test');
+
+goog.require('classes.A');
+
+
+
+/**
+ * @constructor
+ * @extends {classes.A}
+ */
+Test = function() {
+  Test.base(this, 'constructor');
+};
+goog.inherits(Test, classes.A);
+
+
+/**
+ * @export
+ * @override
+ */
+Test.prototype.someFunction = function() {
+  return null;
+};
+
+
+/**
+ * @export
+ * @override
+ */
+Test.prototype.someOtherFunction = function() {
+  return null;
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+Test.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Test', qName: 'Test'}] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('Test', Test);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Test.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Test': { type: '', declaredBy: 'Test'},
+        'someFunction': { type: 'C', declaredBy: 'Test'},
+        'someOtherFunction': { type: 'IC', declaredBy: 'Test'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A.as
new file mode 100644
index 0000000..004a607
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A.as
@@ -0,0 +1,41 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 classes
+{
+  import interfaces.IA;
+  import interfaces.IB;
+  
+  public class A implements IA
+  {
+    public function A()
+    {
+    }
+	
+	public function someFunction():B
+	{
+		return null;
+	}
+	
+	public function someOtherFunction():IB
+	{
+		return null;
+	}
+
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A_result.js
new file mode 100644
index 0000000..e3320af
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/A_result.js
@@ -0,0 +1,92 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * classes.A
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('classes.A');
+
+goog.require('interfaces.IA');
+
+
+
+/**
+ * @constructor
+ * @implements {interfaces.IA}
+ */
+classes.A = function() {
+};
+
+
+/**
+ * @export
+ * @return {classes.B}
+ */
+classes.A.prototype.someFunction = function() {
+  return null;
+};
+
+
+/**
+ * @export
+ * @return {interfaces.IB}
+ */
+classes.A.prototype.someOtherFunction = function() {
+  return null;
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+classes.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'classes.A'}], interfaces: [interfaces.IA] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('classes.A', classes.A);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+classes.A.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'A': { type: '', declaredBy: 'classes.A'},
+        'someFunction': { type: 'B', declaredBy: 'classes.A'},
+        'someOtherFunction': { type: 'IB', declaredBy: 'classes.A'}
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B.as
new file mode 100644
index 0000000..b410e59
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B.as
@@ -0,0 +1,25 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 classes
+{
+    public class B
+    {
+        public function B() {}
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B_result.js
new file mode 100644
index 0000000..8aaa2f7
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/B_result.js
@@ -0,0 +1,69 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * classes.B
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('classes.B');
+
+
+
+/**
+ * @constructor
+ */
+classes.B = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+classes.B.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'B', qName: 'classes.B'}] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('classes.B', classes.B);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+classes.B.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'B': { type: '', declaredBy: 'classes.B'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C.as
new file mode 100644
index 0000000..d414a26
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C.as
@@ -0,0 +1,25 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 classes
+{
+    public class C
+    {
+        public function C() {}
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C_result.js
new file mode 100644
index 0000000..46f094f
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/classes/C_result.js
@@ -0,0 +1,69 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * classes.C
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('classes.C');
+
+
+
+/**
+ * @constructor
+ */
+classes.C = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+classes.C.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'C', qName: 'classes.C'}] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('classes.C', classes.C);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+classes.C.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'C': { type: '', declaredBy: 'classes.C'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA.as
new file mode 100644
index 0000000..6f363bc
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA.as
@@ -0,0 +1,28 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 interfaces
+{
+  import classes.B;
+  
+  public interface IA 
+  {
+	  function someFunction():B;
+	  function someOtherFunction():IB;
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA_result.js
new file mode 100644
index 0000000..04220e1
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IA_result.js
@@ -0,0 +1,69 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * interfaces.IA
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('interfaces.IA');
+
+
+
+
+/**
+ * @interface
+ */
+interfaces.IA = function() {
+};
+interfaces.IA.prototype.someFunction = function() {
+};
+interfaces.IA.prototype.someOtherFunction = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+interfaces.IA.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IA', qName: 'interfaces.IA'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.IA.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'someFunction': { type: 'B', declaredBy: 'interfaces.IA'},
+        'someOtherFunction': { type: 'IB', declaredBy: 'interfaces.IA'}
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB.as
new file mode 100644
index 0000000..a995635
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB.as
@@ -0,0 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 interfaces
+{
+    public interface IB {}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB_result.js
new file mode 100644
index 0000000..01a7fe6
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IB_result.js
@@ -0,0 +1,62 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * interfaces.IB
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('interfaces.IB');
+
+
+
+/**
+ * @interface
+ */
+interfaces.IB = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+interfaces.IB.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IB', qName: 'interfaces.IB'}] };
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.IB.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC.as b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC.as
new file mode 100644
index 0000000..3a650c7
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC.as
@@ -0,0 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 interfaces
+{
+  public interface IC {}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC_result.js b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC_result.js
new file mode 100644
index 0000000..f9b77c6
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/bad_overrides/interfaces/IC_result.js
@@ -0,0 +1,62 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * interfaces.IC
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('interfaces.IC');
+
+
+
+/**
+ * @interface
+ */
+interfaces.IC = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+interfaces.IC.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'IC', qName: 'interfaces.IC'}]};
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+interfaces.IC.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+      };
+    }
+  };
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/circular/Base.as
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/circular/Base.as b/compiler-jx/src/test/resources/flexjs/projects/circular/Base.as
new file mode 100644
index 0000000..64798d8
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/circular/Base.as
@@ -0,0 +1,30 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+	import Super;
+
+  public class Base extends Super
+  {
+    public function Base() 
+    {
+      super();
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c3dce49f/compiler-jx/src/test/resources/flexjs/projects/circular/Base_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/circular/Base_result.js b/compiler-jx/src/test/resources/flexjs/projects/circular/Base_result.js
new file mode 100644
index 0000000..e9f581c
--- /dev/null
+++ b/compiler-jx/src/test/resources/flexjs/projects/circular/Base_result.js
@@ -0,0 +1,74 @@
+/**
+ * Licensed 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.
+ */
+/**
+ * Base
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes|accessControls}
+ */
+
+goog.provide('Base');
+
+goog.require('Super');
+
+
+
+/**
+ * @constructor
+ * @extends {Super}
+ */
+Base = function() {
+  Base.base(this, 'constructor');
+};
+goog.inherits(Base, Super);
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+Base.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Base', qName: 'Base'}] };
+
+
+/**
+ * Prevent renaming of class. Needed for reflection.
+ */
+goog.exportSymbol('Base', Base);
+
+
+
+/**
+ * Reflection
+ *
+ * @return {Object.<string, Function>}
+ */
+Base.prototype.FLEXJS_REFLECTION_INFO = function () {
+  return {
+    variables: function () {
+      return {
+      };
+    },
+    accessors: function () {
+      return {
+      };
+    },
+    methods: function () {
+      return {
+        'Base': { type: '', declaredBy: 'Base'}
+      };
+    }
+  };
+};


Mime
View raw message