add exception handler for object not found
This commit is contained in:
parent
d144587ee4
commit
042fd2637e
16 changed files with 114 additions and 4 deletions
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"java.compile.nullAnalysis.mode": "disabled"
|
||||
}
|
||||
|
|
@ -9,8 +9,53 @@
|
|||
<version>1.0.0</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>17</maven.compiler.source>
|
||||
<maven.compiler.target>17</maven.compiler.target>
|
||||
<!-- Alvo oficial agora é Java 21 -->
|
||||
<maven.compiler.release>21</maven.compiler.release>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.32</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>jakarta.validation</groupId>
|
||||
<artifactId>jakarta.validation-api</artifactId>
|
||||
<version>3.0.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||
<version>2.1.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.13.0</version>
|
||||
<configuration>
|
||||
<!-- Compilação nativa para Java 21 -->
|
||||
<release>21</release>
|
||||
|
||||
<!-- Annotation processors explícitos garantem estabilidade -->
|
||||
<annotationProcessorPaths>
|
||||
<path>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.32</version>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package main.java.models.exceptions;
|
||||
|
||||
public class ResourceNotFoundException extends RuntimeException {
|
||||
|
||||
public ResourceNotFoundException(final String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package main.java.models.exceptions;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.Builder;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
public class StandardError {
|
||||
private LocalDateTime timestamp;
|
||||
private Integer status;
|
||||
private String error;
|
||||
private String message;
|
||||
private String path;
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,2 +1,5 @@
|
|||
main/java/models/enums/ProfileEnum.class
|
||||
main/java/models/exceptions/ResourceNotFoundException.class
|
||||
main/java/models/exceptions/StandardError$StandardErrorBuilder.class
|
||||
main/java/models/responses/UserResponse.class
|
||||
main/java/models/enums/ProfileEnum.class
|
||||
main/java/models/exceptions/StandardError.class
|
||||
|
|
|
|||
|
|
@ -1,2 +1,4 @@
|
|||
/home/dev/projetos/Help Desk 2.0/hd-commons-lib/src/main/java/models/enums/ProfileEnum.java
|
||||
/home/dev/projetos/Help Desk 2.0/hd-commons-lib/src/main/java/models/exceptions/ResourceNotFoundException.java
|
||||
/home/dev/projetos/Help Desk 2.0/hd-commons-lib/src/main/java/models/exceptions/StandardError.java
|
||||
/home/dev/projetos/Help Desk 2.0/hd-commons-lib/src/main/java/models/responses/UserResponse.java
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
package br.com.rayankonecny.userserviceapi.controller.exceptions;
|
||||
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import main.java.models.exceptions.ResourceNotFoundException;
|
||||
import main.java.models.exceptions.StandardError;
|
||||
|
||||
import static java.time.LocalDateTime.now;
|
||||
import static org.springframework.http.HttpStatus.NOT_FOUND;
|
||||
|
||||
@ControllerAdvice
|
||||
public class ControllerExceptionHandler {
|
||||
|
||||
@ExceptionHandler(ResourceNotFoundException.class)
|
||||
ResponseEntity<StandardError> handleNotFoundException(final ResourceNotFoundException ex, final HttpServletRequest request) {
|
||||
return ResponseEntity.status(NOT_FOUND).body(
|
||||
|
||||
StandardError.builder()
|
||||
.timestamp(now())
|
||||
.status(NOT_FOUND.value())
|
||||
.error("Resource Not Found")
|
||||
.message(ex.getMessage())
|
||||
.path(request.getRequestURI())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import br.com.rayankonecny.userserviceapi.mapper.UserMapper;
|
|||
import br.com.rayankonecny.userserviceapi.repository.UserRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import main.java.models.responses.UserResponse;
|
||||
import main.java.models.exceptions.ResourceNotFoundException;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
|
|
@ -15,7 +16,9 @@ public class UserService {
|
|||
private final UserMapper userMapper;
|
||||
|
||||
public UserResponse findById(final String id) {
|
||||
return userMapper.fromEntity(userRepository.findById(id).orElse(null));
|
||||
return userMapper.fromEntity(userRepository.findById(id)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(
|
||||
"Object not found! Id: " + id + ", Type: " + UserResponse.class.getSimpleName())));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue