in config/src/main/java/com/alibaba/nacos/config/server/remote/ConfigPublishRequestHandler.java [67:137]
public ConfigPublishResponse handle(ConfigPublishRequest request, RequestMeta meta) throws NacosException {
try {
String dataId = request.getDataId();
String group = request.getGroup();
String content = request.getContent();
final boolean namespaceTransferred = NamespaceUtil.isNeedTransferNamespace(request.getTenant());
final String tenant = NamespaceUtil.processNamespaceParameter(request.getTenant());
final String srcIp = meta.getClientIp();
final String tag = request.getAdditionParam("tag");
final String appName = request.getAdditionParam("appName");
final String type = request.getAdditionParam("type");
final String srcUser = request.getAdditionParam("src_user");
final String encryptedDataKey = request.getAdditionParam("encryptedDataKey");
// check tenant
ParamUtils.checkParam(dataId, group, "datumId", content);
ParamUtils.checkParam(tag);
ConfigForm configForm = new ConfigForm();
configForm.setDataId(dataId);
configForm.setGroup(group);
configForm.setNamespaceId(tenant);
configForm.setContent(content);
configForm.setTag(tag);
configForm.setAppName(appName);
configForm.setSrcUser(srcUser);
configForm.setConfigTags(request.getAdditionParam("config_tags"));
configForm.setDesc(request.getAdditionParam("desc"));
configForm.setUse(request.getAdditionParam("use"));
configForm.setEffect(request.getAdditionParam("effect"));
configForm.setType(type);
configForm.setSchema(request.getAdditionParam("schema"));
if (!ConfigType.isValidType(type)) {
configForm.setType(ConfigType.getDefaultType().getType());
}
ConfigRequestInfo configRequestInfo = new ConfigRequestInfo();
configRequestInfo.setSrcIp(srcIp);
configRequestInfo.setSrcType(RPC);
configRequestInfo.setRequestIpApp(meta.getLabels().get(Constants.APPNAME));
configRequestInfo.setBetaIps(request.getAdditionParam("betaIps"));
configRequestInfo.setCasMd5(request.getCasMd5());
configRequestInfo.setNamespaceTransferred(namespaceTransferred);
String encryptedDataKeyFinal = null;
if (StringUtils.isNotBlank(encryptedDataKey)) {
encryptedDataKeyFinal = encryptedDataKey;
} else {
Pair<String, String> pair = EncryptionHandler.encryptHandler(dataId, content);
content = pair.getSecond();
encryptedDataKeyFinal = pair.getFirst();
configForm.setContent(content);
}
try {
configOperationService.publishConfig(configForm, configRequestInfo, encryptedDataKeyFinal);
return ConfigPublishResponse.buildSuccessResponse();
} catch (NacosApiException | ConfigAlreadyExistsException ex) {
return ConfigPublishResponse.buildFailResponse(ResponseCode.FAIL.getCode(),
ex.getErrMsg());
}
} catch (Exception e) {
Loggers.REMOTE_DIGEST.error("[ConfigPublishRequestHandler] publish config error ,request ={}", request, e);
return ConfigPublishResponse.buildFailResponse(
(e instanceof NacosException) ? ((NacosException) e).getErrCode() : ResponseCode.FAIL.getCode(),
e.getMessage());
}
}