/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package org.ebayopensource.turmeric.runtime.spf.impl.internal.config;
import java.util.HashMap;
import java.util.List;
import org.ebayopensource.turmeric.runtime.common.impl.internal.config.FrameworkHandlerConfig;
import org.ebayopensource.turmeric.runtime.common.impl.pipeline.BaseLoggingHandler;
import com.ebay.kernel.bean.configuration.BeanPropertyInfo;
import com.ebay.kernel.bean.configuration.ConfigCategoryCreateException;
/**
* @author
*/
public class ServicePayloadLogConfigBean extends ServiceConfigBean {
// Alias'ing with the LoggingHandler options, so that all handler options are listed in one place
public static final String PROP_RequestPAYLOADLOG = BaseLoggingHandler.REQUEST_PAYLOAD_LOG_LEVEL;
public static final String PROP_RequestPAYLOADCALLOG = "cal-request-payload-log-level";
public static final String PROP_ResponsePAYLOADLOG = BaseLoggingHandler.RESPONSE_PAYLOAD_LOG_LEVEL;
public static final String PROP_ResponsePAYLOADCALLOG = "cal-response-payload-log-level";
public static final String PROP_PAYLOADMAXBYTES = "payload-max-bytes";
public static final BeanPropertyInfo RequestPAYLOADCALLOG = createBeanPropertyInfo(
"m_RequestPayloadCalLog", PROP_RequestPAYLOADCALLOG, true);
public static final BeanPropertyInfo ResponsePAYLOADCALLOG = createBeanPropertyInfo(
"m_ResponsePayloadCalLog", PROP_ResponsePAYLOADCALLOG, true);
public static final BeanPropertyInfo RequestPAYLOADLOG = createBeanPropertyInfo(
"m_RequestPayloadLog", PROP_RequestPAYLOADLOG, true);
public static final BeanPropertyInfo ResponsePAYLOADLOG = createBeanPropertyInfo(
"m_ResponsePayloadLog", PROP_ResponsePAYLOADLOG, true);
public static final BeanPropertyInfo PAYLOADMAXBYTES = createBeanPropertyInfo(
"m_PayloadMaxBytes", PROP_PAYLOADMAXBYTES, true);
public static final String PAYLOADLOG_ON ="on";
public static final String PAYLOADLOG_OFF ="off";
public static final String PAYLOADLOG_FULL ="full";
public static final String PAYLOADLOG_ERRORONLY ="errorOnly";
public static final int ONE_MB = 1024*1024;
public static final int FOUR_KB = 4096;
// modifiable properties
private String m_RequestPayloadLog;
private String m_RequestPayloadCalLog;
private String m_ResponsePayloadLog;
private String m_ResponsePayloadCalLog;
private String m_PayloadMaxBytes;
ServicePayloadLogConfigBean(ServiceConfigHolder config) throws ConfigCategoryCreateException {
super(config, "PayloadLog");
}
public String getRequestPayloadLog() {
if (m_RequestPayloadLog == null)
return PAYLOADLOG_ERRORONLY;
return m_RequestPayloadLog;
}
public String getRequestPayloadCalLog() {
if (m_RequestPayloadCalLog == null)
return PAYLOADLOG_ERRORONLY;
return m_RequestPayloadCalLog;
}
public void setRequestPayloadLog(String value) {
changeProperty(RequestPAYLOADLOG, m_RequestPayloadLog, value);
}
public void setRequestPayloadCalLog(String value) {
changeProperty(RequestPAYLOADCALLOG, m_RequestPayloadCalLog, value);
}
public String getResponsePayloadLog() {
return m_ResponsePayloadLog;
}
public String getResponsePayloadCalLog() {
return m_ResponsePayloadCalLog;
}
public void setResponsePayloadLog(String value) {
changeProperty(ResponsePAYLOADLOG, m_ResponsePayloadLog, value);
}
public String getPayloadMaxBytes() {
return m_PayloadMaxBytes;
}
public void setPayloadMaxBytes(String value) {
changeProperty(PAYLOADMAXBYTES, m_PayloadMaxBytes, value);
}
public void setResponsePayloadCalLog(String value) {
changeProperty(ResponsePAYLOADCALLOG, m_ResponsePayloadCalLog, value);
}
@Override
protected void setDefaultsFromConfig(ServiceConfigHolder config) {
m_RequestPayloadLog = getRequestPayloadLog(config);
m_RequestPayloadCalLog = getRequestPayloadCalLog(config);
m_ResponsePayloadLog = getResponsePayloadLog(config);
m_ResponsePayloadCalLog = getResponsePayloadCalLog(config);
m_PayloadMaxBytes = getPayloadMaxBytes(config);
}
@Override
protected void updateConfigHolder(ServiceConfigHolder config) {
updateConfigHolderOption(config, PROP_RequestPAYLOADLOG, m_RequestPayloadLog);
updateConfigHolderOption(config, PROP_RequestPAYLOADCALLOG, m_RequestPayloadCalLog);
updateConfigHolderOption(config, PROP_ResponsePAYLOADLOG, m_ResponsePayloadLog);
updateConfigHolderOption(config, PROP_ResponsePAYLOADCALLOG, m_ResponsePayloadCalLog);
updateConfigHolderOption(config, PROP_PAYLOADMAXBYTES, m_PayloadMaxBytes);
}
public static void updateConfigHolderOption(ServiceConfigHolder holder, String property, String value ){
List<FrameworkHandlerConfig> loggingHandlers = holder.getMessageProcessorConfig().getLoggingHandlers();
boolean found = false;
for (FrameworkHandlerConfig lh : loggingHandlers) {
HashMap<String, String> options = lh.getOptions();
for (String key : options.keySet()) {
if (key.equalsIgnoreCase(property)) {
options.put(key, value);
found = true;
break;
}
}
if (found) break;
}
}
public static String getConfigHolderOptionValue(ServiceConfigHolder holder, String property ){
List<FrameworkHandlerConfig> loggingHandlers = holder.getMessageProcessorConfig().getLoggingHandlers();
boolean found = false;
String value = null;
for (FrameworkHandlerConfig lh : loggingHandlers) {
HashMap<String, String> options = lh.getOptions();
for (String key : options.keySet()) {
if (key.equalsIgnoreCase(property)) {
value = options.get(key);
found = true;
break;
}
}
if (found) break;
}
return value;
}
private String getRequestPayloadLog(ServiceConfigHolder config){
String value = getConfigHolderOptionValue(config, PROP_RequestPAYLOADLOG);
if (value == null)
return PAYLOADLOG_ON;
return value;
}
private String getRequestPayloadCalLog(ServiceConfigHolder config){
String value = getConfigHolderOptionValue(config, PROP_RequestPAYLOADCALLOG);
if (value == null)
return PAYLOADLOG_ON;
return value;
}
private String getResponsePayloadCalLog(ServiceConfigHolder config){
String value = getConfigHolderOptionValue(config, PROP_ResponsePAYLOADCALLOG);
if (value == null)
return PAYLOADLOG_OFF;
return value;
}
private String getResponsePayloadLog(ServiceConfigHolder config){
String value = getConfigHolderOptionValue(config, PROP_ResponsePAYLOADLOG);
if (value == null)
return PAYLOADLOG_OFF;
return value;
}
private String getPayloadMaxBytes(ServiceConfigHolder config){
String value = getConfigHolderOptionValue(config, PROP_PAYLOADMAXBYTES);
if (value == null)
return String.valueOf(FOUR_KB);
return value;
}
}