Кто-то создал компонент / приложение Springboot для обработки ошибок и превратил его в библиотеку.
Мне нужно включить / вызвать его в моем приложении / компоненте Springboot и использовать его следующим образом:
везде, где я ловлю исключение, я должен определить код ошибки и передать его в библиотеку, а затем библиотека должна вернуть мне описание этого конкретного c кода ошибки.
Как мне этого добиться ?
Код библиотеки, если ниже
Контроллер:
@Controller
public class ErrorHandlingController extends ResponseEntityExceptionHandler {
@Autowired
private ErrorHandlingService errorHandlingService;
@ResponseStatus
@RequestMapping("err/{errorCode}")
public ResponseEntity<ExceptionDetailsOutputEntity> getErrorByID(@PathVariable int errorCode) throws GenericEntityNotFoundException {
try {
return ResponseEntity.ok(errorHandlingService.retrieveExceptionDetails(errorCode));
} catch (GenericEntityNotFoundException ex) {
ex.printStackTrace();
return ResponseEntity.ok(errorHandlingService.retrieveExceptionDetails(ErrorMessageEnum.Error_not_defined));
}
}
}
@Data
@Entity(name = "ERROR_MESSAGES")
public class ExceptionDetailsOutputEntity implements Serializable {
@Id
private int errorCode;
private String userMessage;
private String message;
......;
}
@Data
public class ErrorLogLayout implements Serializable {
private String applicationName ;
private String serverName ;
.......
...
}
@Service
public interface ErrorHandlingService {
ExceptionDetailsOutputEntity retrieveExceptionDetails(int errorCode) throws GenericEntityNotFoundException;
}
Реализация службы
@Service
public class ErrorHandlingServiceImpl implements ErrorHandlingService {
@Autowired
ErrorHandlingRepoitory errorHandlingRepoitory;
@Override
public ExceptionDetailsOutputEntity retrieveExceptionDetails(int errorCode) throws GenericEntityNotFoundException {
logger.debug("Inside retrieveExceptionDetails service ");
try {
errorDetailsResponse = errorHandlingRepoitory.findByErrorCode(errorCode);
if(errorDetailsResponse!=null){
if (errorDetailsResponse.getCategory().equalsIgnoreCase(ERROR_CATEGORY)
|| errorDetailsResponse.getCategory().equalsIgnoreCase(ERROR_CAT)) {
errorLoggingMapping(errorDetailsResponse);
}
}else{
retrieveGenericError();
errorLoggingMapping(errorDetailsResponse);
}
return errorDetailsResponse;
} catch (Exception e) {
throw new GenericEntityNotFoundException(e.getMessage());
}
}
public void writeToaFile(ErrorLogLayout layout) throws IOException {
File filePath = new File("/opt/ErrorLoggingLogs/ ");
FileWriter fr = new FileWriter(filePath + "error.log" + "." + getDateFormat(), true);
BufferedWriter out = new BufferedWriter(fr);
out.write(String.valueOf(layout));
out.newLine();
out.close();
fr.close();
}
public void errorLoggingMapping(ExceptionDetailsOutputEntity errorDetailsResponse) throws GenericEntityNotFoundException {
try {
ErrorLogLayout layout = new ErrorLogLayout();
layout.setErrorCode(errorDetailsResponse.getErrorCode());
.....
...
}catch(IOException io){
throw new GenericEntityNotFoundException(io.getMessage());
}
}
private String getDateFormat(){
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd") ;
String curDate = dateFormat.format(date);
return curDate;
}
private void retrieveGenericError(){
errorDetailsResponse = new ExceptionDetailsOutputEntity();
errorDetailsResponse.setErrorCode(ErrorMessageEnum.Error_not_defined);
.....
...
}
}