001package co.codewizards.cloudstore.core.dto; 002 003import java.io.Serializable; 004import java.util.ArrayList; 005import java.util.List; 006 007import javax.xml.bind.annotation.XmlRootElement; 008 009/** 010 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 011 */ 012@XmlRootElement 013public class Error 014implements Serializable 015{ 016 private static final long serialVersionUID = 1L; 017 018 private String className; 019 private String message; 020 private List<ErrorStackTraceElement> stackTraceElements; 021 private Error cause; 022 023 public Error() { } 024 025 public Error(String message) { 026 this.message = message; 027 } 028 029 public Error(Throwable throwable) { 030 if (throwable != null) { 031 this.message = throwable.getMessage(); 032 this.className = throwable.getClass().getName(); 033 034 for (final StackTraceElement stackTraceElement : throwable.getStackTrace()) { 035 this.getStackTraceElements().add(new ErrorStackTraceElement(stackTraceElement)); 036 } 037 038 Throwable cause = throwable.getCause(); 039 if (cause != null) { 040 final Error errorCause = new Error(cause); 041 this.setCause(errorCause); 042 } 043 } 044 } 045 046 public String getClassName() { 047 return className; 048 } 049 public void setClassName(String className) { 050 this.className = className; 051 } 052 053 public String getMessage() { 054 return message; 055 } 056 public void setMessage(String message) { 057 this.message = message; 058 } 059 060 public List<ErrorStackTraceElement> getStackTraceElements() { 061 if (stackTraceElements == null) 062 stackTraceElements = new ArrayList<ErrorStackTraceElement>(); 063 064 return stackTraceElements; 065 } 066 public void setStackTraceElements(List<ErrorStackTraceElement> stackTraceElements) { 067 this.stackTraceElements = stackTraceElements; 068 } 069 070 public Error getCause() { 071 return cause; 072 } 073 public void setCause(Error cause) { 074 this.cause = cause; 075 } 076 077 @Override 078 public String toString() { 079 return getClass().getSimpleName() + '[' + toString_getProperties() + ']'; 080 } 081 082 protected String toString_getProperties() { 083 return "className=" + className 084 + ", message=" + message 085 + ", stackTraceElements=" + stackTraceElements 086 + ", cause=" + cause; 087 } 088}