Thrift REST parsing allows null object params
authorDavid Reiss <dreiss@apache.org>
Tue, 29 Apr 2008 00:29:45 +0000 (00:29 +0000)
committerDavid Reiss <dreiss@apache.org>
Tue, 29 Apr 2008 00:29:45 +0000 (00:29 +0000)
Summary: If JSON objects are passed in allow them to be null and don'\''t default construct.

Reviewed By: dreiss

Test Plan: Regenerate API code and test on object args.

Revert: OK

DiffCamp Revision: 12407

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665670 13f79535-47bb-0310-9956-ffa450edef68

compiler/cpp/src/generate/t_php_generator.cc

index f4b4521..97502ff 100644 (file)
@@ -1058,7 +1058,9 @@ void t_php_generator::generate_service_rest(t_service* tservice) {
           indent() << "$" << (*a_iter)->get_name() << " = array_fill_keys(json_decode($" << (*a_iter)->get_name() << ", true), 1);" << endl;
       } else if (atype->is_struct() || atype->is_xception()) {
         f_service_ <<
-          indent() << "$" << (*a_iter)->get_name() << " = new " << php_namespace(atype->get_program()) << atype->get_name() << "(json_decode($" << (*a_iter)->get_name() << ", true));" << endl;
+          indent() << "if ($" << (*a_iter)->get_name() << " !== null) {" << endl <<
+          indent() << "  $" << (*a_iter)->get_name() << " = new " << php_namespace(atype->get_program()) << atype->get_name() << "(json_decode($" << (*a_iter)->get_name() << ", true));" << endl <<
+          indent() << "}" << endl;
       }
     }
     f_service_ <<