[Demonstration 1]

[Buggy Method]
public UserDTO createUser(UserDTO user, String[] selectedRoles) throws TechnicalException {
    userValidator.validateUserData(user);
    User userEntity = new User();
    userDTOMapper.mapToEntity(user, userEntity);
    userEntity.setActive(true);
    userEntity.setUsername(generateUsername(user.getFirstname(), user.getLastname()));
    List<Role> roles = new ArrayList<Role>();
    for (String role : selectedRoles) {
        roles.add(roleDAO.getRoleByName(role).get(0));
    }
    userEntity.setRoles(roles);
    userDAO.persistEntity(userEntity);
    User persistedUser = userDAO.findEntity(userEntity.getId());
    return userDTOMapper.mapToDTO(persistedUser);
}

[Buggy Hunk]
roles.add(roleDAO.getRoleByName(role).get(0));

[Patch]
roles.add(roleDAO.getRoleByName(RoleType.valueOf(role)).get(0));

[Demonstration 2]

[Buggy Method]
private void changeUserState(RegistrationDto registration) throws UserException {
    UserDto userDto = registration.getUser();
    userDto.setState(UserStateEnum.ENABLED.getState());
    User userEntity = (Utils.getUserFromDto(userDto));
    user.updateUser(userEntity);
}

[Buggy Hunk]
user.updateUser(userEntity);

[Patch]
repository.updateUser(userEntity);

[Demonstration 3]

[Buggy Method]
@RequestMapping(method = RequestMethod.POST, value = "/login", produces = { "text/html" })
public String loginLibrarian(@RequestParam("email") String email, @RequestParam("password") String password, Model model, HttpServletResponse res) throws SQLException {
    System.out.println("email :" + email);
    User user = userService.getUser(email);
    if (user == null) {
        System.out.println("no user");
        res.setStatus(404);
        model.addAttribute("id", email);
        model.addAttribute("res", res.getStatus());
        return "error";
    } else {
        if (user.getStatus().equals("InActive")) {
            return "activationError";
        } else {
            if ((user.getPassword()).equals(password)) {
                System.out.println("true");
                List<Book> books = userService.getBooks(user.getSjsuId());
                model.addAttribute("user", user);
                model.addAttribute("books", books);
                return "librarian";
            } else {
                System.out.println("wrong pass");
                res.setStatus(404);
                model.addAttribute("id", "worng password");
                model.addAttribute("res", res.getStatus());
                return "error";
            }
        }
    }
}

[Buggy Hunk]
if(user==null){

[Patch]
if(user==null || user.getRole().equals("patron")){