You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by je...@apache.org on 2015/10/29 22:03:32 UTC

thrift git commit: PHP Compiler: always cast scalar types in jsonSerialize()

Repository: thrift
Updated Branches:
  refs/heads/master 867fafffa -> d6ca81b2c


PHP Compiler: always cast scalar types in jsonSerialize()


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

Branch: refs/heads/master
Commit: d6ca81b2cc7bed049a4f06242695f29549b49309
Parents: 867faff
Author: Stig Bakken <st...@zedge.net>
Authored: Fri Jul 24 01:41:33 2015 +0200
Committer: Jens Geyer <je...@apache.org>
Committed: Thu Oct 29 23:01:37 2015 +0200

----------------------------------------------------------------------
 compiler/cpp/src/generate/t_php_generator.cc           |  2 ++
 .../Test/Thrift/JsonSerialize/JsonSerializeTest.php    | 13 +++++++++++++
 2 files changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/d6ca81b2/compiler/cpp/src/generate/t_php_generator.cc
----------------------------------------------------------------------
diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index c6d6f99..0c255ec 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -1097,6 +1097,8 @@ void t_php_generator::generate_php_struct_json_serialize(ofstream& out,
       indent(out) << "$json->" << name << " = ";
       if (type->is_map()) {
         out << "(object)";
+      } else {
+        out << type_to_cast(type);
       }
       out << "$this->" << name << ";" << endl;
       indent_down();

http://git-wip-us.apache.org/repos/asf/thrift/blob/d6ca81b2/lib/php/test/Test/Thrift/JsonSerialize/JsonSerializeTest.php
----------------------------------------------------------------------
diff --git a/lib/php/test/Test/Thrift/JsonSerialize/JsonSerializeTest.php b/lib/php/test/Test/Thrift/JsonSerialize/JsonSerializeTest.php
index 40003ed..2471b52 100644
--- a/lib/php/test/Test/Thrift/JsonSerialize/JsonSerializeTest.php
+++ b/lib/php/test/Test/Thrift/JsonSerialize/JsonSerializeTest.php
@@ -33,6 +33,11 @@ $loader->register();
 
 class JsonSerializeTest extends \PHPUnit_Framework_TestCase
 {
+  protected function setUp() {
+    if (version_compare(phpversion(), '5.4', '<')) {
+      $this->markTestSkipped('Requires PHP 5.4 or newer!');
+    }
+  }
 
   public function testEmptyStruct()
   {
@@ -100,4 +105,12 @@ class JsonSerializeTest extends \PHPUnit_Framework_TestCase
     $this->assertEquals('{}', json_encode($emptymap));
   }
 
+  public function testScalarTypes()
+  {
+    $b = new \ThriftTest\Bools(['im_true' => '1', 'im_false' => '0']);
+    $this->assertEquals('{"im_true":true,"im_false":false}', json_encode($b));
+    $s = new \ThriftTest\StructA(['s' => 42]);
+    $this->assertEquals('{"s":"42"}', json_encode($s));
+  }
+
 }