mule - 将 prop 文件值与后端值进行比较
问题描述
在下面需要帮助。
我想从属性文件和属性文件键和值中读取值,如下所示:org.cc.bu.combo=A1289||B2234,A8976||B7765
我将从后端接收密钥和值,单位=A1289,成本=B2234,
我想将属性值 A1289||B2234 与 unit=A1289 和 cost=B2234 进行比较。如果匹配,那么我需要打印匹配,否则打印不匹配。
我需要写入 .java 文件,但只能在 Mule 项目中使用。
解决方案
为了在 Java 中做到这一点,我创建了一个简单的类:
package org.cc.bu.combo;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class UnitChecker {
static private Map<String, String> parseCombo(String combo) {
Pattern pattern = Pattern.compile(",");
Map<String, String> c = pattern.splitAsStream(combo)
.map(s -> {
String[] parts = s.split("\\|\\|");
return parts;
}).collect(Collectors.toMap(p -> p[0], p -> p[1]));
return c;
}
static public boolean check(String combo, String unit, String cost) {
Map<String, String> c = parseCombo(combo);
String value = c.get(unit);
return cost.equals(value);
}
}
可以从这样的流程中调用它:
<set-variable value="A1289||B2234,A8976||B7765" variableName="combos" />
<java:invoke-static doc:name="Invoke static" class="org.cc.bu.combo.UnitChecker" method="check(java.lang.String,java.lang.String,java.lang.String)">
<java:args ><![CDATA[#[{combo: vars.combos, unit: 'A1289', cost: 'B2234' }]]]></java:args>
</java:invoke-static>
您需要将Java 模块添加到项目中(始终使用最新版本),并确保您正在编译Java 8 源代码兼容性。如果您以前没有,请将以下属性添加到 pom:
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
推荐阅读
- c++ - 使用 DXGI 进行窗口捕捉
- python - 没有名为“pm4py”的模块
- python - 在数据框中查找不是 NaN python 的行
- r - 如何在R中的heatmap.2中加粗一组标签或分支
- node.js - MEAN 堆栈 http.post 请求正文为空
- angular - Angular中的粗箭头运算符之后的赋值运算符有什么用?
- java - 将 QuickAccess TextField 添加到 Eclipse RCP 应用程序
- java - 这个问题中增量和加法之间的区别?
- selenium - Selenium 停止使用错误消息:无法找到元素:{“method”:“xpath”,“selector”:“//span[contains(text(), 'Allow')]”}
- android - 查找电子邮件和/或用户名是否存在于 Firebase - Android