// Path: core/src/main/java/com/github/ehe/simpleorchestrator/exception/OrchestratorException.java
// public class OrchestratorException extends RuntimeException {
// 
//     private static final long serialVersionUID = 1L;
// 
//     private int errorCode = 0;
// 
//     public OrchestratorException(String msg, Throwable cause) {
//         super(msg, cause);
//     }
// 
//     public OrchestratorException(String msg, int errorCode) {
//         super(msg);
//         this.errorCode = errorCode;
//     }
// 
//     public OrchestratorException(String msg, int errorCode, Throwable cause) {
//         super(msg, cause);
//         this.errorCode = errorCode;
//     }
// 
//     public int getErrorCode() {
//         return errorCode;
//     }
// }
// 
// Path: samples/src/main/java/com/github/ehe/simpleorchestrator/sample/task/ValidationTask.java
// @Component
// public class ValidationTask<A> implements Task<ValidationContext<A>> {
// 
//     private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
//     @Override
//     public void execute(ValidationContext<A> context) throws OrchestratorException {
//         A application = context.getApplication();
// 
//         Set<ConstraintViolation<A>> constraintViolations
//                 =validator.validate(application, Default.class);
// 
//         if(constraintViolations.size()>0){
//             List<ValidationError> errors =
//                     constraintViolations.stream().map(v -> new ValidationError(v.getMessage(), v.getPropertyPath().toString()))
//                     .collect(Collectors.toList());
//             throw new ValidationException(errors);
//         }
//     }
// 
//     public static class ValidationError{
//         private String message;
//         private String path;
// 
//         public ValidationError(String message, String path) {
//             this.message = message;
//             this.path = path;
//         }
// 
//         public ValidationError() {
//         }
// 
//         public String getMessage() {
//             return message;
//         }
// 
//         public void setMessage(String message) {
//             this.message = message;
//         }
// 
//         public String getPath() {
//             return path;
//         }
// 
//         public void setPath(String path) {
//             this.path = path;
//         }
//     }
// }


import java.util.List;
import com.github.ehe.simpleorchestrator.exception.OrchestratorException;
import com.github.ehe.simpleorchestrator.sample.task.ValidationTask;
/*
 *
 *  * Copyright (c) 2017. Eric He (eriche39@gmail.com)
 *  *
 *  * This software is licensed under
 *  *
 *  * MIT license
 *  *
 *
 */

package com.github.ehe.simpleorchestrator.sample.exception;



public class ValidationException extends OrchestratorException{

    private List<ValidationTask.ValidationError> errors;

// Path: core/src/main/java/com/github/ehe/simpleorchestrator/exception/OrchestratorException.java
// public class OrchestratorException extends RuntimeException {
// 
//     private static final long serialVersionUID = 1L;
// 
//     private int errorCode = 0;
// 
//     public OrchestratorException(String msg, Throwable cause) {
//         super(msg, cause);
//     }
// 
//     public OrchestratorException(String msg, int errorCode) {
//         super(msg);
//         this.errorCode = errorCode;
//     }
// 
//     public OrchestratorException(String msg, int errorCode, Throwable cause) {
//         super(msg, cause);
//         this.errorCode = errorCode;
//     }
// 
//     public int getErrorCode() {
//         return errorCode;
//     }
// }
// 
// Path: samples/src/main/java/com/github/ehe/simpleorchestrator/sample/task/ValidationTask.java
// @Component
// public class ValidationTask<A> implements Task<ValidationContext<A>> {
// 
//     private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
//     @Override
//     public void execute(ValidationContext<A> context) throws OrchestratorException {
//         A application = context.getApplication();
// 
//         Set<ConstraintViolation<A>> constraintViolations
//                 =validator.validate(application, Default.class);
// 
//         if(constraintViolations.size()>0){
//             List<ValidationError> errors =
//                     constraintViolations.stream().map(v -> new ValidationError(v.getMessage(), v.getPropertyPath().toString()))
//                     .collect(Collectors.toList());
//             throw new ValidationException(errors);
//         }
//     }
// 
//     public static class ValidationError{
//         private String message;
//         private String path;
// 
//         public ValidationError(String message, String path) {
//             this.message = message;
//             this.path = path;
//         }
// 
//         public ValidationError() {
//         }
// 
//         public String getMessage() {
//             return message;
//         }
// 
//         public void setMessage(String message) {
//             this.message = message;
//         }
// 
//         public String getPath() {
//             return path;
//         }
// 
//         public void setPath(String path) {
//             this.path = path;
//         }
//     }
// }


// Path: samples/src/main/java/com/github/ehe/simpleorchestrator/sample/exception/ValidationException.java
import java.util.List;
import com.github.ehe.simpleorchestrator.exception.OrchestratorException;
import com.github.ehe.simpleorchestrator.sample.task.ValidationTask;

/*
 *
 *  * Copyright (c) 2017. Eric He (eriche39@gmail.com)
 *  *
 *  * This software is licensed under
 *  *
 *  * MIT license
 *  *
 *
 */

package com.github.ehe.simpleorchestrator.sample.exception;



public class ValidationException extends OrchestratorException{

    private List<ValidationTask.ValidationError> errors;

    public ValidationException(List<ValidationTask.ValidationError> errors) {