From 738f3ff69a01bcfa9b6b473c8cc51e69a33d54bf Mon Sep 17 00:00:00 2001 From: namelessssssssssss <100946116+namelessssssssssss@users.noreply.github.com> Date: Tue, 26 Dec 2023 15:46:42 +0800 Subject: [PATCH] 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 --- .../dubbo/config/AbstractServiceConfig.java | 19 ++++++++++++++++++- .../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 extends ServiceConfigBase { 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());