// Modified or written by Luca Marrocco for inclusion with hoptoad.
// Copyright (c) 2009 Luca Marrocco.
// Licensed under the Apache License, Version 2.0 (the "License")
package hoptoad;
import static java.util.Arrays.*;
import java.util.*;
public class HoptoadNotice {
private final String apiKey;
private final String errorMessage;
private Backtrace backtrace = new Backtrace(asList("backtrace is empty"));
private String projectRoot;
private String environmentName;
private final Map<String, Object> environment = new TreeMap<String, Object>();
private Map<String, Object> request = new TreeMap<String, Object>();
private Map<String, Object> session = new TreeMap<String, Object>();
private String errorClass;
private boolean hasRequest = false;
private final String url;
private final String component;
public HoptoadNotice(final String apiKey, String projectRoot, String environmentName, final String errorMessage, String errorClass,
final Backtrace backtrace, final Map<String, Object> request, final Map<String, Object> session, final Map<String, Object> environment,
final List<String> environmentFilters, boolean hasRequest, String url, String component) {
this.apiKey = apiKey;
this.projectRoot = projectRoot;
this.environmentName = environmentName;
this.errorClass = errorClass;
this.errorMessage = errorMessage;
this.backtrace = backtrace;
this.request = request;
this.session = session;
this.hasRequest = hasRequest;
this.url = url;
this.component = component;
filter(environment, environmentFilters);
}
public String apiKey() {
return apiKey;
}
public Backtrace backtrace() {
return backtrace;
}
public String env() {
return environmentName;
}
public Map<String, Object> environment() {
return environment;
}
public String errorClass() {
return errorClass;
}
public String errorMessage() {
return errorMessage;
}
private void filter(final Map<String, Object> environment, final List<String> environmentFilters) {
for (final String key : environment.keySet()) {
if (!matches(environmentFilters, key)) {
this.environment.put(key, environment.get(key));
}
}
}
private boolean matches(final List<String> environmentFilters, final String key) {
for (final String filter : environmentFilters) {
if (key.matches(filter)) return true;
}
return false;
}
public Map<String, Object> request() {
return request;
}
public Map<String, Object> session() {
return session;
}
public boolean hasRequest() {
return hasRequest;
}
public String url() {
return url;
}
public String component() {
return component;
}
public String projectRoot() {
return projectRoot;
}
}