I have lots of method and on each method I have to do a validation. Currently, my code look like this and it works fine.
@Service
public class UserService {
@Autowired
private UserValidation userValidation;
public BaseResponse<AuthenticationResponse> login(UserLoginRequest request) {
List<ErrorCode> errors = userValidation.validateUserLoginRequest(request);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
public BaseResponse<AuthenticationResponse> register(UserRegisterRequest request) {
List<ErrorCode> errors = userValidation.validateUserRegisterRequest(request);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
public BaseResponse<User> view(String username) {
List<ErrorCode> errors = userValidation.validateUserUsernameExists(username);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
public BaseResponse<Void> edit(UserEditRequest request) {
List<ErrorCode> errors = userValidation.validateUserEditRequest(request);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
}
However, I'm curios is there a way to refactor the code so that I dont need to do the repetitive if statements on every method. The code below is what I'm trying to achiev, but I don't know how. Any idea how to convert the code above to the code below? Another solution to refactor is very welcome.
(Or should I just stick with my code above? why?)
@Service
public class UserService {
@Autowired
private UserValidation userValidation;
public BaseResponse<AuthenticationResponse> login(UserLoginRequest request) {
userValidation.validateUserLoginRequest(request);
// ...
}
public BaseResponse<AuthenticationResponse> register(UserRegisterRequest request) {
userValidation.validateUserRegisterRequest(request);
// ...
}
public BaseResponse<User> view(String username) {
userValidation.validateUserUsernameExists(username);
// ...
}
public BaseResponse<Void> edit(UserEditRequest request) {
userValidation.validateUserEditRequest(request);
// ...
}
}