package com.paypal.cookie.utils;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import org.apache.commons.codec.binary.StringUtils;
import org.codehaus.jackson.map.ObjectMapper;
import com.paypal.cookie.utils.ServerCookieData;
import com.paypal.utils.cb.kafka.CBMessageConverter;
import com.paypal.utils.cb.kafka.ConfigLoader;
import com.paypal.utils.cb.kafka.Constants;
/**
* Converts Couchbase message into flume friendly Event format. *
* @author ssudhakaran
*
*/
public class CBCookieMessageConverterImpl extends CBMessageConverter {
private static ObjectMapper objectMapper=null;
public static Charset charset = Charset.forName("UTF-8");
public static CharsetDecoder decoder = charset.newDecoder();
@Override
public String convert(String key,String message) {
try{
if(objectMapper==null) objectMapper=new org.codehaus.jackson.map.ObjectMapper();
//Specific case to extract header from Cookie
if (key.startsWith(ConfigLoader.getProp(Constants.KEYPREFIXFILTER))){
//System.out.println("config :"+ConfigLoader.getProp(Constants.KEYPREFIXFILTER));
ServerCookieData cookiedata=(ServerCookieData) objectMapper.readValue(message, ServerCookieData.class);
byte[] header=objectMapper.writeValueAsBytes(cookiedata.getHeaders());
String cookieMsg= StringUtils.newStringUtf8(header);
return cookieMsg;
}else {
//return the String we received. This is applicable for cases like
//cs_map, analytics document.
return message;
//return null;
}
}catch(org.codehaus.jackson.JsonParseException e){
e.printStackTrace();
return null;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
}