package be.swsb.fiazard.common.exceptions; import be.swsb.fiazard.common.error.AppErrorCode; import com.google.common.collect.Lists; import java.util.List; public class FiazardExceptionBuilder { private int status; private AppErrorCode appErrorCode; private String message; private List<String> fields; public static FiazardExceptionBuilder someFiazardExceptionBuilder() { return new FiazardExceptionBuilder() .withStatus(400) .withAppError(AppErrorCode.ILLEGAL_ID) .withMessage("datMessageThough") .withFields("field1", "field2"); } public static FiazardException someFiazardException() { return someFiazardExceptionBuilder().build(); } public DummyFiazardException build() { return new DummyFiazardException(status, appErrorCode, message, fields); } public FiazardExceptionBuilder withStatus(int status) { this.status = status; return this; } public FiazardExceptionBuilder withAppError(AppErrorCode appErrorCode) { this.appErrorCode = appErrorCode; return this; } public FiazardExceptionBuilder withMessage(String message) { this.message = message; return this; } public FiazardExceptionBuilder withFields(String... fields) { this.fields = Lists.newArrayList(fields); return this; } public class DummyFiazardException extends FiazardException { private static final long serialVersionUID = -9119892999746544720L; private final Iterable<String> fields; private final AppErrorCode appErrorCode; private final int status; public DummyFiazardException(int status, AppErrorCode appErrorCode, String message, Iterable<String> fields) { super(message); this.status = status; this.appErrorCode = appErrorCode; this.fields = fields; } @Override public AppErrorCode getErrorCode() { return appErrorCode; } @Override public int getStatus() { return status; } @Override public Iterable<String> getFields() { return fields; } } }