in spring-ai-alibaba-mcp/spring-ai-alibaba-mcp-nacos-dynamic-server/src/main/java/com/alibaba/cloud/ai/mcp/dynamic/server/callback/DynamicNacosToolCallbackV3.java [232:268]
private String processTemplateString(String template, Map<String, Object> data) {
logger.info("[processTemplateString] template: {} data: {}", template, data);
if (template == null || template.isEmpty()) {
return "";
}
Matcher matcher = TEMPLATE_PATTERN.matcher(template);
StringBuilder result = new StringBuilder();
while (matcher.find()) {
String variable = matcher.group(1);
String replacement;
if ("".equals(variable) || ".".equals(variable)) {
// 特殊处理{{.}},输出data唯一值或整个data
if (data != null && data.size() == 1) {
replacement = String.valueOf(data.values().iterator().next());
}
else if (data != null && !data.isEmpty()) {
replacement = data.toString();
}
else {
replacement = "";
}
}
else {
Object value = data != null ? data.get(variable) : null;
replacement = (value != null) ? value.toString() : "";
}
matcher.appendReplacement(result, Matcher.quoteReplacement(replacement));
}
matcher.appendTail(result);
String finalResult = result.toString();
logger.info("[processTemplateString] final result: {}", finalResult);
// 验证是否还存在未被替换的{{.}},如有则输出警告
if (finalResult.contains("{{.}}")) {
logger.warn("[processTemplateString] WARNING: {{.}} was not replaced in result: {}", finalResult);
}
return finalResult;
}