You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/03/24 20:59:49 UTC
[28/37] git commit: [flex-asjs] [refs/heads/spark] - initial support
for QName and Namespaces in JS
initial support for QName and Namespaces in JS
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/b4f50115
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/b4f50115
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/b4f50115
Branch: refs/heads/spark
Commit: b4f50115d5169b90212f51254b0710430ad218f3
Parents: 1c4d36c
Author: Alex Harui <ah...@apache.org>
Authored: Thu Mar 10 19:28:11 2016 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Mar 10 19:28:20 2016 -0800
----------------------------------------------------------------------
.../projects/Core/src/main/flex/CoreClasses.as | 2 +
.../projects/Core/src/main/flex/Namespace.as | 50 ++++++++++++++++++
frameworks/projects/Core/src/main/flex/QName.as | 53 ++++++++++++++++++++
manualtests/LanguageTests/src/LanguageTests.as | 26 ++++++++--
4 files changed, 128 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b4f50115/frameworks/projects/Core/src/main/flex/CoreClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/CoreClasses.as b/frameworks/projects/Core/src/main/flex/CoreClasses.as
index 5ad1688..b806f68 100644
--- a/frameworks/projects/Core/src/main/flex/CoreClasses.as
+++ b/frameworks/projects/Core/src/main/flex/CoreClasses.as
@@ -145,6 +145,8 @@ internal class CoreClasses
COMPILE::JS
{
import org.apache.flex.utils.Language; Language;
+ import QName; QName;
+ import Namespace; Namespace;
}
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b4f50115/frameworks/projects/Core/src/main/flex/Namespace.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/Namespace.as b/frameworks/projects/Core/src/main/flex/Namespace.as
new file mode 100644
index 0000000..305d88c
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/Namespace.as
@@ -0,0 +1,50 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 {
+
+/**
+ * Namespace implementation for JS
+ */
+public class Namespace
+{
+ public function Namespace(param1:*, param2:* = undefined)
+ {
+ if (param2 !== undefined)
+ {
+ uri = param2;
+ prefix = param1;
+ }
+ else
+ {
+ uri = param1;
+ }
+ }
+
+ public var uri:String;
+ public var prefix:String;
+
+ public function toString():String
+ {
+ return uri;
+ }
+
+}
+
+}
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b4f50115/frameworks/projects/Core/src/main/flex/QName.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Core/src/main/flex/QName.as b/frameworks/projects/Core/src/main/flex/QName.as
new file mode 100644
index 0000000..26c398b
--- /dev/null
+++ b/frameworks/projects/Core/src/main/flex/QName.as
@@ -0,0 +1,53 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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 {
+
+/**
+ * QName implementation for JS
+ */
+public class QName
+{
+ public function QName(param1:Object, localName:String = null)
+ {
+ if (param1 is QName)
+ {
+ var q:QName = param1 as QName;
+ uri = q.uri;
+ localName = q.localName;
+ }
+ else if (param1 is Namespace)
+ {
+ var n:Namespace = param1 as Namespace;
+ uri = n.uri;
+ this.localName = localName;
+ }
+ }
+
+ public var uri:String;
+ public var localName:String;
+
+ public function toString():String
+ {
+ return uri + "::" + localName;
+ }
+
+}
+
+}
+
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b4f50115/manualtests/LanguageTests/src/LanguageTests.as
----------------------------------------------------------------------
diff --git a/manualtests/LanguageTests/src/LanguageTests.as b/manualtests/LanguageTests/src/LanguageTests.as
index 1343abe..8ed9c38 100644
--- a/manualtests/LanguageTests/src/LanguageTests.as
+++ b/manualtests/LanguageTests/src/LanguageTests.as
@@ -19,9 +19,6 @@
package
{
-import org.apache.flex.core.SimpleApplication;
-import org.apache.flex.events.Event;
-
import classes.B;
import interfaces.IA;
@@ -31,6 +28,9 @@ import interfaces.ID;
import interfaces.IE;
import interfaces.IF;
+import org.apache.flex.core.SimpleApplication;
+import org.apache.flex.events.Event;
+
public class LanguageTests extends SimpleApplication implements IA, IE
{
public function LanguageTests()
@@ -149,6 +149,19 @@ public class LanguageTests extends SimpleApplication implements IA, IE
trace("removeEventListener worked");
else
trace("This shouldn't show!");
+
+ var n:Namespace = new Namespace("my_ns", "http://www.apache.org/2016/flex/ns/internal");
+ trace("Namespace.prefix (should be my_ns): ", n.prefix);
+ trace("Namespace.uri (should be http://www.apache.org/2016/flex/ns/internal): ", n.uri);
+ var q:QName = new QName(n, "my_namespaced_property");
+ trace("QName.localName (should be my_namespaced_property): ", q.localName);
+ trace("QName.uri (should be http://www.apache.org/2016/flex/ns/internal): ", q.uri);
+ var o:MyDynamicClass = new MyDynamicClass;
+ o[q] = "value_of_namespaced_property";
+ trace("Get namespaced property via []: ", o[q]);
+ trace("Get namespaced property via ::: ", o.n::my_namespaced_property);
+ trace("Get namespaced property via my_ns: ", o.my_ns::my_namespaced_property);
+
}
public function eventHandler(e:Event):void
@@ -156,4 +169,11 @@ public class LanguageTests extends SimpleApplication implements IA, IE
}
}
+}
+
+namespace my_ns = "http://www.apache.org/2016/flex/ns/internal";
+
+dynamic class MyDynamicClass
+{
+ my_ns var my_namespaced_property:String;
}
\ No newline at end of file