package com.leansoft.luxun.common.exception;
import com.leansoft.luxun.api.generated.ErrorCode;
/**
* Error mapping between error code and exception
*
* @author bulldog
*
*/
public class ErrorMapper {
public static ErrorCode toErrorCode(Exception e) {
if (e instanceof InvalidTopicException) {
return ErrorCode.INVALID_TOPIC;
} else if (e instanceof IndexOutOfBoundsException) {
return ErrorCode.INDEX_OUT_OF_BOUNDS;
} else if (e instanceof MessageSizeTooLargeException) {
return ErrorCode.MESSAGE_SIZE_TOO_LARGE;
} else if (e instanceof TopicNotExistException) {
return ErrorCode.TOPIC_NOT_EXIST;
} else {
return ErrorCode.INTERNAL_ERROR;
}
}
public static RuntimeException toException(ErrorCode errorCode, String errorMessage) {
switch (errorCode) {
case INVALID_TOPIC:
return new InvalidTopicException(errorMessage);
case INDEX_OUT_OF_BOUNDS:
return new IndexOutOfBoundsException(errorMessage);
case MESSAGE_SIZE_TOO_LARGE:
return new MessageSizeTooLargeException(errorMessage);
case AUTHENTICATION_FAILURE:
return new AuthenticationFailException(errorMessage);
case TOPIC_NOT_EXIST:
return new TopicNotExistException(errorMessage);
default:
return new InternalErrorException(errorMessage);
}
}
}