- Memory leak using Mongo with Morphia
- @RequestMapping(value = "/reports", method = RequestMethod.POST, headers = "Accept=application/json")
- public ResponseEntity<Result> add(@RequestParam("title") String title,
- @RequestParam("uri") String uri,
- @RequestParam(value = "imageUri", required = false) String imageUri,
- @RequestParam(value = "categoryIds", required = false) List<String> categoryIds,
- @RequestParam(value = "expertsIds", required = false) List<String> expertIds,
- @RequestParam(value = "userId", required = false) String userIdString,
- @RequestParam(value = "description", required = false) String description) {
- if (imageUri == null) {
- imageUri = "";
- }
- List<Category> categories = new ArrayList<Category>();
- if (categoryIds != null && !categoryIds.isEmpty()) {
- categories = categoryService.getCategoriesById(categoryIds);
- }
- Report report = new Report(StringEscapeUtils.escapeHtml(title), uri, imageUri, categories, expertIds, description);
- UUID userID = userService.convertUserId(userIdString);
- Result result = userService.addReport(userID, report);
- return new ResponseEntity<Result>(result);
- }
- public Result addReport(UUID userID, Report report) {
- Result result = reportService.add(report);
- if (!result.getErrorMessages().isEmpty()) {
- return result;
- }
- if (!doesUserExistInDb(userID)) {
- createUserWithId(userID);
- }
- updateUserWithReport(userID, report);
- return result;
- }
- public Result add(Report report) {
- Result result = new Result();
- try {
- datastore.save(report);
- result.addReport(report);
- } catch (ConstraintViolationException ex) {
- populateValidationErrors(result, ex);
- }
- return result;
- }
- public void updateUserWithReport(UUID userID, Report report) {
- User user = datastore.get(User.class, userID);
- user.getReports().add(report);
- datastore.save(user);
- }