// Path: common/src/main/java/cz/gopay/api/v3/model/APIError.java
// @XmlRootElement(name = "error")
// public class APIError {
// 
//     @XmlElement(name = "date_issued")
//     @XmlJavaTypeAdapter(GPTimestampAdapter.class)
//     private Date dateIssued;
// 
//     @XmlElement(name = "errors",required = true)
//     private List<ErrorElement> errorMessages;
// 
//     public APIError() {
//     }
// 
//     public APIError(Date dateIssued) {
//         this.dateIssued = dateIssued;
//     }
// 
//     public static APIError create() {
//         return new APIError(new Date());
//     }
// 
//     public APIError addError(String errorName, int errorCode, String message,
//             String description) {
//         if (errorMessages == null) {
//             errorMessages = new ArrayList<>();
//         }
// 
//         errorMessages.add(new ErrorElement(errorName, errorCode, message, description));
// 
//         return this;
//     }
// 
//     public APIError addError(String errorName, int errorCode, String field,
//             String message, String description) {
//         if (errorMessages == null) {
//             errorMessages = new ArrayList<>();
//         }
// 
//         errorMessages.add(new ErrorElement(errorName, errorCode, field, message, description));
//         return this;
//     }
// 
//     public Date getDateIssued() {
//         return dateIssued;
//     }
// 
//     public void setDateIssued(Date dateOccured) {
//         this.dateIssued = dateOccured;
//     }
// 
//     public List<ErrorElement> getErrorMessages() {
//         return errorMessages;
//     }
// 
//     public void setErrorMessages(List<ErrorElement> errors) {
//         this.errorMessages = errors;
//     }
// 
// }
// 
// Path: common/src/main/java/cz/gopay/api/v3/model/ErrorElement.java
// @XmlAccessorType(XmlAccessType.NONE)
// public class ErrorElement {
// 
//     @XmlElement(name = "scope")
//     private ErrorScope scope;
// 
//     @XmlElement(name = "field")
//     private String field;
// 
//     @XmlElement(name = "error_code")
//     private int errorCode;
// 
//     @XmlElement(name = "error_name")
//     private String errorName;
// 
//     @XmlElement(name = "message")
//     private String message;
// 
//     @XmlElement(name = "description")
//     private String description;
// 
//     public ErrorElement() {
//     }
// 
//     public ErrorElement(String errorName, int errorCode, String message,
//             String description) {
//         super();
//         this.scope = ErrorScope.G;
//         this.errorCode = errorCode;
//         this.errorName = errorName;
//         this.message = message;
//         this.description = description;
//     }
// 
//     public ErrorElement(String errorName, int errorCode, String field,
//             String message, String description) {
//         super();
//         this.scope = ErrorScope.F;
//         this.field = field;
//         this.errorCode = errorCode;
//         this.errorName = errorName;
//         this.message = message;
//         this.description = description;
//     }
// 
//     public ErrorScope getScope() {
//         return scope;
//     }
// 
//     public String getField() {
//         return field;
//     }
// 
//     public int getErrorCode() {
//         return errorCode;
//     }
// 
//     public String getErrorName() {
//         return errorName;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
// }


import java.util.Date;
import java.util.List;
import cz.gopay.api.v3.model.APIError;
import cz.gopay.api.v3.model.ErrorElement;
import java.util.Collections;
package cz.gopay.api.v3;



/**
 *
 * @author Zbynek Novak novak.zbynek@gmail.com
 *
 */
public class GPClientException extends Exception {

    private final int httpResultCode;
    private final APIError error;

    public GPClientException(int httpResultCode, APIError error) {
        this.error = error;
        this.httpResultCode = httpResultCode;
    }

    public APIError getError() {
        return error;
    }

    public Date getDateIssued() {
        return error.getDateIssued();
    }

// Path: common/src/main/java/cz/gopay/api/v3/model/APIError.java
// @XmlRootElement(name = "error")
// public class APIError {
// 
//     @XmlElement(name = "date_issued")
//     @XmlJavaTypeAdapter(GPTimestampAdapter.class)
//     private Date dateIssued;
// 
//     @XmlElement(name = "errors",required = true)
//     private List<ErrorElement> errorMessages;
// 
//     public APIError() {
//     }
// 
//     public APIError(Date dateIssued) {
//         this.dateIssued = dateIssued;
//     }
// 
//     public static APIError create() {
//         return new APIError(new Date());
//     }
// 
//     public APIError addError(String errorName, int errorCode, String message,
//             String description) {
//         if (errorMessages == null) {
//             errorMessages = new ArrayList<>();
//         }
// 
//         errorMessages.add(new ErrorElement(errorName, errorCode, message, description));
// 
//         return this;
//     }
// 
//     public APIError addError(String errorName, int errorCode, String field,
//             String message, String description) {
//         if (errorMessages == null) {
//             errorMessages = new ArrayList<>();
//         }
// 
//         errorMessages.add(new ErrorElement(errorName, errorCode, field, message, description));
//         return this;
//     }
// 
//     public Date getDateIssued() {
//         return dateIssued;
//     }
// 
//     public void setDateIssued(Date dateOccured) {
//         this.dateIssued = dateOccured;
//     }
// 
//     public List<ErrorElement> getErrorMessages() {
//         return errorMessages;
//     }
// 
//     public void setErrorMessages(List<ErrorElement> errors) {
//         this.errorMessages = errors;
//     }
// 
// }
// 
// Path: common/src/main/java/cz/gopay/api/v3/model/ErrorElement.java
// @XmlAccessorType(XmlAccessType.NONE)
// public class ErrorElement {
// 
//     @XmlElement(name = "scope")
//     private ErrorScope scope;
// 
//     @XmlElement(name = "field")
//     private String field;
// 
//     @XmlElement(name = "error_code")
//     private int errorCode;
// 
//     @XmlElement(name = "error_name")
//     private String errorName;
// 
//     @XmlElement(name = "message")
//     private String message;
// 
//     @XmlElement(name = "description")
//     private String description;
// 
//     public ErrorElement() {
//     }
// 
//     public ErrorElement(String errorName, int errorCode, String message,
//             String description) {
//         super();
//         this.scope = ErrorScope.G;
//         this.errorCode = errorCode;
//         this.errorName = errorName;
//         this.message = message;
//         this.description = description;
//     }
// 
//     public ErrorElement(String errorName, int errorCode, String field,
//             String message, String description) {
//         super();
//         this.scope = ErrorScope.F;
//         this.field = field;
//         this.errorCode = errorCode;
//         this.errorName = errorName;
//         this.message = message;
//         this.description = description;
//     }
// 
//     public ErrorScope getScope() {
//         return scope;
//     }
// 
//     public String getField() {
//         return field;
//     }
// 
//     public int getErrorCode() {
//         return errorCode;
//     }
// 
//     public String getErrorName() {
//         return errorName;
//     }
// 
//     public String getMessage() {
//         return message;
//     }
// 
//     public String getDescription() {
//         return description;
//     }
// 
// }


// Path: common/src/main/java/cz/gopay/api/v3/GPClientException.java
import java.util.Date;
import java.util.List;
import cz.gopay.api.v3.model.APIError;
import cz.gopay.api.v3.model.ErrorElement;
import java.util.Collections;

package cz.gopay.api.v3;



/**
 *
 * @author Zbynek Novak novak.zbynek@gmail.com
 *
 */
public class GPClientException extends Exception {

    private final int httpResultCode;
    private final APIError error;

    public GPClientException(int httpResultCode, APIError error) {
        this.error = error;
        this.httpResultCode = httpResultCode;
    }

    public APIError getError() {
        return error;
    }

    public Date getDateIssued() {
        return error.getDateIssued();
    }

    public List<ErrorElement> getErrorMessages() {