package com.skplanet.pdp.sentinel.shuttle; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONArray; import org.json.JSONTokener; import java.lang.reflect.Field; import java.util.Collection; import java.util.List; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; /* * Sentinel Shuttle * * Template version * - 0.1.0 (2014.04.22) : support auto encryption * - 0.1.1 (2014.05.28) : sentinel_meta * - 0.1.2 (2014.07.17) : \r escaping * - 0.1.3 (2014.11.11) : remove _$ssToken * - 0.1.4 (2014.11.21) : toJsonObject(jsonObject) * * Author * - Sentinel Shuttle Generator v2.0 * - junghyun@sk.com (Data Infrastructure) */ public class TmapClickLogSentinelShuttle { private static final String _$ssTemplateVersion = "0.1.3"; private static final String _$ssVersion = "18.03.15:2.0.1:8"; private static final String _$ssSchemaId = "TmapClickLog"; private static final String _$ssDelim = "\t"; private static final ArrayList _$actionKey = new ArrayList() {{add("log_key");add("euk");}}; private static final String _$logVersionKey = "log_version"; private static final String _$projectId = "projectId"; /** * Fields */ private static final ArrayList headerFieldNameList = new ArrayList(){{ add("base_time"); add("local_time"); add("recv_time"); add("os_name"); add("os_version"); add("resolution"); add("screen_width"); add("screen_height"); add("language_code"); add("rake_lib"); add("rake_lib_version"); add("ip"); add("recv_host"); add("token"); add("log_version"); add("device_id"); add("device_model"); add("manufacturer"); add("carrier_name"); add("network_type"); add("app_version"); add("browser_name"); add("browser_version"); add("referrer"); add("url"); add("document_title"); add("session_id"); add("ad_id"); add("reserved02"); add("ActionKey"); add("log_key"); add("euk"); }}; private static final ArrayList bodyFieldNameList = new ArrayList(){{ add("page_id"); add("action_id"); add("screen_rotate"); add("agreement_num"); add("cubic_type"); add("index"); add("search_query"); add("user_query"); add("search_call_id"); add("list_num"); add("list_seq"); add("poi_id"); add("nav_seq"); add("event_id"); add("downloaded_map"); add("autovolume_control"); add("voice"); add("selectsound_a"); add("selectsound_b"); add("selectsound_c"); add("selectsound_d"); add("selectsound_e"); add("selectsound_f"); add("selectsound_g"); add("selectsound_h"); add("selectsound_i"); add("selectsound_j"); add("selectsound_k"); add("selectsound_l"); add("selectsound_m"); add("selectsound_n"); add("selectsound_o"); add("warnsound_start"); add("signsound"); add("mapview"); add("map_fontsize"); add("map_addressmod"); add("map_carvatar"); add("map_nightmod"); add("map_nightmod_set"); add("map_centertbt"); add("map_minitbt"); add("map_highwaymod"); add("route_alternative"); add("route_autoretry"); add("route_outoflink"); add("myset_push"); add("myset_sms"); add("myset_event"); add("etc_blackbox"); add("etc_mapmode"); add("etc_VMS"); add("search_engine"); add("myset_moment"); add("myset_onoff"); add("domain"); add("type"); add("subtype"); add("filter"); add("unit"); add("asr"); add("aiptrid"); add("tts"); add("db_kind"); add("text"); add("device_name"); add("device_mac"); }}; private static final ArrayList encryptedFieldsList = new ArrayList(){{ }}; private String base_time = null; private String local_time = null; private String recv_time = null; private String os_name = null; private String os_version = null; private String resolution = null; private Long screen_width = null; private Long screen_height = null; private String language_code = null; private String rake_lib = null; private String rake_lib_version = null; private String ip = null; private String recv_host = null; private String token = null; private String log_version = _$ssVersion; private String device_id = null; private String device_model = null; private String manufacturer = null; private String carrier_name = null; private String network_type = null; private String app_version = null; private String browser_name = null; private String browser_version = null; private String referrer = null; private String url = null; private String document_title = null; private String session_id = null; private String ad_id = null; private String reserved02 = null; private String ActionKey = null; private String log_key = null; private String euk = null; private String page_id = null; private String action_id = null; private String screen_rotate = null; private Long agreement_num = null; private Long cubic_type = null; private Long index = null; private String search_query = null; private String user_query = null; private String search_call_id = null; private Long list_num = null; private Long list_seq = null; private String poi_id = null; private String nav_seq = null; private String event_id = null; private Long downloaded_map = null; private Long autovolume_control = null; private Long voice = null; private Long selectsound_a = null; private Long selectsound_b = null; private Long selectsound_c = null; private Long selectsound_d = null; private Long selectsound_e = null; private Long selectsound_f = null; private Long selectsound_g = null; private Long selectsound_h = null; private Long selectsound_i = null; private Long selectsound_j = null; private Long selectsound_k = null; private Long selectsound_l = null; private Long selectsound_m = null; private Long selectsound_n = null; private Long selectsound_o = null; private Long warnsound_start = null; private Long signsound = null; private Long mapview = null; private Long map_fontsize = null; private Long map_addressmod = null; private Long map_carvatar = null; private Long map_nightmod = null; private Long map_nightmod_set = null; private Long map_centertbt = null; private Long map_minitbt = null; private Long map_highwaymod = null; private Long route_alternative = null; private Long route_autoretry = null; private Long route_outoflink = null; private Long myset_push = null; private Long myset_sms = null; private Long myset_event = null; private Long etc_blackbox = null; private Long etc_mapmode = null; private Long etc_VMS = null; private String search_engine = null; private Long myset_moment = null; private Long myset_onoff = null; private String domain = null; private String type = null; private String subtype = null; private String filter = null; private String unit = null; private String asr = null; private String aiptrid = null; private String tts = null; private String db_kind = null; private String text = null; private String device_name = null; private String device_mac = null; /** * Methods */ /* * Set base_time */ public TmapClickLogSentinelShuttle base_time(String base_time){ this.base_time = base_time; return this; } /* * Set local_time */ public TmapClickLogSentinelShuttle local_time(String local_time){ this.local_time = local_time; return this; } /* * Set recv_time */ public TmapClickLogSentinelShuttle recv_time(String recv_time){ this.recv_time = recv_time; return this; } /* * Set os_name */ public TmapClickLogSentinelShuttle os_name(String os_name){ this.os_name = os_name; return this; } /* * Set os_version */ public TmapClickLogSentinelShuttle os_version(String os_version){ this.os_version = os_version; return this; } /* * Set resolution */ public TmapClickLogSentinelShuttle resolution(String resolution){ this.resolution = resolution; return this; } /* * Set screen_width */ public TmapClickLogSentinelShuttle screen_width(Long screen_width){ this.screen_width = screen_width; return this; } /* * Set screen_height */ public TmapClickLogSentinelShuttle screen_height(Long screen_height){ this.screen_height = screen_height; return this; } /* * Set language_code */ public TmapClickLogSentinelShuttle language_code(String language_code){ this.language_code = language_code; return this; } /* * Set rake_lib */ public TmapClickLogSentinelShuttle rake_lib(String rake_lib){ this.rake_lib = rake_lib; return this; } /* * Set rake_lib_version */ public TmapClickLogSentinelShuttle rake_lib_version(String rake_lib_version){ this.rake_lib_version = rake_lib_version; return this; } /* * Set ip */ public TmapClickLogSentinelShuttle ip(String ip){ this.ip = ip; return this; } /* * Set recv_host */ public TmapClickLogSentinelShuttle recv_host(String recv_host){ this.recv_host = recv_host; return this; } /* * Set token */ public TmapClickLogSentinelShuttle token(String token){ this.token = token; return this; } /* * Set log_version */ private TmapClickLogSentinelShuttle log_version(String log_version){ this.log_version = log_version; return this; } /* * Set device_id */ public TmapClickLogSentinelShuttle device_id(String device_id){ this.device_id = device_id; return this; } /* * Set device_model */ public TmapClickLogSentinelShuttle device_model(String device_model){ this.device_model = device_model; return this; } /* * Set manufacturer */ public TmapClickLogSentinelShuttle manufacturer(String manufacturer){ this.manufacturer = manufacturer; return this; } /* * Set carrier_name */ public TmapClickLogSentinelShuttle carrier_name(String carrier_name){ this.carrier_name = carrier_name; return this; } /* * Set network_type */ public TmapClickLogSentinelShuttle network_type(String network_type){ this.network_type = network_type; return this; } /* * Set app_version */ public TmapClickLogSentinelShuttle app_version(String app_version){ this.app_version = app_version; return this; } /* * Set browser_name */ public TmapClickLogSentinelShuttle browser_name(String browser_name){ this.browser_name = browser_name; return this; } /* * Set browser_version */ public TmapClickLogSentinelShuttle browser_version(String browser_version){ this.browser_version = browser_version; return this; } /* * Set referrer */ public TmapClickLogSentinelShuttle referrer(String referrer){ this.referrer = referrer; return this; } /* * Set url */ public TmapClickLogSentinelShuttle url(String url){ this.url = url; return this; } /* * Set document_title */ public TmapClickLogSentinelShuttle document_title(String document_title){ this.document_title = document_title; return this; } /* * Set session_id */ public TmapClickLogSentinelShuttle session_id(String session_id){ this.session_id = session_id; return this; } /* * Set ad_id */ public TmapClickLogSentinelShuttle ad_id(String ad_id){ this.ad_id = ad_id; return this; } /* * Set reserved02 */ public TmapClickLogSentinelShuttle reserved02(String reserved02){ this.reserved02 = reserved02; return this; } /* * Set ActionKey */ public TmapClickLogSentinelShuttle ActionKey(String ActionKey){ this.ActionKey = ActionKey; return this; } /* * Set log_key */ public TmapClickLogSentinelShuttle log_key(String log_key){ this.log_key = log_key; return this; } /* * Set euk */ public TmapClickLogSentinelShuttle euk(String euk){ this.euk = euk; return this; } /* * Set page_id */ public TmapClickLogSentinelShuttle page_id(String page_id){ this.page_id = page_id; return this; } /* * Set action_id */ public TmapClickLogSentinelShuttle action_id(String action_id){ this.action_id = action_id; return this; } /* * Set screen_rotate */ public TmapClickLogSentinelShuttle screen_rotate(String screen_rotate){ this.screen_rotate = screen_rotate; return this; } /* * Set agreement_num */ public TmapClickLogSentinelShuttle agreement_num(Long agreement_num){ this.agreement_num = agreement_num; return this; } /* * Set cubic_type */ public TmapClickLogSentinelShuttle cubic_type(Long cubic_type){ this.cubic_type = cubic_type; return this; } /* * Set index */ public TmapClickLogSentinelShuttle index(Long index){ this.index = index; return this; } /* * Set search_query */ public TmapClickLogSentinelShuttle search_query(String search_query){ this.search_query = search_query; return this; } /* * Set user_query */ public TmapClickLogSentinelShuttle user_query(String user_query){ this.user_query = user_query; return this; } /* * Set search_call_id */ public TmapClickLogSentinelShuttle search_call_id(String search_call_id){ this.search_call_id = search_call_id; return this; } /* * Set list_num */ public TmapClickLogSentinelShuttle list_num(Long list_num){ this.list_num = list_num; return this; } /* * Set list_seq */ public TmapClickLogSentinelShuttle list_seq(Long list_seq){ this.list_seq = list_seq; return this; } /* * Set poi_id */ public TmapClickLogSentinelShuttle poi_id(String poi_id){ this.poi_id = poi_id; return this; } /* * Set nav_seq */ public TmapClickLogSentinelShuttle nav_seq(String nav_seq){ this.nav_seq = nav_seq; return this; } /* * Set event_id */ public TmapClickLogSentinelShuttle event_id(String event_id){ this.event_id = event_id; return this; } /* * Set downloaded_map */ public TmapClickLogSentinelShuttle downloaded_map(Long downloaded_map){ this.downloaded_map = downloaded_map; return this; } /* * Set autovolume_control */ public TmapClickLogSentinelShuttle autovolume_control(Long autovolume_control){ this.autovolume_control = autovolume_control; return this; } /* * Set voice */ public TmapClickLogSentinelShuttle voice(Long voice){ this.voice = voice; return this; } /* * Set selectsound_a */ public TmapClickLogSentinelShuttle selectsound_a(Long selectsound_a){ this.selectsound_a = selectsound_a; return this; } /* * Set selectsound_b */ public TmapClickLogSentinelShuttle selectsound_b(Long selectsound_b){ this.selectsound_b = selectsound_b; return this; } /* * Set selectsound_c */ public TmapClickLogSentinelShuttle selectsound_c(Long selectsound_c){ this.selectsound_c = selectsound_c; return this; } /* * Set selectsound_d */ public TmapClickLogSentinelShuttle selectsound_d(Long selectsound_d){ this.selectsound_d = selectsound_d; return this; } /* * Set selectsound_e */ public TmapClickLogSentinelShuttle selectsound_e(Long selectsound_e){ this.selectsound_e = selectsound_e; return this; } /* * Set selectsound_f */ public TmapClickLogSentinelShuttle selectsound_f(Long selectsound_f){ this.selectsound_f = selectsound_f; return this; } /* * Set selectsound_g */ public TmapClickLogSentinelShuttle selectsound_g(Long selectsound_g){ this.selectsound_g = selectsound_g; return this; } /* * Set selectsound_h */ public TmapClickLogSentinelShuttle selectsound_h(Long selectsound_h){ this.selectsound_h = selectsound_h; return this; } /* * Set selectsound_i */ public TmapClickLogSentinelShuttle selectsound_i(Long selectsound_i){ this.selectsound_i = selectsound_i; return this; } /* * Set selectsound_j */ public TmapClickLogSentinelShuttle selectsound_j(Long selectsound_j){ this.selectsound_j = selectsound_j; return this; } /* * Set selectsound_k */ public TmapClickLogSentinelShuttle selectsound_k(Long selectsound_k){ this.selectsound_k = selectsound_k; return this; } /* * Set selectsound_l */ public TmapClickLogSentinelShuttle selectsound_l(Long selectsound_l){ this.selectsound_l = selectsound_l; return this; } /* * Set selectsound_m */ public TmapClickLogSentinelShuttle selectsound_m(Long selectsound_m){ this.selectsound_m = selectsound_m; return this; } /* * Set selectsound_n */ public TmapClickLogSentinelShuttle selectsound_n(Long selectsound_n){ this.selectsound_n = selectsound_n; return this; } /* * Set selectsound_o */ public TmapClickLogSentinelShuttle selectsound_o(Long selectsound_o){ this.selectsound_o = selectsound_o; return this; } /* * Set warnsound_start */ public TmapClickLogSentinelShuttle warnsound_start(Long warnsound_start){ this.warnsound_start = warnsound_start; return this; } /* * Set signsound */ public TmapClickLogSentinelShuttle signsound(Long signsound){ this.signsound = signsound; return this; } /* * Set mapview */ public TmapClickLogSentinelShuttle mapview(Long mapview){ this.mapview = mapview; return this; } /* * Set map_fontsize */ public TmapClickLogSentinelShuttle map_fontsize(Long map_fontsize){ this.map_fontsize = map_fontsize; return this; } /* * Set map_addressmod */ public TmapClickLogSentinelShuttle map_addressmod(Long map_addressmod){ this.map_addressmod = map_addressmod; return this; } /* * Set map_carvatar */ public TmapClickLogSentinelShuttle map_carvatar(Long map_carvatar){ this.map_carvatar = map_carvatar; return this; } /* * Set map_nightmod */ public TmapClickLogSentinelShuttle map_nightmod(Long map_nightmod){ this.map_nightmod = map_nightmod; return this; } /* * Set map_nightmod_set */ public TmapClickLogSentinelShuttle map_nightmod_set(Long map_nightmod_set){ this.map_nightmod_set = map_nightmod_set; return this; } /* * Set map_centertbt */ public TmapClickLogSentinelShuttle map_centertbt(Long map_centertbt){ this.map_centertbt = map_centertbt; return this; } /* * Set map_minitbt */ public TmapClickLogSentinelShuttle map_minitbt(Long map_minitbt){ this.map_minitbt = map_minitbt; return this; } /* * Set map_highwaymod */ public TmapClickLogSentinelShuttle map_highwaymod(Long map_highwaymod){ this.map_highwaymod = map_highwaymod; return this; } /* * Set route_alternative */ public TmapClickLogSentinelShuttle route_alternative(Long route_alternative){ this.route_alternative = route_alternative; return this; } /* * Set route_autoretry */ public TmapClickLogSentinelShuttle route_autoretry(Long route_autoretry){ this.route_autoretry = route_autoretry; return this; } /* * Set route_outoflink */ public TmapClickLogSentinelShuttle route_outoflink(Long route_outoflink){ this.route_outoflink = route_outoflink; return this; } /* * Set myset_push */ public TmapClickLogSentinelShuttle myset_push(Long myset_push){ this.myset_push = myset_push; return this; } /* * Set myset_sms */ public TmapClickLogSentinelShuttle myset_sms(Long myset_sms){ this.myset_sms = myset_sms; return this; } /* * Set myset_event */ public TmapClickLogSentinelShuttle myset_event(Long myset_event){ this.myset_event = myset_event; return this; } /* * Set etc_blackbox */ public TmapClickLogSentinelShuttle etc_blackbox(Long etc_blackbox){ this.etc_blackbox = etc_blackbox; return this; } /* * Set etc_mapmode */ public TmapClickLogSentinelShuttle etc_mapmode(Long etc_mapmode){ this.etc_mapmode = etc_mapmode; return this; } /* * Set etc_VMS */ public TmapClickLogSentinelShuttle etc_VMS(Long etc_VMS){ this.etc_VMS = etc_VMS; return this; } /* * Set search_engine */ public TmapClickLogSentinelShuttle search_engine(String search_engine){ this.search_engine = search_engine; return this; } /* * Set myset_moment */ public TmapClickLogSentinelShuttle myset_moment(Long myset_moment){ this.myset_moment = myset_moment; return this; } /* * Set myset_onoff */ public TmapClickLogSentinelShuttle myset_onoff(Long myset_onoff){ this.myset_onoff = myset_onoff; return this; } /* * Set domain */ public TmapClickLogSentinelShuttle domain(String domain){ this.domain = domain; return this; } /* * Set type */ public TmapClickLogSentinelShuttle type(String type){ this.type = type; return this; } /* * Set subtype */ public TmapClickLogSentinelShuttle subtype(String subtype){ this.subtype = subtype; return this; } /* * Set filter */ public TmapClickLogSentinelShuttle filter(String filter){ this.filter = filter; return this; } /* * Set unit */ public TmapClickLogSentinelShuttle unit(String unit){ this.unit = unit; return this; } /* * Set asr */ public TmapClickLogSentinelShuttle asr(String asr){ this.asr = asr; return this; } /* * Set aiptrid */ public TmapClickLogSentinelShuttle aiptrid(String aiptrid){ this.aiptrid = aiptrid; return this; } /* * Set tts */ public TmapClickLogSentinelShuttle tts(String tts){ this.tts = tts; return this; } /* * Set db_kind */ public TmapClickLogSentinelShuttle db_kind(String db_kind){ this.db_kind = db_kind; return this; } /* * Set text */ public TmapClickLogSentinelShuttle text(String text){ this.text = text; return this; } /* * Set device_name */ public TmapClickLogSentinelShuttle device_name(String device_name){ this.device_name = device_name; return this; } /* * Set device_mac */ public TmapClickLogSentinelShuttle device_mac(String device_mac){ this.device_mac = device_mac; return this; } public TmapClickLogSentinelShuttle setBodyOftmap__euk(String page_id, String action_id, String screen_rotate, Long agreement_num, Long cubic_type, Long index, String search_query, String user_query, String search_call_id, Long list_num, Long list_seq, String poi_id, String nav_seq, String event_id, String search_engine){ clearBody(); this.log_key = "tmap"; this.euk = "euk"; this.page_id = page_id; this.action_id = action_id; this.screen_rotate = screen_rotate; this.agreement_num = agreement_num; this.cubic_type = cubic_type; this.index = index; this.search_query = search_query; this.user_query = user_query; this.search_call_id = search_call_id; this.list_num = list_num; this.list_seq = list_seq; this.poi_id = poi_id; this.nav_seq = nav_seq; this.event_id = event_id; this.search_engine = search_engine; return this; } public TmapClickLogSentinelShuttle setBodyOfsettings__euk(Long downloaded_map, Long autovolume_control, Long voice, Long selectsound_a, Long selectsound_b, Long selectsound_c, Long selectsound_d, Long selectsound_e, Long selectsound_f, Long selectsound_g, Long selectsound_h, Long selectsound_i, Long selectsound_j, Long selectsound_k, Long selectsound_l, Long selectsound_m, Long selectsound_n, Long selectsound_o, Long warnsound_start, Long signsound, Long mapview, Long map_fontsize, Long map_addressmod, Long map_carvatar, Long map_nightmod, Long map_nightmod_set, Long map_centertbt, Long map_minitbt, Long map_highwaymod, Long route_alternative, Long route_autoretry, Long route_outoflink, Long myset_push, Long myset_sms, Long myset_event, Long etc_blackbox, Long etc_mapmode, Long etc_VMS, Long myset_moment, Long myset_onoff){ clearBody(); this.log_key = "settings"; this.euk = "euk"; this.downloaded_map = downloaded_map; this.autovolume_control = autovolume_control; this.voice = voice; this.selectsound_a = selectsound_a; this.selectsound_b = selectsound_b; this.selectsound_c = selectsound_c; this.selectsound_d = selectsound_d; this.selectsound_e = selectsound_e; this.selectsound_f = selectsound_f; this.selectsound_g = selectsound_g; this.selectsound_h = selectsound_h; this.selectsound_i = selectsound_i; this.selectsound_j = selectsound_j; this.selectsound_k = selectsound_k; this.selectsound_l = selectsound_l; this.selectsound_m = selectsound_m; this.selectsound_n = selectsound_n; this.selectsound_o = selectsound_o; this.warnsound_start = warnsound_start; this.signsound = signsound; this.mapview = mapview; this.map_fontsize = map_fontsize; this.map_addressmod = map_addressmod; this.map_carvatar = map_carvatar; this.map_nightmod = map_nightmod; this.map_nightmod_set = map_nightmod_set; this.map_centertbt = map_centertbt; this.map_minitbt = map_minitbt; this.map_highwaymod = map_highwaymod; this.route_alternative = route_alternative; this.route_autoretry = route_autoretry; this.route_outoflink = route_outoflink; this.myset_push = myset_push; this.myset_sms = myset_sms; this.myset_event = myset_event; this.etc_blackbox = etc_blackbox; this.etc_mapmode = etc_mapmode; this.etc_VMS = etc_VMS; this.myset_moment = myset_moment; this.myset_onoff = myset_onoff; return this; } /** * Layout Rules */ private static final LinkedHashMap> bodyRule = new LinkedHashMap>(){{ }}; /** * Util Functions */ private ArrayList privateHeaderMemeberList = new ArrayList(); private ArrayList privatebodyMemeberList = new ArrayList(); public TmapClickLogSentinelShuttle() { Class klass = this.getClass(); for(String name : headerFieldNameList) { try { privateHeaderMemeberList.add(klass.getDeclaredField(name)); } catch (NoSuchFieldException e) { e.printStackTrace(); } } for(String name : bodyFieldNameList) { try { privatebodyMemeberList.add(klass.getDeclaredField(name)); } catch (NoSuchFieldException e) { e.printStackTrace(); } } // init encrypt module initCryptoOnce(); } @Override public String toString() { return toHBString(); } public String toHBString() { return toHBString(this._$ssDelim); } public String toHBString(String delim) { return headerToString(delim) + bodyToString(); } public String headerToString(String delim) { StringBuilder headerBuilder = new StringBuilder(); for (Field member : privateHeaderMemeberList) { try { member.setAccessible(true); Object value = member.get(this); if(value == null) { headerBuilder.append(""); } else { String fieldValue = String.valueOf(value); if(encryptedFieldsList.contains(member.getName())) { fieldValue = getEncryptedValue(fieldValue); } else { fieldValue = getEscapedValue(fieldValue); } headerBuilder.append(fieldValue); } headerBuilder.append(delim); member.setAccessible(false); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } return headerBuilder.toString(); } public void clearBody(){ for(Field bodyField:privatebodyMemeberList) { bodyField.setAccessible(true); Object value = null; try { bodyField.set(this, null); } catch (IllegalAccessException e) { e.printStackTrace(); } bodyField.setAccessible(false); } } public JSONObject getBody() { if (bodyFieldNameList.size() == 0) { return new JSONObject(); } LinkedHashMap body = new LinkedHashMap(); Class klass = this.getClass(); try { String actionKeyString = ""; for (String actionKeyName : this._$actionKey) { Field actionKeyField = klass.getDeclaredField(actionKeyName); actionKeyField.setAccessible(true); Object actionKeyValue = actionKeyField.get(this); actionKeyString += actionKeyValue == null ? "" : actionKeyValue.toString(); if(this._$actionKey.indexOf(actionKeyName) != this._$actionKey.size()-1) { actionKeyString += ":"; } actionKeyField.setAccessible(true); } ArrayList thisActionLayoutRule = this.bodyRule.get(actionKeyString); if (thisActionLayoutRule == null) { thisActionLayoutRule = new ArrayList(); } for (Field bodyField : this.privatebodyMemeberList) { String bodyFieldName = bodyField.getName(); Object value = bodyField.get(this); boolean isInLog = false; if (value != null) { if ((value instanceof String) || (value instanceof Long) || (value instanceof Double) || (value instanceof JSONObject)) { isInLog = true; } else if ((value instanceof List) && (((List) value).size() > 0)) { isInLog = true; } else if ((value instanceof Map) && (((Map) value).size() > 0)) { isInLog = true; } } if (isInLog) { if (value == null) { body.put(bodyFieldName, ""); } else { if (value instanceof List) { body.put(bodyFieldName, new JSONArray((List) value)); } else if (value instanceof Map) { body.put(bodyFieldName, new JSONObject((Map) value)); } else { if (encryptedFieldsList.contains(bodyFieldName)) { body.put(bodyFieldName, getEncryptedValue(String.valueOf(value))); } else { if(value instanceof String) { body.put(bodyFieldName, getEscapedValue((String)value)); } else { body.put(bodyFieldName, value); } } } } } } JSONObject bodyJSONOjbect = new JSONObject(body); return bodyJSONOjbect; } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return null; } public String bodyToString() { if(bodyFieldNameList.size() == 0) { return "{}"; } return getEscapedValue(this.getBody().toString()); } public static JSONObject getSentinelMeta() { JSONObject sentinel_meta = new JSONObject(); JSONObject container = new JSONObject(); try { sentinel_meta.put("_$schemaId", _$ssSchemaId); JSONObject fieldOrder = new JSONObject(); int i = 0; for(i = 0; i < headerFieldNameList.size(); i++) { fieldOrder.put(headerFieldNameList.get(i), i); } fieldOrder.put("_$body",i); sentinel_meta.put("_$fieldOrder", fieldOrder); sentinel_meta.put("_$encryptionFields", new JSONArray(encryptedFieldsList)); sentinel_meta.put("_$projectId", _$projectId); container.put("sentinel_meta", sentinel_meta); } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return container; } public static JSONObject toJSONObject(JSONObject jsonObject) { JSONObject container = new JSONObject(); JSONObject body = new JSONObject(); try { for(String name : headerFieldNameList) { if(jsonObject.has(name)) { container.put(name, jsonObject.get(name)); } else{ container.put(name,""); } } container.put(_$logVersionKey, _$ssVersion); for(String name : bodyFieldNameList) { if(jsonObject.has(name)) { body.put(name, jsonObject.get(name)); } } container.put("_$body", body); container.put("sentinel_meta", getSentinelMeta().get("sentinel_meta")); } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return container; } public JSONObject toJSONObject() { JSONObject jsonObj = new JSONObject(); try { for (Field member : privateHeaderMemeberList) { member.setAccessible(true); String key = member.getName(); Object value = member.get(this); if(value != null) { if(encryptedFieldsList.contains(member.getName())) { jsonObj.put(key, getEncryptedValue(String.valueOf(value))); } else { if(value instanceof String) { jsonObj.put(key, getEscapedValue((String)value)); } else { jsonObj.put(key, value); } } } else { jsonObj.put(key, ""); } member.setAccessible(false); } jsonObj.put("_$body", this.getBody()); jsonObj.put("sentinel_meta", getSentinelMeta().get("sentinel_meta")); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return jsonObj; } public String toJSONString() { return this.toJSONObject().toString(); } public String getEscapedValue(String value){ String vt = Character.toString((char) 0x0b); String escapedVt = "\\"+"0x0b"; String escaped = value.replaceAll(vt, escapedVt).replaceAll("\n","\\\\n").replaceAll("\t","\\\\t").replaceAll("\r","\\\\r"); return escaped; } private void initCrypto(){ // Do nothing } private void initCryptoOnce(){ // Do nothing } private String getEncryptedValue(String value){ return value; } public void setPublicKey(String modulus_n, String pub_exponent) { // Do nothing } }