Skip to content

Commit

Permalink
fix:修复metadata-report多上报时multi_address参数无法全部识别
Browse files Browse the repository at this point in the history
  • Loading branch information
chuntaojun committed Apr 7, 2024
1 parent 95e1d9f commit 994d2b2
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 7 deletions.
Expand Up @@ -40,23 +40,43 @@ public static Optional<WrapAbstractMetadataReport> buildAnother(ApplicationModel
Map<String, MetadataReportFactory> factoryMap = loader.getSupportedExtensionInstances().stream()
.collect(HashMap::new, (m, v) -> m.put(loader.getExtensionName(v), v), HashMap::putAll);

String multiAddress = url.getParameter("multi_address", String.class);
if (StringUtils.isBlank(multiAddress)) {

Optional<URL> ret = generate(url);
if (!ret.isPresent()) {
return Optional.empty();
}
logger.info(String.format("another metadata-report connect url : %s", multiAddress));
URL copyUrl = URL.valueOf(multiAddress);
URL copyUrl = ret.get();

if (!factoryMap.containsKey(copyUrl.getProtocol())) {
return Optional.empty();
}
MetadataReportFactory factory = factoryMap.get(copyUrl.getProtocol());

Map<String, String> parameters = url.getParameters();
parameters.remove("namespace");
copyUrl.addParameters(parameters);

MetadataReport report = factory.getMetadataReport(copyUrl);
if (report instanceof AbstractMetadataReport) {
return Optional.ofNullable(new WrapAbstractMetadataReport((AbstractMetadataReport) report));
}
return Optional.empty();
}

public static Optional<URL> generate(URL url) {
String multiAddress = url.getParameter("multi_address", String.class);
if (StringUtils.isBlank(multiAddress)) {
return Optional.empty();
}
URL copyUrl = URL.valueOf(multiAddress);

Map<String, String> parameters = url.getParameters();
parameters.remove("namespace");
parameters.remove("multi_address");
copyUrl = copyUrl.addParameters(parameters);

logger.info(String.format("another metadata-report connect url : %s", copyUrl.toString()));
return Optional.of(copyUrl);
}

}
Expand Up @@ -20,13 +20,18 @@
import org.junit.Assert;
import org.junit.Test;

import java.util.Optional;

public class MultiReportUtilTest {

@Test
public void testMultiAddress() {
String testUrl = "polaris://127.0.0.1:8091?namespace=dubbo-multi&multi_address=nacos://127.0.0.1:8848?namespace=xxxxx";
String testUrl = "polaris://127.0.0.1:8091?namespace=dubbo-multi&multi_address=nacos://127.0.0.1:8848?namespace=xxxxx&username=xxx";
URL dubboUrl = URL.valueOf(testUrl);
Assert.assertEquals("nacos://127.0.0.1:8848?namespace=xxxxx", dubboUrl.getParameter("multi_address"));

Optional<URL> ret = MultiReportUtil.generate(dubboUrl);
Assert.assertTrue(ret.isPresent());
Assert.assertEquals("nacos://127.0.0.1:8848?namespace=xxxxx&username=xxx", ret.get().toString());
}

}
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -37,7 +37,7 @@

<properties>
<!-- Project revision -->
<revision>0.3.0-3.2.7</revision>
<revision>0.3.1-3.2.7</revision>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down

0 comments on commit 994d2b2

Please sign in to comment.