import com.sap.gateway.ip.core.customdev.util.Message
import java.nio.charset.Charset
Message extractUrlGetParameters(Message message) {
String httpQuery = message.getHeader('CamelHttpQuery', String)
if (httpQuery) {
Map<String, String> queryParameters = URLDecoder.decode(httpQuery, Charset.defaultCharset().name())
.replace("\$","")
.tokenize('&')
.collectEntries { it.tokenize('=') }
message.setProperties(queryParameters)
}
return message
}
----------------
import com.sap.it.api.mapping.*;
import com.sap.it.api.mapping.MappingContext;
/*Add MappingContext parameter to read or set headers and
properties
def String customFunc1(String P1,String P2,MappingContext
context) {
String value1
= context.getHeader(P1);
String value2
= context.getProperty(P2);
return
value1+value2;
}
Add Output parameter to assign the output value.
def void custFunc2(String[] is,String[] ps, Output output,
MappingContext context) {
String value1 = context.getHeader(is[0]);
String value2
= context.getProperty(ps[0]);
output.addValue(value1);
output.addValue(value2);
}*/
def String getheader(String header_name, MappingContext
context) {
def headervalue=
context.getHeader(header_name);
return
headervalue;
}
def String getProperty(String property_name, MappingContext
context) {
def propValue=
context.getProperty(property_name);
return propValue;
}
def String setHeader(String header_name, String
header_value, MappingContext context) {
context.setHeader(header_name, header_value);
return
header_value;
}
def String setProperty(String property_name, String
property_value, MappingContext context) {
context.setProperty(property_name, property_value);
return
header_value;
}
-----------
mpl attachment
import com.sap.gateway.ip.core.customdev.util.Message
import java.util.HashMap
def Message payloadLogger(Message message) {
def body = message.getBody(java.lang.String)
def messageLog = messageLogFactory.getMessageLog(message)
if (messageLog != null) {
messageLog.addAttachmentAsString('Payload', body, 'text/plain')
}
return message
}
--------------
MPLCustomHeader.groovy
import com.sap.gateway.ip.core.customdev.util.Message;
def Message setCustomHeader(Message message) {
def messageLog = messageLogFactory.getMessageLog(message);
if(messageLog != null){
def po_number = message.getHeaders().get("po_number");
if(po_number!=null){
messageLog.addCustomHeaderProperty("po_number", po_number);
}
}
return message;
}
-----------
parseJsonMessage
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import groovy.json.JsonSlurper;
def Message parseJsonMessage(Message message) {
//Get message and parse to json
def json = message.getBody(java.io.Reader);
def data = new JsonSlurper().parse(json);
//get fields of the payload (service, ressource & id)
message.setProperty("service", data.query.service);
message.setProperty("resource", data.query.entity.name);
message.setProperty("id", data.query.entity.id);
//get columns to be read
def numFields = data.query.entity.fields.size();
def fields = "";
for (int i=0; i<numFields; i++) {
fields += data.query.entity.fields[i].name;
if (i<numFields-1) fields += ",";
}
message.setProperty("fields", fields);
return message;
}
---------------
read url parameters;
import com.sap.gateway.ip.core.customdev.util.Message
import java.nio.charset.Charset
Message extractUrlGetParameters(Message message) {
String httpQuery = message.getHeader('CamelHttpQuery', String)
if (httpQuery) {
Map<String, String> queryParameters = URLDecoder.decode(httpQuery, Charset.defaultCharset().name())
.replace("\$","")
.tokenize('&')
.collectEntries { it.tokenize('=') }
message.setProperties(queryParameters)
}
return message
}
----------
read url path
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message extractUrlPath(Message message) {
//get url
def map = message.getHeaders();
def url = map.get("CamelHttpUrl");
//split url
String[] vUrl;
vUrl = url.split('/');
int size = vUrl.length;
message.setProperty("service", vUrl[size-3]);
message.setProperty("resource", vUrl[size-2]);
message.setProperty("id", vUrl[size-1]);
return message;
}
-----------
read security material
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import com.sap.it.api.ITApiFactory;
import com.sap.it.api.mapping.ValueMappingApi
import com.sap.it.api.securestore.SecureStoreService
import com.sap.it.api.securestore.UserCredential
import com.sap.it.api.securestore.exception.SecureStoreException
def Message accessSecurityMaterial(Message message) {
def apikey_alias = message.getProperty("ApiKeyAlias")
def secureStorageService = ITApiFactory.getService(SecureStoreService.class, null)
try{
def secureParameter = secureStorageService.getUserCredential(apikey_alias)
def apikey = secureParameter.getPassword().toString()
message.setHeader("api-key", apikey)
} catch(Exception e){
throw new SecureStoreException("Secure Parameter not available")
}
return message;
}
------------
read value mapping.
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import com.sap.it.api.ITApiFactory
import com.sap.it.api.mapping.ValueMappingApi
def Message readValueMapping(Message message) {
//Properties
def map = message.getProperties();
productId = map.get("id");
def valueMapApi = ITApiFactory.getService(ValueMappingApi.class, null)
def productCode = valueMapApi.getMappedValue('CompanyA', 'ID', productId, 'CompanyB', 'ProductCode')
message.setProperty("productCode", productCode);
return message;
}