diff options
author | Michael Bausor <michaelbausor@google.com> | 2017-09-07 09:47:50 -0700 |
---|---|---|
committer | Michael Bausor <michaelbausor@google.com> | 2017-09-07 09:48:35 -0700 |
commit | f5a7f7f559ec6cbc30227cf051603ade22b556f8 (patch) | |
tree | c8c13b8afc01ea6fb3cb6cb1208576064521dddd /src/compiler | |
parent | e3f5a6961164055e3d2728d1eb5d362c57db1a3e (diff) |
Determine type name using php namespace option
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/php_generator.cc | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/compiler/php_generator.cc b/src/compiler/php_generator.cc index 67967d0bd7..9fa14d1684 100644 --- a/src/compiler/php_generator.cc +++ b/src/compiler/php_generator.cc @@ -33,7 +33,7 @@ using std::map; namespace grpc_php_generator { namespace { -grpc::string MessageIdentifierName(const grpc::string &name) { +grpc::string ConvertToPhpNamespace(const grpc::string &name) { std::vector<grpc::string> tokens = grpc_generator::tokenize(name, "."); std::ostringstream oss; for (unsigned int i = 0; i < tokens.size(); i++) { @@ -43,14 +43,32 @@ grpc::string MessageIdentifierName(const grpc::string &name) { return oss.str(); } +grpc::string PackageName(const FileDescriptor *file) { + if (file->options().has_php_namespace()) { + return file->options().php_namespace(); + } else { + return ConvertToPhpNamespace(file->package()); + } +} + +grpc::string MessageIdentifierName(const grpc::string &name, const FileDescriptor *file) { + std::vector<grpc::string> tokens = grpc_generator::tokenize(name, "."); + std::ostringstream oss; + oss << PackageName(file) + << "\\" + << grpc_generator::CapitalizeFirstLetter(tokens[tokens.size() - 1]); + return oss.str(); +} + + void PrintMethod(const MethodDescriptor *method, Printer *out) { const Descriptor *input_type = method->input_type(); const Descriptor *output_type = method->output_type(); map<grpc::string, grpc::string> vars; vars["service_name"] = method->service()->full_name(); vars["name"] = method->name(); - vars["input_type_id"] = MessageIdentifierName(input_type->full_name()); - vars["output_type_id"] = MessageIdentifierName(output_type->full_name()); + vars["input_type_id"] = MessageIdentifierName(input_type->full_name(), input_type->file()); + vars["output_type_id"] = MessageIdentifierName(output_type->full_name(), output_type->file()); out->Print("/**\n"); out->Print(GetPHPComments(method, " *").c_str()); @@ -149,12 +167,7 @@ grpc::string GenerateFile(const FileDescriptor *file, } map<grpc::string, grpc::string> vars; - grpc::string php_namespace; - if (file->options().has_php_namespace()) { - php_namespace = file->options().php_namespace(); - } else { - php_namespace = MessageIdentifierName(file->package()); - } + grpc::string php_namespace = PackageName(file); vars["package"] = php_namespace; out.Print(vars, "namespace $package$;\n\n"); |