package org.spotter.shared.result.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* A problem occurrence stores the root cause location of a problem and
* additional resources. It may contain further information.
*
* @author Denis Knoepfle
*
*/
public class ProblemOccurrence implements Serializable {
private static final long serialVersionUID = 7564579221553780427L;
private final List<String> resourceFiles;
private final Serializable rootCauseLocation;
private String message;
/**
* Creates a new occurrence with a root cause location and an optional
* message.
*
* @param rootCauseLocation
* An object representing the root cause location for this
* occurrence. This might be of any kind e.g. a method, a class
* or a stack trace element. Must not be <code>null</code>.
* @param message
* An optional message describing the occurrence.
*/
public ProblemOccurrence(Serializable rootCauseLocation, String message) {
if (rootCauseLocation == null) {
throw new IllegalArgumentException("the root cause location must not be null");
}
this.resourceFiles = new ArrayList<>();
this.rootCauseLocation = rootCauseLocation;
this.message = message;
}
/**
* Creates a new occurrence with a root cause location and an empty message.
*
* @param rootCauseLocation
* An object representing the root cause location for this
* occurrence. This might be of any kind e.g. a method, a class
* or a stack trace element.
*/
public ProblemOccurrence(Serializable rootCauseLocation) {
this(rootCauseLocation, "");
}
/**
* Adds the path to an additional resource.
*
* @param pathToFile
* path to file
*/
public void addResourceFile(String pathToFile) {
getResourceFiles().add(pathToFile);
}
/**
* @return the resourceFiles
*/
public List<String> getResourceFiles() {
return resourceFiles;
}
/**
* @return the root cause location
*/
public Object getRootCauseLocation() {
return rootCauseLocation;
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
/**
* Sets the message.
*
* @param message
* the message to set
*/
public void setMessage(String message) {
this.message = message;
}
}