From b68b3b1f1bdde422013ef9d3d020e5f377855b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BB=B6?= <1060026287@qq.com> Date: Fri, 25 Sep 2020 16:42:49 +0800 Subject: [PATCH 1/2] when publishConfig, if type is absent, set default value 'text' --- .../nacos/config/server/controller/ConfigController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java b/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java index 90d42a3bd43..a51696a2d8c 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java @@ -129,7 +129,7 @@ public Boolean publishConfig(HttpServletRequest request, HttpServletResponse res @RequestParam(value = "desc", required = false) String desc, @RequestParam(value = "use", required = false) String use, @RequestParam(value = "effect", required = false) String effect, - @RequestParam(value = "type", required = false) String type, + @RequestParam(value = "type", required = false, defaultValue = "text") String type, @RequestParam(value = "schema", required = false) String schema) throws NacosException { final String srcIp = RequestUtil.getRemoteIp(request); From af4b04800df68b5781bc5eeeb7f676f8101793a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BB=B6?= <1060026287@qq.com> Date: Fri, 6 Nov 2020 21:23:24 +0800 Subject: [PATCH 2/2] 1.add publishConfig api(add param type) 2.check type is valid in nacos server --- .../nacos/api/config/ConfigService.java | 12 ++++++++++ .../alibaba/nacos/api/config/ConfigType.java | 24 +++++++++++++++++++ .../client/config/NacosConfigService.java | 11 +++++++-- .../server/controller/ConfigController.java | 9 +++++-- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/com/alibaba/nacos/api/config/ConfigService.java b/api/src/main/java/com/alibaba/nacos/api/config/ConfigService.java index 114fa69dcb1..e81ac94863f 100644 --- a/api/src/main/java/com/alibaba/nacos/api/config/ConfigService.java +++ b/api/src/main/java/com/alibaba/nacos/api/config/ConfigService.java @@ -79,6 +79,18 @@ String getConfigAndSignListener(String dataId, String group, long timeoutMs, Lis */ boolean publishConfig(String dataId, String group, String content) throws NacosException; + /** + * Publish config. + * + * @param dataId dataId + * @param group group + * @param content content + * @param type config type {@link ConfigType} + * @return Whether publish + * @throws NacosException NacosException + */ + boolean publishConfig(String dataId, String group, String content, String type) throws NacosException; + /** * Remove config. * diff --git a/api/src/main/java/com/alibaba/nacos/api/config/ConfigType.java b/api/src/main/java/com/alibaba/nacos/api/config/ConfigType.java index 01095e686f9..d70e2a98d8f 100644 --- a/api/src/main/java/com/alibaba/nacos/api/config/ConfigType.java +++ b/api/src/main/java/com/alibaba/nacos/api/config/ConfigType.java @@ -16,6 +16,8 @@ package com.alibaba.nacos.api.config; +import com.alibaba.nacos.api.utils.StringUtils; + /** * Config data type. * @@ -62,4 +64,26 @@ public enum ConfigType { public String getType() { return type; } + + public static ConfigType getDefaultType() { + return TEXT; + } + + /** + * check input type is valid. + * + * @param type config type + * @return it the type valid + */ + public static Boolean isValidType(String type) { + if (StringUtils.isBlank(type)) { + return false; + } + for (ConfigType value : values()) { + if (value.type.equals(type)) { + return true; + } + } + return false; + } } diff --git a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java index a0c614011f9..d38d5e0c898 100644 --- a/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java +++ b/client/src/main/java/com/alibaba/nacos/client/config/NacosConfigService.java @@ -19,6 +19,7 @@ import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.common.Constants; import com.alibaba.nacos.api.config.ConfigService; +import com.alibaba.nacos.api.config.ConfigType; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.client.config.filter.impl.ConfigFilterChainManager; @@ -112,7 +113,12 @@ public void addListener(String dataId, String group, Listener listener) throws N @Override public boolean publishConfig(String dataId, String group, String content) throws NacosException { - return publishConfigInner(namespace, dataId, group, null, null, null, content); + return publishConfig(dataId, group, content, ConfigType.getDefaultType().getType()); + } + + @Override + public boolean publishConfig(String dataId, String group, String content, String type) throws NacosException { + return publishConfigInner(namespace, dataId, group, null, null, null, content, type); } @Override @@ -211,7 +217,7 @@ private boolean removeConfigInner(String tenant, String dataId, String group, St } private boolean publishConfigInner(String tenant, String dataId, String group, String tag, String appName, - String betaIps, String content) throws NacosException { + String betaIps, String content, String type) throws NacosException { group = null2defaultGroup(group); ParamUtils.checkParam(dataId, group, content); @@ -228,6 +234,7 @@ private boolean publishConfigInner(String tenant, String dataId, String group, S params.put("dataId", dataId); params.put("group", group); params.put("content", content); + params.put("type", type); if (StringUtils.isNotEmpty(tenant)) { params.put("tenant", tenant); } diff --git a/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java b/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java index a51696a2d8c..eb342230f13 100644 --- a/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java +++ b/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java @@ -16,6 +16,7 @@ package com.alibaba.nacos.config.server.controller; +import com.alibaba.nacos.api.config.ConfigType; import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.auth.annotation.Secured; import com.alibaba.nacos.auth.common.ActionTypes; @@ -32,10 +33,10 @@ import com.alibaba.nacos.config.server.model.Page; import com.alibaba.nacos.config.server.model.SameConfigPolicy; import com.alibaba.nacos.config.server.model.SampleResult; +import com.alibaba.nacos.config.server.model.event.ConfigDataChangeEvent; import com.alibaba.nacos.config.server.result.ResultBuilder; import com.alibaba.nacos.config.server.result.code.ResultCodeEnum; import com.alibaba.nacos.config.server.service.AggrWhitelist; -import com.alibaba.nacos.config.server.model.event.ConfigDataChangeEvent; import com.alibaba.nacos.config.server.service.ConfigChangePublisher; import com.alibaba.nacos.config.server.service.ConfigSubService; import com.alibaba.nacos.config.server.service.repository.PersistService; @@ -129,12 +130,16 @@ public Boolean publishConfig(HttpServletRequest request, HttpServletResponse res @RequestParam(value = "desc", required = false) String desc, @RequestParam(value = "use", required = false) String use, @RequestParam(value = "effect", required = false) String effect, - @RequestParam(value = "type", required = false, defaultValue = "text") String type, + @RequestParam(value = "type", required = false) String type, @RequestParam(value = "schema", required = false) String schema) throws NacosException { final String srcIp = RequestUtil.getRemoteIp(request); final String requestIpApp = RequestUtil.getAppName(request); srcUser = RequestUtil.getSrcUserName(request); + //check type + if (!ConfigType.isValidType(type)) { + type = ConfigType.getDefaultType().getType(); + } // check tenant ParamUtils.checkTenant(tenant); ParamUtils.checkParam(dataId, group, "datumId", content);