This is an automated email from the ASF dual-hosted git repository. albumenj pushed a commit to branch 3.0-multi-instances in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit d319adb7236e7dadd33f09009cbe96df4da8e61c Author: Albumen Kevin <[email protected]> AuthorDate: Thu Sep 2 11:44:36 2021 +0800 Fix ut in DubboBootstrapTest --- .../dubbo/config/bootstrap/DubboBootstrapTest.java | 2 +- .../apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java index 68c92f3..9c669c1 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/DubboBootstrapTest.java @@ -331,7 +331,7 @@ public class DubboBootstrapTest { private void assertMetadataService(DubboBootstrap bootstrap, int availablePort, boolean shouldReport) { Assertions.assertTrue(bootstrap.metadataServiceExporter.isExported()); - DubboProtocol protocol = DubboProtocol.getDubboProtocol(); + DubboProtocol protocol = DubboProtocol.getDubboProtocol(bootstrap.getApplicationModel()); Map<String, Exporter<?>> exporters = protocol.getExporterMap(); Assertions.assertEquals(2, exporters.size()); diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java index 68792be..375c266 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java @@ -46,8 +46,10 @@ import org.apache.dubbo.rpc.Result; import org.apache.dubbo.rpc.RpcContext; import org.apache.dubbo.rpc.RpcException; import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.model.ScopeModel; import org.apache.dubbo.rpc.protocol.AbstractProtocol; +import java.lang.reflect.Field; import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.Collection; @@ -222,6 +224,22 @@ public class DubboProtocol extends AbstractProtocol { return INSTANCE; } + + public static DubboProtocol getDubboProtocol(ScopeModel scopeModel) { + Protocol protocolWrapper = scopeModel.getExtensionLoader(Protocol.class).getExtension(DubboProtocol.NAME); + + try { + while (protocolWrapper instanceof DubboProtocol) { + Field protocolField = protocolWrapper.getClass().getDeclaredField("protocol"); + protocolField.setAccessible(true); + protocolWrapper = (Protocol) protocolField.get(protocolWrapper); + } + } catch (NoSuchFieldException | IllegalAccessException ignore) { + } + + return (DubboProtocol) protocolWrapper; + } + @Override public Collection<Exporter<?>> getExporters() { return Collections.unmodifiableCollection(exporterMap.values());
