// Path: core/src/main/java/com/mindscapehq/raygun4java/core/handlers/requestfilters/RaygunExcludeLocalRequestFilter.java
// public class RaygunExcludeLocalRequestFilter extends RaygunExcludeRequestFilter {
//     private static final String LOCALHOST = "localhost";
//     public RaygunExcludeLocalRequestFilter() {
//         super(new Filter() {
//             public boolean shouldFilterOut(RaygunRequestMessageDetails requestMessage) {
//                 return requestMessage.getRequest().getHostName().toLowerCase().startsWith(LOCALHOST);
//             }
//         });
//     }
// }
// 
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/messages/RaygunMessage.java
// public class RaygunMessage {
// 
//     protected String occurredOn;
//     protected RaygunMessageDetails details;
// 
//     public RaygunMessage() {
//         details = new RaygunMessageDetails();
// 
//         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
//         df.setTimeZone(TimeZone.getTimeZone("UTC"));
//         occurredOn = df.format(Calendar.getInstance().getTime());
//     }
// 
//     public String getOccurredOn() {
//         return occurredOn;
//     }
// 
//     public void setOccurredOn(String occurredOn) {
//         this.occurredOn = occurredOn;
//     }
// 
//     public RaygunMessageDetails getDetails() {
//         return details;
//     }
// 
//     public void setDetails(RaygunMessageDetails details) {
//         this.details = details;
//     }
// }
// 
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/messages/RaygunRequestMessage.java
// public class RaygunRequestMessage {
// 
//     protected String hostName;
//     protected String url;
//     protected String httpMethod;
//     protected String ipAddress;
//     protected Map<String, String> queryString;
//     protected Map<String, String> data;
//     protected Map<String, String> form;
//     protected Map<String, String> headers;
//     protected Map<String, String> cookies;
//     protected String rawData;
// 
//     public Map<String, String> queryStringToMap(String query) {
//         String[] params = query.split("&");
//         Map<String, String> map = new HashMap<String, String>();
//         for (String param : params) {
//             int equalIndex = param.indexOf("=");
//             String key = param;
//             String value = null;
//             if (equalIndex > 0) {
//                 key = param.substring(0, equalIndex);
//                 if (param.length() > equalIndex + 1) {
//                     value = param.substring(equalIndex + 1);
//                 }
//             }
//             map.put(key, value);
//         }
//         return map;
//     }
// 
//     public Map<String, String> getHeaders() {
//         return headers;
//     }
// 
//     public Map<String, String> getForm() {
//         return form;
//     }
// 
//     public Map<String, String> getData() {
//         return data;
//     }
// 
//     public Map<String, String> getQueryString() {
//         return queryString;
//     }
// 
//     public Map<String, String> getCookies() {
//         return cookies;
//     }
// 
//     public String getHostName() {
//         return hostName;
//     }
// 
//     public void setHostName(String hostName) {
//         this.hostName = hostName;
//     }
// 
//     public String getHttpMethod() {
//         return httpMethod;
//     }
// 
//     public void setHttpMethod(String httpMethod) {
//         this.httpMethod = httpMethod;
//     }
// 
//     public String getIpAddress() {
//         return ipAddress;
//     }
// 
//     public void setIpAddress(String ipAddress) {
//         this.ipAddress = ipAddress;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// }
// 
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/messages/RaygunRequestMessageDetails.java
// public class RaygunRequestMessageDetails extends RaygunMessageDetails {
// 
//     private RaygunRequestMessage request;
//     private RaygunResponseMessage response;
// 
//     public RaygunRequestMessage getRequest() {
//         return request;
//     }
// 
//     public void setRequest(RaygunRequestMessage request) {
//         this.request = request;
//     }
// 
//     public RaygunResponseMessage getResponse() {
//         return response;
//     }
// 
//     public void setResponse(RaygunResponseMessage response) {
//         this.response = response;
//     }
// }


import com.mindscapehq.raygun4java.core.handlers.requestfilters.RaygunExcludeLocalRequestFilter;
import com.mindscapehq.raygun4java.core.messages.RaygunMessage;
import com.mindscapehq.raygun4java.core.messages.RaygunRequestMessage;
import com.mindscapehq.raygun4java.core.messages.RaygunRequestMessageDetails;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
package com.mindscapehq.raygun4java.core.handlers.requestfilters;



public class RaygunExcludeLocalRequestFilterTest {

    RaygunMessage localMessage;
    RaygunRequestMessageDetails details;

    @Before
    public void setup() {
        localMessage = new RaygunMessage();
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/handlers/requestfilters/RaygunExcludeLocalRequestFilter.java
// public class RaygunExcludeLocalRequestFilter extends RaygunExcludeRequestFilter {
//     private static final String LOCALHOST = "localhost";
//     public RaygunExcludeLocalRequestFilter() {
//         super(new Filter() {
//             public boolean shouldFilterOut(RaygunRequestMessageDetails requestMessage) {
//                 return requestMessage.getRequest().getHostName().toLowerCase().startsWith(LOCALHOST);
//             }
//         });
//     }
// }
// 
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/messages/RaygunMessage.java
// public class RaygunMessage {
// 
//     protected String occurredOn;
//     protected RaygunMessageDetails details;
// 
//     public RaygunMessage() {
//         details = new RaygunMessageDetails();
// 
//         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
//         df.setTimeZone(TimeZone.getTimeZone("UTC"));
//         occurredOn = df.format(Calendar.getInstance().getTime());
//     }
// 
//     public String getOccurredOn() {
//         return occurredOn;
//     }
// 
//     public void setOccurredOn(String occurredOn) {
//         this.occurredOn = occurredOn;
//     }
// 
//     public RaygunMessageDetails getDetails() {
//         return details;
//     }
// 
//     public void setDetails(RaygunMessageDetails details) {
//         this.details = details;
//     }
// }
// 
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/messages/RaygunRequestMessage.java
// public class RaygunRequestMessage {
// 
//     protected String hostName;
//     protected String url;
//     protected String httpMethod;
//     protected String ipAddress;
//     protected Map<String, String> queryString;
//     protected Map<String, String> data;
//     protected Map<String, String> form;
//     protected Map<String, String> headers;
//     protected Map<String, String> cookies;
//     protected String rawData;
// 
//     public Map<String, String> queryStringToMap(String query) {
//         String[] params = query.split("&");
//         Map<String, String> map = new HashMap<String, String>();
//         for (String param : params) {
//             int equalIndex = param.indexOf("=");
//             String key = param;
//             String value = null;
//             if (equalIndex > 0) {
//                 key = param.substring(0, equalIndex);
//                 if (param.length() > equalIndex + 1) {
//                     value = param.substring(equalIndex + 1);
//                 }
//             }
//             map.put(key, value);
//         }
//         return map;
//     }
// 
//     public Map<String, String> getHeaders() {
//         return headers;
//     }
// 
//     public Map<String, String> getForm() {
//         return form;
//     }
// 
//     public Map<String, String> getData() {
//         return data;
//     }
// 
//     public Map<String, String> getQueryString() {
//         return queryString;
//     }
// 
//     public Map<String, String> getCookies() {
//         return cookies;
//     }
// 
//     public String getHostName() {
//         return hostName;
//     }
// 
//     public void setHostName(String hostName) {
//         this.hostName = hostName;
//     }
// 
//     public String getHttpMethod() {
//         return httpMethod;
//     }
// 
//     public void setHttpMethod(String httpMethod) {
//         this.httpMethod = httpMethod;
//     }
// 
//     public String getIpAddress() {
//         return ipAddress;
//     }
// 
//     public void setIpAddress(String ipAddress) {
//         this.ipAddress = ipAddress;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         this.url = url;
//     }
// }
// 
// Path: core/src/main/java/com/mindscapehq/raygun4java/core/messages/RaygunRequestMessageDetails.java
// public class RaygunRequestMessageDetails extends RaygunMessageDetails {
// 
//     private RaygunRequestMessage request;
//     private RaygunResponseMessage response;
// 
//     public RaygunRequestMessage getRequest() {
//         return request;
//     }
// 
//     public void setRequest(RaygunRequestMessage request) {
//         this.request = request;
//     }
// 
//     public RaygunResponseMessage getResponse() {
//         return response;
//     }
// 
//     public void setResponse(RaygunResponseMessage response) {
//         this.response = response;
//     }
// }


// Path: core/src/test/java/com/mindscapehq/raygun4java/core/handlers/requestfilters/RaygunExcludeLocalRequestFilterTest.java
import com.mindscapehq.raygun4java.core.handlers.requestfilters.RaygunExcludeLocalRequestFilter;
import com.mindscapehq.raygun4java.core.messages.RaygunMessage;
import com.mindscapehq.raygun4java.core.messages.RaygunRequestMessage;
import com.mindscapehq.raygun4java.core.messages.RaygunRequestMessageDetails;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;

package com.mindscapehq.raygun4java.core.handlers.requestfilters;



public class RaygunExcludeLocalRequestFilterTest {

    RaygunMessage localMessage;
    RaygunRequestMessageDetails details;

    @Before
    public void setup() {
        localMessage = new RaygunMessage();
        details = new RaygunRequestMessageDetails();