You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by jf...@apache.org on 2014/03/12 02:57:29 UTC

git commit: THRIFT-2389: namespaces handled wrongly in acrionscript 3.0 implementation Client: as3 Patch: dima levchenko

Repository: thrift
Updated Branches:
  refs/heads/master e3ab0bf50 -> d272f21cc


THRIFT-2389: namespaces handled wrongly in acrionscript 3.0 implementation
Client: as3
Patch: dima levchenko

Updates compiler to work with AS3.0 namespacing


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

Branch: refs/heads/master
Commit: d272f21ccab97fa870b7b844b77dd95a75356c3c
Parents: e3ab0bf
Author: jfarrell <jf...@apache.org>
Authored: Tue Mar 11 21:56:15 2014 -0400
Committer: jfarrell <jf...@apache.org>
Committed: Tue Mar 11 21:56:15 2014 -0400

----------------------------------------------------------------------
 compiler/cpp/src/generate/t_as3_generator.cc | 43 +++++++++++++++++------
 1 file changed, 33 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/d272f21c/compiler/cpp/src/generate/t_as3_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_as3_generator.cc b/compiler/cpp/src/generate/t_as3_generator.cc
index 5abeba4..c673845 100644
--- a/compiler/cpp/src/generate/t_as3_generator.cc
+++ b/compiler/cpp/src/generate/t_as3_generator.cc
@@ -255,7 +255,7 @@ string t_as3_generator::as3_package() {
   if (!package_name_.empty()) {
     return string("package ") + package_name_ + " ";
   }
-  return "";
+  return "package ";
 }
 
 /**
@@ -1442,7 +1442,17 @@ void t_as3_generator::generate_service(t_service* tservice) {
   f_service_ << endl <<
     as3_type_imports() <<
     as3_thrift_imports() <<
-    as3_thrift_gen_imports(tservice) << endl;
+    as3_thrift_gen_imports(tservice);
+
+  if(tservice->get_extends() != NULL) {
+    t_type* parent = tservice->get_extends();
+    string parent_namespace = parent->get_program()->get_namespace("as3");
+    if(!parent_namespace.empty() && parent_namespace != package_name_) {
+      f_service_ << "import " << type_name(parent) << ";" << endl;
+    }
+  }
+
+  f_service_ << endl;
 
   generate_service_interface(tservice);
 
@@ -1461,15 +1471,28 @@ void t_as3_generator::generate_service(t_service* tservice) {
   f_service_ << endl <<
   as3_type_imports() <<
   as3_thrift_imports() <<
-  as3_thrift_gen_imports(tservice) << endl;
-  
+  as3_thrift_gen_imports(tservice);
+
+
+  if(tservice->get_extends() != NULL) {
+    t_type* parent = tservice->get_extends();
+    string parent_namespace = parent->get_program()->get_namespace("as3");
+    if(!parent_namespace.empty() && parent_namespace != package_name_) {
+      f_service_ << "import " << type_name(parent) << "Impl;" << endl;
+    }
+  }
+
+  f_service_ << endl;
+
   generate_service_client(tservice);
   scope_down(f_service_);
   
   f_service_ << as3_type_imports();
   f_service_ << as3_thrift_imports();
   f_service_ << as3_thrift_gen_imports(tservice);
-  f_service_ << "import " << package_name_ << ".*;" << endl;
+  if(!package_name_.empty()) {
+    f_service_ << "import " << package_name_ << ".*;" << endl;
+  }
   
   generate_service_helpers(tservice);
   
@@ -1495,7 +1518,9 @@ void t_as3_generator::generate_service(t_service* tservice) {
   f_service_ << as3_type_imports();
   f_service_ << as3_thrift_imports();
   f_service_ << as3_thrift_gen_imports(tservice) <<endl;
-  f_service_ << "import " << package_name_ << ".*;" << endl;
+  if(!package_name_.empty()) {
+    f_service_ << "import " << package_name_ << ".*;" << endl;
+  }
   
   generate_service_helpers(tservice);
   
@@ -1509,11 +1534,9 @@ void t_as3_generator::generate_service(t_service* tservice) {
  * @param tservice The service to generate a header definition for
  */
 void t_as3_generator::generate_service_interface(t_service* tservice) {
-  string extends = "";
   string extends_iface = "";
   if (tservice->get_extends() != NULL) {
-    extends = type_name(tservice->get_extends());
-    extends_iface = " extends " + extends;
+    extends_iface = " extends " + tservice->get_extends()->get_name();
   }
 
   generate_as3_doc(f_service_, tservice);
@@ -1567,7 +1590,7 @@ void t_as3_generator::generate_service_client(t_service* tservice) {
   string extends = "";
   string extends_client = "";
   if (tservice->get_extends() != NULL) {
-    extends = type_name(tservice->get_extends());
+    extends = tservice->get_extends()->get_name();
     extends_client = " extends " + extends + "Impl";
   }