From bfcf0030ecbbe302842be948bcb8d83cfaaa8d1d Mon Sep 17 00:00:00 2001 From: haoyann <1064645534@qq.com> Date: Mon, 7 Jun 2021 15:05:21 +0800 Subject: [PATCH] [ISSUE #7943]Handle illegal characters uniformly (#7970) * handle illegal characters uniformly * keep `handleInnerSymbol` is private * remove unused import --- .../nacos/NacosConfigServiceWrapper.java | 10 +++++--- .../nacos/NacosDynamicConfiguration.java | 24 +++++++------------ 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java index b085597e20..34ed1f9a89 100644 --- a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java +++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java @@ -20,6 +20,9 @@ import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; +import static org.apache.dubbo.common.utils.StringUtils.HYPHEN_CHAR; +import static org.apache.dubbo.common.utils.StringUtils.SLASH_CHAR; + public class NacosConfigServiceWrapper { private static final String INNERCLASS_SYMBOL = "$"; @@ -56,10 +59,11 @@ public class NacosConfigServiceWrapper { /** * see {@link com.alibaba.nacos.client.config.utils.ParamUtils#isValid(java.lang.String)} */ - private String handleInnerSymbol(String dataId) { - if (dataId == null) { + private String handleInnerSymbol(String param) { + if (param == null) { return null; } - return dataId.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL); + return param.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL) + .replace(SLASH_CHAR, HYPHEN_CHAR); } } diff --git a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java index ea8011f717..a801e4ec1f 100644 --- a/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java +++ b/dubbo-configcenter/dubbo-configcenter-nacos/src/main/java/org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java @@ -58,7 +58,6 @@ import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY; import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of; import static org.apache.dubbo.common.utils.StringUtils.HYPHEN_CHAR; import static org.apache.dubbo.common.utils.StringUtils.SLASH_CHAR; -import static org.apache.dubbo.common.utils.StringUtils.isBlank; /** * The nacos implementation of {@link DynamicConfiguration} @@ -179,12 +178,11 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { @Override public void addListener(String key, String group, ConfigurationListener listener) { - String resolvedGroup = resolveGroup(group); String listenerKey = buildListenerKey(key, group); - NacosConfigListener nacosConfigListener = watchListenerMap.computeIfAbsent(listenerKey, k -> createTargetListener(key, resolvedGroup)); + NacosConfigListener nacosConfigListener = watchListenerMap.computeIfAbsent(listenerKey, k -> createTargetListener(key, group)); nacosConfigListener.addListener(listener); try { - configService.addListener(key, resolvedGroup, nacosConfigListener); + configService.addListener(key, group, nacosConfigListener); } catch (NacosException e) { logger.error(e.getMessage()); } @@ -201,13 +199,12 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { @Override public String getConfig(String key, String group, long timeout) throws IllegalStateException { - String resolvedGroup = resolveGroup(group); try { long nacosTimeout = timeout < 0 ? getDefaultTimeout() : timeout; - if (StringUtils.isEmpty(resolvedGroup)) { - resolvedGroup = DEFAULT_GROUP; + if (StringUtils.isEmpty(group)) { + group = DEFAULT_GROUP; } - return configService.getConfig(key, resolvedGroup, nacosTimeout); + return configService.getConfig(key, group, nacosTimeout); } catch (NacosException e) { logger.error(e.getMessage()); } @@ -227,9 +224,8 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { @Override public boolean publishConfig(String key, String group, String content) { boolean published = false; - String resolvedGroup = resolveGroup(group); try { - published = configService.publishConfig(key, resolvedGroup, content); + published = configService.publishConfig(key, group, content); } catch (NacosException e) { logger.error(e.getErrMsg(), e); } @@ -256,7 +252,7 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { Map paramsValues = new HashMap<>(); paramsValues.put("search", "accurate"); paramsValues.put("dataId", ""); - paramsValues.put("group", resolveGroup(group)); + paramsValues.put("group", group.replace(SLASH_CHAR, HYPHEN_CHAR)); paramsValues.put("pageNo", "1"); paramsValues.put("pageSize", String.valueOf(Integer.MAX_VALUE)); @@ -351,10 +347,6 @@ public class NacosDynamicConfiguration implements DynamicConfiguration { } protected String buildListenerKey(String key, String group) { - return key + HYPHEN_CHAR + resolveGroup(group); - } - - protected String resolveGroup(String group) { - return isBlank(group) ? group : group.replace(SLASH_CHAR, HYPHEN_CHAR); + return key + HYPHEN_CHAR + group; } }