From 583fe99706f1c0965ae69a4bf36fa6588a956c26 Mon Sep 17 00:00:00 2001
From: temiola <temiola@google.com>
Date: Thu, 8 Jan 2015 09:41:31 -0800
Subject: [PATCH] Updates service.rb to ensure that the DSL specified service
 name is not overridden 	Change on 2015/01/08 by temiola
 <temiola@google.com> ------------- Created by MOE:
 http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83525675

---
 src/ruby/lib/grpc/generic/service.rb  | 11 +++++----
 src/ruby/spec/generic/service_spec.rb | 33 +++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 4 deletions(-)

diff --git a/src/ruby/lib/grpc/generic/service.rb b/src/ruby/lib/grpc/generic/service.rb
index 6a4356fab9..f3fe638fce 100644
--- a/src/ruby/lib/grpc/generic/service.rb
+++ b/src/ruby/lib/grpc/generic/service.rb
@@ -93,6 +93,8 @@ module Google::RPC
       # The Dsl verifies that the types in the descriptor have both the
       # unmarshal and marshal methods.
       attr_writer(:marshal_class_method, :unmarshal_class_method)
+
+      # This allows configuration of the service name.
       attr_accessor(:service_name)
 
       # Adds an RPC spec.
@@ -117,8 +119,8 @@ module Google::RPC
       end
 
       def inherited(subclass)
-        # Each subclass should have distinct class variable with its own
-        # rpc_descs.
+        # Each subclass should have a distinct class variable with its own
+        # rpc_descs
         subclass.rpc_descs.merge!(rpc_descs)
         subclass.service_name = service_name
       end
@@ -227,8 +229,9 @@ module Google::RPC
     def self.included(o)
       o.extend(Dsl)
 
-      # Update to the use the name including module.  This can be nil e,g. when
-      # modules are declared dynamically.
+      # Update to the use the service name including module. Proivde a default
+      # that can be nil e,g. when modules are declared dynamically.
+      return unless o.service_name.nil?
       if o.name.nil?
         o.service_name = 'GenericService'
       else
diff --git a/src/ruby/spec/generic/service_spec.rb b/src/ruby/spec/generic/service_spec.rb
index dc921d8934..a8e0c6f52f 100644
--- a/src/ruby/spec/generic/service_spec.rb
+++ b/src/ruby/spec/generic/service_spec.rb
@@ -108,6 +108,39 @@ describe GenericService do
       expect(c.rpc_descs[:AnRpc]).to be_a(GRPC::RpcDesc)
     end
 
+    it 'adds a default service name' do
+      c = Class.new do
+        include GenericService
+      end
+      expect(c.service_name).to eq('GenericService')
+    end
+
+    it 'adds a default service name to subclasses' do
+      base = Class.new do
+        include GenericService
+      end
+      c = Class.new(base) do
+      end
+      expect(c.service_name).to eq('GenericService')
+    end
+
+    it 'adds the specified service name' do
+      c = Class.new do
+        include GenericService
+        self.service_name = 'test.service.TestService'
+      end
+      expect(c.service_name).to eq('test.service.TestService')
+    end
+
+    it 'adds the specified service name to subclasses' do
+      base = Class.new do
+        include GenericService
+        self.service_name = 'test.service.TestService'
+      end
+      c = Class.new(base) do
+      end
+      expect(c.service_name).to eq('test.service.TestService')
+    end
   end
 
   describe '#include' do
-- 
GitLab