aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/compiler
diff options
context:
space:
mode:
authorGravatar Michael Bausor <michaelbausor@google.com>2017-09-07 09:47:50 -0700
committerGravatar Michael Bausor <michaelbausor@google.com>2017-09-07 09:48:35 -0700
commitf5a7f7f559ec6cbc30227cf051603ade22b556f8 (patch)
treec8c13b8afc01ea6fb3cb6cb1208576064521dddd /src/compiler
parente3f5a6961164055e3d2728d1eb5d362c57db1a3e (diff)
Determine type name using php namespace option
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/php_generator.cc31
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");