ClientEndExceptions.java 5.05 KB
package com.infoloop.tianting.exception;

import java.text.MessageFormat;

public class ClientEndExceptions {

    /**
     * 参数校验失败异常
     */
    public static class ParameterInvalid extends ClientEndException {
        private ParameterInvalid(String message) {
            super(ErrorCodeEnum.VALIDATE_FAILED.getCode(), message);
        }

        public synchronized static ParameterInvalid build(String message) {
            return new ParameterInvalid(message);
        }
    }

    /**
     * 权限登陆未认证异常
     */
    public static class AuthenticationFailure extends ClientEndException {
        private AuthenticationFailure(ErrorCodeEnum errorCodeEnum) {
            super(errorCodeEnum.getCode(), errorCodeEnum.getMessage());
        }

        private AuthenticationFailure(String message) {
            super(ErrorCodeEnum.UNAUTHORIZED.getCode(), message);
        }

        public synchronized static AuthenticationFailure build(String message) {
            return new AuthenticationFailure(message);
        }

        public synchronized static AuthenticationFailure build(ErrorCodeEnum errorCodeEnum) {
            return new AuthenticationFailure(errorCodeEnum);
        }
    }

    /**
     * 禁止操作异常
     */
    public static class OperationForbidden extends ClientEndException {
        private OperationForbidden(String message) {
            super(ErrorCodeEnum.FORBIDDEN.getCode(), message);
        }

        public synchronized static OperationForbidden build(String message) {
            return new OperationForbidden(message);
        }

    }

    /**
     * 资源未找到异常
     */
    public static class ResourceNotFound extends ClientEndException {
        private ResourceNotFound(String message) {
            super(ErrorCodeEnum.RESOURCE_NOT_FOUND.getCode(), message);
        }

        private ResourceNotFound(ErrorCodeEnum errorCodeEnum) {
            super(errorCodeEnum.getCode(), errorCodeEnum.getMessage());
        }

        public synchronized static ResourceNotFound build(String message) {
            return new ResourceNotFound(message);
        }

        public synchronized static ResourceNotFound build(ErrorCodeEnum errorCodeEnum) {
            return new ResourceNotFound(errorCodeEnum);
        }
    }

    /**
     * 错误请求异常
     */
    public static class IncorrectRequestValue extends ClientEndException {
        private IncorrectRequestValue(ErrorCodeEnum errorCodeEnum) {
            super(errorCodeEnum.getCode(), errorCodeEnum.getMessage());
        }

        private IncorrectRequestValue(ErrorCodeEnum errorCodeEnum, String data) {
            super(errorCodeEnum.getCode(), errorCodeEnum.getMessage(), data);
        }

        private IncorrectRequestValue(int code, String message) {
            super(code, message);
        }

        public synchronized static IncorrectRequestValue build(String message) {
            return new IncorrectRequestValue(ErrorCodeEnum.FAILED.getCode(), message);
        }

        public synchronized static IncorrectRequestValue build(ErrorCodeEnum errorCodeEnum) {
            return new IncorrectRequestValue(errorCodeEnum);
        }

        public synchronized static IncorrectRequestValue build(ErrorCodeEnum errorCodeEnum, String data) {
            return new IncorrectRequestValue(errorCodeEnum, data);
        }

        public synchronized static IncorrectRequestValue build(ErrorCodeEnum errorCodeEnum, Object... args) {
            return new IncorrectRequestValue(errorCodeEnum.getCode(), MessageFormat.format(errorCodeEnum.getMessage(), args));
        }
    }

    /**
     * 请求超时异常
     */
    public static class RequestTimeout extends ClientEndException {
        private RequestTimeout(String message) {
            super(ErrorCodeEnum.REQUEST_TIMEOUT.getCode(), message);
        }

        public synchronized static RequestTimeout build(String message) {
            return new RequestTimeout(message);
        }
    }

    /**
     * 资源锁定异常
     */
    public static class ResourceLocked extends ClientEndException {
        private ResourceLocked(String message) {
            super(ErrorCodeEnum.LOCKED.getCode(), message);
        }

        public synchronized static ResourceLocked build(String message) {
            return new ResourceLocked(message);
        }
    }

    /**
     * 业务异常
     */
    public static class BusinessException extends ClientEndException {

        private BusinessException(int code, String message) {
            super(code, message);
        }

        private BusinessException(ErrorCodeEnum errorCodeEnum) {
            super(errorCodeEnum.getCode(), errorCodeEnum.getMessage());
        }

        public synchronized static BusinessException build(ErrorCodeEnum errorCodeEnum) {
            return new BusinessException(errorCodeEnum);
        }

        public synchronized static BusinessException build(ErrorCodeEnum errorCodeEnum, Object... message) {
            return new BusinessException(errorCodeEnum.getCode(), MessageFormat.format(errorCodeEnum.getMessage(), message));
        }
    }

}