// Path: src/main/java/com/dogeops/cantilever/logreader/HTTPLogObject.java
// public class HTTPLogObject {
// 	private String timestamp, method, request, bytes, useragent;
// 	private String requesting_resver, request_payload, url_request;
// 	private String[] headers;
// 	
// 	public HTTPLogObject(String timestamp, String method, String request,
// 			String bytes, String useragent) {
// 		this.timestamp = timestamp;
// 		this.method = method;
// 		this.request = request;
// 		this.bytes = bytes;
// 		this.useragent = useragent;
// 		
// 		buildRequestPayload();
// 	}
// 	
// 	private void buildHeaderArray() {
// 		String header_input = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.headers");
// 		String header_delimiter = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.headers.delimiter");
// 		this.headers = header_input.split(header_delimiter);
// 	}
// 	
// 	private void buildRequestPayload() {
// 		this.requesting_resver = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.servername");
// 		buildHeaderArray();
// 		buildURLRequest();
// 		Gson gson = new Gson();
// 		this.request_payload = gson.toJson(this);
// 	}
// 	
// 	private void buildURLRequest() {
// 		String http_port = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.port");
// 		String http_protocol = ConfigurationSingleton.instance.getConfigItem(
// 				"replay.request.protocol").toLowerCase();
// 
// 		if (http_port.equals("80") || http_port.equals("443")) {
// 			http_port = "";
// 		} else {
// 			http_port = ":" + http_port;
// 		}
// 		this.url_request = http_protocol + "://" + this.requesting_resver
// 				+ this.request + http_port;
// 	}
// 	
// 	public String getTimestamp() {
// 		return this.timestamp;
// 	}
// 	
// 	public String getPayload() {
// 		return this.request_payload;
// 	}
// 	
// 	public String getRequest() {
// 		return this.request;
// 	}
// 	
// 	public String[] getHeaders() {
// 		return this.headers;
// 	}
// 	
// 	public String getServerName() {
// 		return this.requesting_resver;
// 	}
// 	
// 	public String getMethod() {
// 		return this.method;
// 	}
// 	
// 	public String getUseragent() {
// 		return this.useragent;
// 	}
// 	
// 	public String getURLRequest() {
// 		return this.url_request;
// 	}
// }


import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import com.dogeops.cantilever.logreader.HTTPLogObject;
import com.google.gson.Gson;
import com.ning.http.client.AsyncHttpClient;
import com.ning.http.client.AsyncHttpClientConfig;
import com.ning.http.client.AsyncHttpClientConfig.Builder;

    public HTTPAsyncLogMessageListener() {
		builder = new AsyncHttpClientConfig.Builder();
		builder.setCompressionEnabled(true)
			.setMaximumConnectionsPerHost(100)
		    .setRequestTimeoutInMs(15000)
		    .build();
		
		client = new AsyncHttpClient(builder.build());
    }
	
	public enum AcceptableMethods {
		GET, POST, NAN;
		public static AcceptableMethods getValue(String str) {
			try {
				return valueOf(str);
			} catch (Exception e) {
				logger.error(e.getMessage());
				return NAN;
			}
		}
	}
	
	public void onMessage(Message message) {
		 if (message instanceof TextMessage) {
             TextMessage textMessage = (TextMessage) message;
             String text;
			try {
				text = textMessage.getText();
				Gson gson = new Gson();
// Path: src/main/java/com/dogeops/cantilever/logreader/HTTPLogObject.java
// public class HTTPLogObject {
// 	private String timestamp, method, request, bytes, useragent;
// 	private String requesting_resver, request_payload, url_request;
// 	private String[] headers;
// 	
// 	public HTTPLogObject(String timestamp, String method, String request,
// 			String bytes, String useragent) {
// 		this.timestamp = timestamp;
// 		this.method = method;
// 		this.request = request;
// 		this.bytes = bytes;
// 		this.useragent = useragent;
// 		
// 		buildRequestPayload();
// 	}
// 	
// 	private void buildHeaderArray() {
// 		String header_input = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.headers");
// 		String header_delimiter = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.headers.delimiter");
// 		this.headers = header_input.split(header_delimiter);
// 	}
// 	
// 	private void buildRequestPayload() {
// 		this.requesting_resver = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.servername");
// 		buildHeaderArray();
// 		buildURLRequest();
// 		Gson gson = new Gson();
// 		this.request_payload = gson.toJson(this);
// 	}
// 	
// 	private void buildURLRequest() {
// 		String http_port = ConfigurationSingleton.instance
// 				.getConfigItem("replay.request.port");
// 		String http_protocol = ConfigurationSingleton.instance.getConfigItem(
// 				"replay.request.protocol").toLowerCase();
// 
// 		if (http_port.equals("80") || http_port.equals("443")) {
// 			http_port = "";
// 		} else {
// 			http_port = ":" + http_port;
// 		}
// 		this.url_request = http_protocol + "://" + this.requesting_resver
// 				+ this.request + http_port;
// 	}
// 	
// 	public String getTimestamp() {
// 		return this.timestamp;
// 	}
// 	
// 	public String getPayload() {
// 		return this.request_payload;
// 	}
// 	
// 	public String getRequest() {
// 		return this.request;
// 	}
// 	
// 	public String[] getHeaders() {
// 		return this.headers;
// 	}
// 	
// 	public String getServerName() {
// 		return this.requesting_resver;
// 	}
// 	
// 	public String getMethod() {
// 		return this.method;
// 	}
// 	
// 	public String getUseragent() {
// 		return this.useragent;
// 	}
// 	
// 	public String getURLRequest() {
// 		return this.url_request;
// 	}
// }


// Path: src/main/java/com/dogeops/cantilever/truss/client/ning/HTTPAsyncLogMessageListener.java
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import com.dogeops.cantilever.logreader.HTTPLogObject;
import com.google.gson.Gson;
import com.ning.http.client.AsyncHttpClient;
import com.ning.http.client.AsyncHttpClientConfig;
import com.ning.http.client.AsyncHttpClientConfig.Builder;


    public HTTPAsyncLogMessageListener() {
		builder = new AsyncHttpClientConfig.Builder();
		builder.setCompressionEnabled(true)
			.setMaximumConnectionsPerHost(100)
		    .setRequestTimeoutInMs(15000)
		    .build();
		
		client = new AsyncHttpClient(builder.build());
    }
	
	public enum AcceptableMethods {
		GET, POST, NAN;
		public static AcceptableMethods getValue(String str) {
			try {
				return valueOf(str);
			} catch (Exception e) {
				logger.error(e.getMessage());
				return NAN;
			}
		}
	}
	
	public void onMessage(Message message) {
		 if (message instanceof TextMessage) {
             TextMessage textMessage = (TextMessage) message;
             String text;
			try {
				text = textMessage.getText();
				Gson gson = new Gson();
				HTTPLogObject http_log = gson.fromJson(text, HTTPLogObject.class);