Skip to content

Commit

Permalink
7. Обработка исключений в Spring REST [#505112]
Browse files Browse the repository at this point in the history
  • Loading branch information
vadimstrya committed Jan 24, 2025
1 parent 656b2ac commit 0eb1888
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 2 deletions.
26 changes: 26 additions & 0 deletions src/main/java/ru/job4j/api/handler/GlobalExceptionHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ru.job4j.api.handler;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;

@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(DataIntegrityViolationException.class)
public ResponseEntity<Object> handleDataIntegrityViolationException(Exception e, HttpServletRequest request) {
Map<String, String> details = new HashMap<>();
details.put("message", e.getMessage());
details.put("type", String.valueOf(e.getClass()));
details.put("timestamp", String.valueOf(LocalDateTime.now()));
details.put("path", request.getRequestURI());
return ResponseEntity.badRequest().contentType(MediaType.APPLICATION_JSON).body(details);
}
}
5 changes: 5 additions & 0 deletions src/main/resources/db/002_ddl_user_auth_email_unique.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
--liquibase formatted sql
--changeset vadimstrya:002_ddl_user_auth_email_unique

alter table user_auth
add constraint user_auth_email_unq unique (email);
1 change: 1 addition & 0 deletions src/main/resources/db/liquibase-changeLog.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">

<include file="001_ddl_create_tables.sql" author="Vadim Timofeev" relativeToChangelogFile="true"/>
<include file="002_ddl_user_auth_email_unique.sql" author="Vadim Timofeev" relativeToChangelogFile="true"/>
</databaseChangeLog>
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ public void whenFindSubscribersPostsByUserId() {

var subscribe1 = new User();
subscribe1.setLogin("Jane Doe");
subscribe1.setEmail("jane.doe@example.com");
subscribe1.setEmail("jane.doe2@example.com");
subscribe1.setPassword("******");
subscribe1.setStatus(Statuses.A);
userRepository.save(subscribe1);
Expand All @@ -228,7 +228,7 @@ public void whenFindSubscribersPostsByUserId() {

var subscribe2 = new User();
subscribe2.setLogin("Jane Doe");
subscribe2.setEmail("jane.doe@example.com");
subscribe2.setEmail("jane.doe3@example.com");
subscribe2.setPassword("******");
subscribe2.setStatus(Statuses.A);
userRepository.save(subscribe2);
Expand Down

0 comments on commit 0eb1888

Please sign in to comment.