Skip to content

Commit

Permalink
springfield - final refactoring.
Browse files Browse the repository at this point in the history
  • Loading branch information
Evgeniy Kiprenko committed Jan 17, 2021
1 parent 141dac1 commit 694d77c
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 38 deletions.
12 changes: 12 additions & 0 deletions src/main/java/com/kiprenko/springfield/domain/user/UserRole.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.kiprenko.springfield.domain.user;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import org.springframework.security.core.authority.SimpleGrantedAuthority;

import java.util.Set;
Expand Down Expand Up @@ -32,4 +34,14 @@ public Set<SimpleGrantedAuthority> getGrantedAuthorities() {
permissions.add(new SimpleGrantedAuthority("ROLE_" + this.name()));
return permissions;
}

@JsonCreator
public static UserRole forValue(String value) {
return valueOf(value.toUpperCase());
}

@JsonValue
public String toValue() {
return this.name();
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.kiprenko.springfield.domain.user;

import com.kiprenko.springfield.exception.UserNotFoundException;
import com.kiprenko.springfield.exception.UsernameAlreadyExists;
import com.kiprenko.springfield.exception.UsernameAlreadyExistsException;

import java.util.List;
import java.util.Optional;

public interface UserService {
User create(UserDto user) throws UsernameAlreadyExists;
User create(UserDto user) throws UsernameAlreadyExistsException;

UserInfoProjection get(long id) throws UserNotFoundException;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.kiprenko.springfield.domain.user;

import com.kiprenko.springfield.exception.UserNotFoundException;
import com.kiprenko.springfield.exception.UsernameAlreadyExists;
import com.kiprenko.springfield.exception.UsernameAlreadyExistsException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.PageRequest;
import org.springframework.security.crypto.password.PasswordEncoder;
Expand Down Expand Up @@ -38,14 +38,14 @@ public UserServiceImpl(UserRepository repository,
}

@Override
public User create(UserDto userDto) throws UsernameAlreadyExists {
public User create(UserDto userDto) throws UsernameAlreadyExistsException {
assertUserDto(userDto, "Can't create a user info when user is null");
User user = userMapper.convertDtoToUser(userDto);
validator.validate(user);
validator.validatePassword(user.getPassword());
String username = user.getUsername();
if (repository.existsByUsername(username)) {
throw new UsernameAlreadyExists(format("Username %s already exists", username));
throw new UsernameAlreadyExistsException(format("Username %s already exists", username));
}
return repository.save(user);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.kiprenko.springfield.exception;

public class UsernameAlreadyExistsException extends Exception {
public UsernameAlreadyExistsException() {
super();
}

public UsernameAlreadyExistsException(String message) {
super(message);
}

public UsernameAlreadyExistsException(String message, Throwable cause) {
super(message, cause);
}

public UsernameAlreadyExistsException(Throwable cause) {
super(cause);
}

protected UsernameAlreadyExistsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.kiprenko.springfield.restcontroller;

import com.kiprenko.springfield.exception.UserNotFoundException;
import com.kiprenko.springfield.exception.UsernameAlreadyExists;
import com.kiprenko.springfield.exception.UsernameAlreadyExistsException;
import lombok.extern.log4j.Log4j2;
import org.springframework.core.convert.ConversionFailedException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageNotReadableException;
Expand Down Expand Up @@ -44,9 +45,9 @@ private String generateLogMessage(Exception ex, HttpServletRequest request, Prin
}

@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<Object> handleUserNotFound(Exception ex,
HttpServletRequest request,
Principal principal) {
public ResponseEntity<Object> handleUserNotFoundException(Exception ex,
HttpServletRequest request,
Principal principal) {
LOGGER.error(generateLogMessage(ex, request, principal), ex);
String exMessage = ex.getMessage();
return getResponseEntity(exMessage == null ? "User not found in the database" : exMessage, HttpStatus.NOT_FOUND);
Expand All @@ -69,15 +70,23 @@ public ResponseEntity<Object> handleAccessDeniedException(Exception ex,
return getResponseEntity("Access is denied", HttpStatus.FORBIDDEN);
}

@ExceptionHandler(UsernameAlreadyExists.class)
public ResponseEntity<Object> handleUsernameAlreadyExists(Exception ex,
HttpServletRequest request,
Principal principal) {
@ExceptionHandler(UsernameAlreadyExistsException.class)
public ResponseEntity<Object> handleUsernameAlreadyExistsException(Exception ex,
HttpServletRequest request,
Principal principal) {
LOGGER.error(generateLogMessage(ex, request, principal), ex);
String exMessage = ex.getMessage();
return getResponseEntity(exMessage == null ? "Username already exists" : exMessage, HttpStatus.CONFLICT);
}

@ExceptionHandler(ConversionFailedException.class)
public ResponseEntity<Object> handleConversionFailedException(Exception ex,
HttpServletRequest request,
Principal principal) {
LOGGER.error(generateLogMessage(ex, request, principal), ex);
return getResponseEntity(ex.getMessage(), HttpStatus.BAD_REQUEST);
}

private ResponseEntity<Object> getResponseEntity(String exceptionMessage,
HttpStatus status) {
return new ResponseEntity<>(exceptionMessage, status);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.kiprenko.springfield.domain.user.UserRole;
import com.kiprenko.springfield.domain.user.UserService;
import com.kiprenko.springfield.exception.UserNotFoundException;
import com.kiprenko.springfield.exception.UsernameAlreadyExists;
import com.kiprenko.springfield.exception.UsernameAlreadyExistsException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
Expand Down Expand Up @@ -46,7 +46,7 @@ public UserManageController(UserService userService) {
@RolesAllowed(ADMIN_ROLE)
@PostMapping(value = "/create", consumes = APPLICATION_JSON_VALUE)
public long createUser(@ApiParam(value = "The information about a new user.", required = true)
@RequestBody UserDto user) throws UsernameAlreadyExists {
@RequestBody UserDto user) throws UsernameAlreadyExistsException {
return userService.create(user).getId();
}

Expand Down

0 comments on commit 694d77c

Please sign in to comment.