private Topic createCodeReviewWithLockHandling(Topic topic, TopicDto topicDto) throws NotFoundException { for (int i = 0; i < UserController.LOGIN_TRIES_AFTER_LOCK; i++) { try { return topicModificationService.createTopic(topic, topicDto.getBodyText()); } catch (HibernateOptimisticLockingFailureException e) { } } try { return topicModificationService.createTopic(topic, topicDto.getBodyText()); } catch (HibernateOptimisticLockingFailureException e) { LOGGER.error( "User has been optimistically locked and can't be reread {} times. Username: {}", UserController.LOGIN_TRIES_AFTER_LOCK, userService.getCurrentUser().getUsername()); throw e; } }
/** * Create code review from data entered in form * * @param topicDto object with data from form * @param result {@link BindingResult} validation result * @param branchId branch, where topic will be created * @return {@code ModelAndView} object which will be redirect to forum.html * @throws NotFoundException when branch not found */ @RequestMapping(value = "/reviews/new", method = RequestMethod.POST) public ModelAndView createCodeReview( @Valid @ModelAttribute TopicDto topicDto, BindingResult result, @RequestParam(BRANCH_ID) Long branchId) throws NotFoundException { Branch branch = branchService.get(branchId); if (result.hasErrors()) { return new ModelAndView(CODE_REVIEW_VIEW) .addObject(TOPIC_DTO, topicDto) .addObject(BRANCH_ID, branchId) .addObject(SUBMIT_URL, "/reviews/new?branchId=" + branchId) .addObject(BREADCRUMB_LIST, breadcrumbBuilder.getForumBreadcrumb(branch)); } Topic topic = topicDto.getTopic(); topic.setBranch(branch); Topic createdTopic = topicModificationService.createCodeReview(topic, topicDto.getBodyText()); return new ModelAndView(REDIRECT_URL + createdTopic.getId()); }