Skip to content

Commit d2492cb

Browse files
committed
Removed: Try catch were removed, In addition add CustomExceptionHandler for Handling Exceptions.
1 parent 036346a commit d2492cb

10 files changed

+65
-62
lines changed

Diff for: src/main/java/com/ganesh/security/config/ApplicationConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.ganesh.security.config;
22

3-
import com.ganesh.security.repo.UserRepository;
3+
import com.ganesh.security.repositorys.UserRepository;
44
import lombok.RequiredArgsConstructor;
55
import org.springframework.context.annotation.Bean;
66
import org.springframework.context.annotation.Configuration;

Diff for: src/main/java/com/ganesh/security/controller/AuthenticationController.java

+9-32
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
package com.ganesh.security.controller;
22

3-
import com.ganesh.security.exceptions.DuplicateEmailException;
4-
import com.ganesh.security.exceptions.UserNotFoundException;
53
import com.ganesh.security.payload.request.AuthenticationRequest;
64
import com.ganesh.security.payload.request.RegisterRequest;
75
import com.ganesh.security.payload.response.AuthenticationResponse;
8-
import com.ganesh.security.payload.response.MessageResponse;
96
import com.ganesh.security.service.AuthenticationService;
107
import jakarta.servlet.http.HttpServletRequest;
118
import jakarta.servlet.http.HttpServletResponse;
129
import jakarta.validation.Valid;
1310
import lombok.RequiredArgsConstructor;
14-
import org.springframework.http.HttpStatus;
1511
import org.springframework.http.ResponseEntity;
16-
import org.springframework.validation.BindingResult;
1712
import org.springframework.web.bind.annotation.PostMapping;
1813
import org.springframework.web.bind.annotation.RequestBody;
1914
import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,38 +25,20 @@ public class AuthenticationController {
3025

3126
@PostMapping("/register")
3227
public ResponseEntity<?> register(
33-
@Valid @RequestBody RegisterRequest request,
34-
BindingResult bindingResult
35-
) {
36-
try {
37-
if (bindingResult.hasErrors()) return service.handleValidationErrors(bindingResult);
38-
AuthenticationResponse response = service.register(request);
39-
return ResponseEntity.ok(response);
40-
} catch (DuplicateEmailException ex) {
41-
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
42-
.body(new MessageResponse(ex.getMessage()));
43-
} catch (Exception ex) {
44-
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
45-
.body(new MessageResponse("An error occurred on the server"));
46-
}
28+
@Valid @RequestBody RegisterRequest request
29+
) {
30+
// if (bindingResult.hasErrors()) return service.handleValidationErrors(bindingResult);
31+
AuthenticationResponse response = service.register(request);
32+
return ResponseEntity.ok(response);
4733
}
4834

4935

5036
@PostMapping("/authenticate")
5137
public ResponseEntity<?> authenticate(
52-
@Valid @RequestBody AuthenticationRequest request,
53-
BindingResult bindingResult
54-
) {
55-
try {
56-
if (bindingResult.hasErrors()) return service.handleValidationErrors(bindingResult);
57-
return ResponseEntity.ok(service.authenticate(request));
58-
} catch (UserNotFoundException ex) {
59-
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
60-
.body(new MessageResponse(ex.getMessage()));
61-
} catch (Exception ex) {
62-
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
63-
.body(new MessageResponse("An error occurred on the server"));
64-
}
38+
@Valid @RequestBody AuthenticationRequest request
39+
) {
40+
// if (bindingResult.hasErrors()) return service.handleValidationErrors(bindingResult);
41+
return ResponseEntity.ok(service.authenticate(request));
6542
}
6643

6744
@PostMapping("/refresh-token")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.ganesh.security.exceptions;
2+
3+
import org.springframework.http.HttpStatus;
4+
import org.springframework.web.bind.MethodArgumentNotValidException;
5+
import org.springframework.web.bind.annotation.ExceptionHandler;
6+
import org.springframework.web.bind.annotation.ResponseStatus;
7+
import org.springframework.web.bind.annotation.RestControllerAdvice;
8+
9+
import java.util.HashMap;
10+
import java.util.Map;
11+
12+
@RestControllerAdvice
13+
public class CustomExceptionHandler {
14+
15+
@ResponseStatus(HttpStatus.BAD_REQUEST)
16+
@ExceptionHandler(MethodArgumentNotValidException.class)
17+
public Map<String, String> handleValidationException(MethodArgumentNotValidException ex) {
18+
Map<String, String> errors = new HashMap<>();
19+
ex.getBindingResult()
20+
.getFieldErrors()
21+
.forEach(error -> errors.put(error.getField(), error.getDefaultMessage()));
22+
return errors;
23+
}
24+
25+
@ResponseStatus(HttpStatus.NOT_FOUND)
26+
@ExceptionHandler(UserNotFoundException.class)
27+
public Map<String, String> handleUserNotFoundException(UserNotFoundException ex) {
28+
Map<String, String> error = new HashMap<>();
29+
error.put("error", ex.getMessage());
30+
return error;
31+
}
32+
33+
@ResponseStatus(HttpStatus.BAD_REQUEST)
34+
@ExceptionHandler(UserAlreadyExistsException.class)
35+
public Map<String, String> handleUserAlreadyExistsException(UserAlreadyExistsException ex) {
36+
Map<String, String> error = new HashMap<>();
37+
error.put("error", ex.getMessage());
38+
return error;
39+
}
40+
}

Diff for: src/main/java/com/ganesh/security/exceptions/DuplicateEmailException.java

-7
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.ganesh.security.exceptions;
2+
3+
public class UserAlreadyExistsException extends RuntimeException {
4+
public UserAlreadyExistsException(String message) {
5+
super(message);
6+
}
7+
}

Diff for: src/main/java/com/ganesh/security/filters/JwtAuthenticationFilter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.ganesh.security.filters;
22

3-
import com.ganesh.security.repo.TokenRepository;
3+
import com.ganesh.security.repositorys.TokenRepository;
44
import com.ganesh.security.service.JwtService;
55
import jakarta.servlet.FilterChain;
66
import jakarta.servlet.ServletException;

Diff for: src/main/java/com/ganesh/security/repo/TokenRepository.java renamed to src/main/java/com/ganesh/security/repositorys/TokenRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ganesh.security.repo;
1+
package com.ganesh.security.repositorys;
22

33
import com.ganesh.security.models.token.Token;
44
import org.springframework.data.jpa.repository.JpaRepository;

Diff for: src/main/java/com/ganesh/security/repo/UserRepository.java renamed to src/main/java/com/ganesh/security/repositorys/UserRepository.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ganesh.security.repo;
1+
package com.ganesh.security.repositorys;
22

33
import com.ganesh.security.models.user.User;
44
import org.springframework.data.jpa.repository.JpaRepository;

Diff for: src/main/java/com/ganesh/security/service/AuthenticationService.java

+4-18
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,26 @@
11
package com.ganesh.security.service;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.ganesh.security.exceptions.DuplicateEmailException;
4+
import com.ganesh.security.exceptions.UserAlreadyExistsException;
55
import com.ganesh.security.exceptions.UserNotFoundException;
66
import com.ganesh.security.models.token.Token;
77
import com.ganesh.security.models.token.TokenType;
88
import com.ganesh.security.models.user.User;
99
import com.ganesh.security.payload.request.AuthenticationRequest;
1010
import com.ganesh.security.payload.request.RegisterRequest;
1111
import com.ganesh.security.payload.response.AuthenticationResponse;
12-
import com.ganesh.security.repo.TokenRepository;
13-
import com.ganesh.security.repo.UserRepository;
12+
import com.ganesh.security.repositorys.TokenRepository;
13+
import com.ganesh.security.repositorys.UserRepository;
1414
import jakarta.servlet.http.HttpServletRequest;
1515
import jakarta.servlet.http.HttpServletResponse;
1616
import lombok.RequiredArgsConstructor;
1717
import org.springframework.http.HttpHeaders;
18-
import org.springframework.http.ResponseEntity;
1918
import org.springframework.security.authentication.AuthenticationManager;
2019
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
2120
import org.springframework.security.crypto.password.PasswordEncoder;
2221
import org.springframework.stereotype.Service;
23-
import org.springframework.validation.BindingResult;
24-
import org.springframework.validation.FieldError;
2522

2623
import java.io.IOException;
27-
import java.util.HashMap;
28-
import java.util.Map;
2924

3025
@Service
3126
@RequiredArgsConstructor
@@ -39,7 +34,7 @@ public class AuthenticationService {
3934
public AuthenticationResponse register(RegisterRequest request) {
4035

4136
if (repository.findByEmail(request.getEmail()).isPresent())
42-
throw new DuplicateEmailException("Email already exists");
37+
throw new UserAlreadyExistsException("Email already exists");
4338

4439
var user = User.builder()
4540
.firstname(request.getFirstname())
@@ -58,15 +53,6 @@ public AuthenticationResponse register(RegisterRequest request) {
5853
.build();
5954
}
6055

61-
public ResponseEntity<?> handleValidationErrors(BindingResult bindingResult) {
62-
Map<String, String> errorMap = new HashMap<>();
63-
64-
for (FieldError fieldError : bindingResult.getFieldErrors())
65-
errorMap.put(fieldError.getField(), fieldError.getDefaultMessage());
66-
67-
return ResponseEntity.badRequest().body(errorMap);
68-
}
69-
7056
public AuthenticationResponse authenticate(AuthenticationRequest request) {
7157

7258
var user = repository.findByEmail(request.getEmail())

Diff for: src/main/java/com/ganesh/security/service/LogoutService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.ganesh.security.service;
22

3-
import com.ganesh.security.repo.TokenRepository;
3+
import com.ganesh.security.repositorys.TokenRepository;
44
import jakarta.servlet.http.HttpServletRequest;
55
import jakarta.servlet.http.HttpServletResponse;
66
import lombok.RequiredArgsConstructor;

0 commit comments

Comments
 (0)