I am new to Spring boot, I have tried to check with unregistered emailID whether the given email id is available or not in the Postgres database. But unfortunately got this NoSuchElementException. I have attached an exception screenshot here for your reference. Can you guys help me to come out of this problem?.
TipTopController.java
@RestController
@RequestMapping(path = "/user")
public class TipTopController {
@Autowired
private UserService userService;
@PostMapping(path = "/registration")
public ResponseEntity<UserRegistrationResponse> registration(@RequestBody UserRegistrationModel userRegistrationModel){
UserRegistrationResponse userRegistrationResponse = userService.doUserRegistration(userRegistrationModel);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("description","User created successfully");
return ResponseEntity.status(HttpStatus.OK)
.headers(httpHeaders)
.body(userRegistrationResponse);
}
}
UserService.java
@Service
public class UserService {
private static final Logger logger = LogManager.getLogger(UserService.class);
@Autowired
private UserRepository userRepository;
@Transactional
public UserRegistrationResponse doUserRegistration(UserRegistrationModel userRegistrationModel){
UserRegistrationResponse userRegistrationResponse = new UserRegistrationResponse();
try{
logger.info("Entering into try block");
Optional<UserInformationRepo> userInformationRepo=userRepository.findById(userRegistrationModel.getEmail());
logger.info("Get value is "+userInformationRepo.get().getEmail());
logger.info("Username is "+userInformationRepo.get().getFirstName()+" "+userInformationRepo.get().getLastName());
if(userInformationRepo.isPresent()){
userRegistrationResponse.setStatus(false);
userRegistrationResponse.setMessage("This email id { "+userRegistrationModel.getEmail()+" } is taken by another user already");
}
else{
UserInformationRepo userInformationRepoSave = new UserInformationRepo();
userInformationRepoSave.setEmail(userRegistrationModel.getEmail());
userInformationRepoSave.setFirstName(userRegistrationModel.getFirstName());
userInformationRepoSave.setEmail(userRegistrationModel.getLastName());
userInformationRepoSave.setEmail(userRegistrationModel.getPassword());
userRepository.save(userInformationRepoSave);
userRegistrationResponse.setStatus(true);
userRegistrationResponse.setMessage("New user account created with your " + userRegistrationModel.getEmail() + " emailId");
}
}
catch (Exception e){
logger.error(e.getMessage()+"*****"+e);
System.out.println("Exception occurred");
}
return userRegistrationResponse;
}
}
UserInformationRepo.java
@Entity
@Table(name = "USER_INFORMATION")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UserInformationRepo {
@Id
@Column(name = "EMAIL")
private String email;
@Column(name="FIRSTNAME")
private String firstName;
@Column(name="LASTNAME")
private String lastName;
@Column(name="PASSWORD")
private String password;
}
UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<UserInformationRepo, String> {
}
This is the exception I got while tried to hit the registration API from POSTMAN tool
