diff --git a/src/main/java/cc/ryanc/halo/exception/AlreadyExistsException.java b/src/main/java/cc/ryanc/halo/exception/AlreadyExistsException.java new file mode 100644 index 000000000..22aa88882 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/exception/AlreadyExistsException.java @@ -0,0 +1,18 @@ +package cc.ryanc.halo.exception; + +/** + * Exception caused by entity existence already. + * + * @author johnniang + */ +public class AlreadyExistsException extends BadRequestException { + + public AlreadyExistsException(String message) { + super(message); + } + + public AlreadyExistsException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/src/main/java/cc/ryanc/halo/exception/BadRequestException.java b/src/main/java/cc/ryanc/halo/exception/BadRequestException.java new file mode 100644 index 000000000..ed4ad883a --- /dev/null +++ b/src/main/java/cc/ryanc/halo/exception/BadRequestException.java @@ -0,0 +1,24 @@ +package cc.ryanc.halo.exception; + +import org.springframework.http.HttpStatus; + +/** + * Exception caused by bad request. + * + * @author johnniang + */ +public class BadRequestException extends HaloException { + + public BadRequestException(String message) { + super(message); + } + + public BadRequestException(String message, Throwable cause) { + super(message, cause); + } + + @Override + public HttpStatus getStatus() { + return HttpStatus.BAD_REQUEST; + } +} diff --git a/src/main/java/cc/ryanc/halo/exception/ForbiddenException.java b/src/main/java/cc/ryanc/halo/exception/ForbiddenException.java new file mode 100644 index 000000000..ee2a6d572 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/exception/ForbiddenException.java @@ -0,0 +1,24 @@ +package cc.ryanc.halo.exception; + +import org.springframework.http.HttpStatus; + +/** + * Exception caused by accessing forbidden resources. + * + * @author johnniang + */ +public class ForbiddenException extends HaloException { + + public ForbiddenException(String message) { + super(message); + } + + public ForbiddenException(String message, Throwable cause) { + super(message, cause); + } + + @Override + public HttpStatus getStatus() { + return HttpStatus.FORBIDDEN; + } +} diff --git a/src/main/java/cc/ryanc/halo/exception/HaloException.java b/src/main/java/cc/ryanc/halo/exception/HaloException.java new file mode 100644 index 000000000..199326174 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/exception/HaloException.java @@ -0,0 +1,46 @@ +package cc.ryanc.halo.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; + +/** + * Base exception of the project. + * + * @author johnniang + */ +public abstract class HaloException extends RuntimeException { + + /** + * Error errorData. + */ + private Object errorData; + + public HaloException(String message) { + super(message); + } + + public HaloException(String message, Throwable cause) { + super(message, cause); + } + + @NonNull + public abstract HttpStatus getStatus(); + + @Nullable + public Object getErrorData() { + return errorData; + } + + /** + * Sets error errorData. + * + * @param errorData error data + * @return current exception. + */ + @NonNull + public HaloException setErrorData(@Nullable Object errorData) { + this.errorData = errorData; + return this; + } +} diff --git a/src/main/java/cc/ryanc/halo/exception/NotFoundException.java b/src/main/java/cc/ryanc/halo/exception/NotFoundException.java new file mode 100644 index 000000000..08d965fe5 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/exception/NotFoundException.java @@ -0,0 +1,24 @@ +package cc.ryanc.halo.exception; + +import org.springframework.http.HttpStatus; + +/** + * Exception of entity not found. + * + * @author johnniang + */ +public class NotFoundException extends HaloException { + + public NotFoundException(String message) { + super(message); + } + + public NotFoundException(String message, Throwable cause) { + super(message, cause); + } + + @Override + public HttpStatus getStatus() { + return HttpStatus.NOT_FOUND; + } +} diff --git a/src/main/java/cc/ryanc/halo/exception/ServiceException.java b/src/main/java/cc/ryanc/halo/exception/ServiceException.java new file mode 100644 index 000000000..47e7d24b4 --- /dev/null +++ b/src/main/java/cc/ryanc/halo/exception/ServiceException.java @@ -0,0 +1,24 @@ +package cc.ryanc.halo.exception; + +import org.springframework.http.HttpStatus; + +/** + * Exception caused by service. + * + * @author johnniang + */ +public class ServiceException extends HaloException { + + public ServiceException(String message) { + super(message); + } + + public ServiceException(String message, Throwable cause) { + super(message, cause); + } + + @Override + public HttpStatus getStatus() { + return HttpStatus.INTERNAL_SERVER_ERROR; + } +}