You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by ea...@apache.org on 2023/12/26 07:46:48 UTC

(dubbo) branch 3.2 updated: Fix proto `package` and ` java_package` issue (#13559)

This is an automated email from the ASF dual-hosted git repository.

earthchen pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new 738f3ff69a Fix proto `package` and ` java_package` issue (#13559)
738f3ff69a is described below

commit 738f3ff69a01bcfa9b6b473c8cc51e69a33d54bf
Author: namelessssssssssss <10...@users.noreply.github.com>
AuthorDate: Tue Dec 26 15:46:42 2023 +0800

    Fix proto `package` and ` java_package` issue (#13559)
    
    * Fix pb package issue
    
    * Codestyle fix
    
    * Fix npe in test
    
    * Fix npe in test
    
    * Fix test
    
    * Codestyle fix
    
    * Simplify config
    
    * Update ServiceConfig.java
---
 .../apache/dubbo/config/AbstractServiceConfig.java    | 19 ++++++++++++++++++-
 .../java/org/apache/dubbo/config/ServiceConfig.java   |  4 ++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
index a88bbd8369..c1bfe1c59b 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractServiceConfig.java
@@ -155,6 +155,12 @@ public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {
      */
     private Integer payload;
 
+    /**
+     * Whether to use java_package in IDL as path. Default use package.
+     * This param only available when service using native stub.
+     */
+    private Boolean useJavaPackageAsPath;
+
     public AbstractServiceConfig() {}
 
     public AbstractServiceConfig(ModuleModel moduleModel) {
@@ -170,7 +176,9 @@ public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {
         if (dynamic == null) {
             dynamic = true;
         }
-
+        if (useJavaPackageAsPath == null) {
+            useJavaPackageAsPath = false;
+        }
         if (StringUtils.isBlank(preferSerialization)) {
             preferSerialization = serialization;
         }
@@ -388,4 +396,13 @@ public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {
     public void setPayload(Integer payload) {
         this.payload = payload;
     }
+
+    public Boolean getUseJavaPackageAsPath() {
+        return useJavaPackageAsPath;
+    }
+
+    @Parameter(excluded = true)
+    public void setUseJavaPackageAsPath(Boolean useJavaPackageAsPath) {
+        this.useJavaPackageAsPath = useJavaPackageAsPath;
+    }
 }
diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index f63ddc35ce..2d23af3d85 100644
--- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -548,6 +548,10 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
         final boolean serverService = ref instanceof ServerService;
         if (serverService) {
             serviceDescriptor = ((ServerService) ref).getServiceDescriptor();
+            if (!this.provider.getUseJavaPackageAsPath()) {
+                // for stub service, path always interface name or IDL package name
+                this.path = serviceDescriptor.getInterfaceName();
+            }
             repository.registerService(serviceDescriptor);
         } else {
             serviceDescriptor = repository.registerService(getInterfaceClass());