diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java index a16b49ebfabe..fbf0e8d433b7 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ReferenceConfigBase.java @@ -256,6 +256,16 @@ public String getUniqueServiceName() { return URL.buildKey(interfaceName, getGroup(), getVersion()); } + @Override + public String getVersion() { + return StringUtils.isEmpty(this.version) ? (consumer != null ? consumer.getVersion() : this.version) : this.version; + } + + @Override + public String getGroup() { + return StringUtils.isEmpty(this.group) ? (consumer != null ? consumer.getGroup() : this.group) : this.group; + } + public abstract T get(); public abstract void destroy(); diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java index c213e49e6e27..e6705efc7e9f 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java @@ -393,7 +393,15 @@ public String getUniqueServiceName() { return URL.buildKey(interfaceName, getGroup(), getVersion()); } + @Override + public String getGroup() { + return StringUtils.isEmpty(this.group) ? (provider != null ? provider.getGroup() : this.group) : this.group; + } + @Override + public String getVersion() { + return StringUtils.isEmpty(this.version) ? (provider != null ? provider.getVersion() : this.version) : this.version; + } @Override protected void computeValidRegistryIds() { diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java index 95c7a0b9a692..ab5c670cff1a 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ServiceConfigTest.java @@ -50,6 +50,8 @@ import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER; import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY; import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; import static org.apache.dubbo.config.Constants.SHUTDOWN_TIMEOUT_KEY; import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY; import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY; @@ -154,6 +156,23 @@ public void testExport() throws Exception { Mockito.verify(protocolDelegate).export(Mockito.any(Invoker.class)); } + @Test + public void testVersionAndGroupConfigFromProvider() { + //Service no configuration version , the Provider configured. + service.getProvider().setVersion("1.0.0"); + service.getProvider().setGroup("groupA"); + service.export(); + + String serviceVersion = service.getVersion(); + String serviceVersion2 = service.toUrl().getParameter(VERSION_KEY); + + String group = service.getGroup(); + String group2 = service.toUrl().getParameter(GROUP_KEY); + + assertEquals(serviceVersion2, serviceVersion); + assertEquals(group, group2); + } + @Test public void testProxy() throws Exception { service2.export();