- 1 存储日志
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message)
{
def body = message.getBody(java.lang.String) as String;
def messageLog = messageLogFactory.getMessageLog(message);
if(messageLog != null)
{
messageLog.addAttachmentAsString("Log request:", body, "text/plain");
}
return message;
}
- 2 设置或读取Property
def bool_str = message.getProperty("bools");
message.setProperty("bools", bool_str + 'new');
- 3 获取uri后面的params或者header
def body = message.getBody(java.lang.String) as String;
def map = message.getHeaders();
def params = map.get("CamelHttpQuery");
params = params.decodeURL();
map.remove("CamelHttpQuery");
message.setHeaders(map);
message.setProperty("url", params);
String.metaClass.decodeURL = {
java.net.URLDecoder.decode(delegate, "UTF-8")
}
注:也可以用来获取header参数值,但是需要配置允许的header,见下图
- 4 解析json并替换字段值
以下代码是为了将json中 {“field” : “true”}转成{“field” : true}去除引号 ,
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.json.*
def Message processData(Message message)
{
def body = message.getBody(java.lang.String) as String;
def messageLog = messageLogFactory.getMessageLog(message);
def jsonSlurper = new JsonSlurper();
def list = jsonSlurper.parseText(body);
//获取需要转换成bools的值
def bool_str = message.getProperty("bools");
//拆分
def bool_arrays = bool_str.split("/");
def list_new = list.items.item.entrySet().getAt(0 ).value;
for (bool_array in bool_arrays) {
if ( list_new.get(bool_array.toString()) != null )
{
list_new.(bool_array.toString()) = Boolean.parseBoolean(list_new.get(bool_array.toString()));
}
}
message.setBody(JsonOutput.toJson(list_new))
if(messageLog != null)
{
messageLog.addAttachmentAsString("Log request:", JsonOutput.toJson(list_new), "text/plain");
}
return message;
}
5 XML移除标记并存储到property
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
def body = message.getBody(java.lang.String) as String;
def removal = message.getBody(java.lang.String) as String;
removal = removal.replace(/<?xml version="1.0" encoding="UTF-8"?>/,"");
message.setBody(removal);
def body_str = message.getProperty("body_str");
message.setProperty("body_str", removal);
def messageLog = messageLogFactory.getMessageLog(message);
if(messageLog != null)
{
messageLog.addAttachmentAsString("Log Response:", body, "text/plain");
}
return message;
}
6.XSD可以根据XML生成 网址
https://codeamaze.com/web-tool/xsd-generator