public PostModel reply(UserModel currentUser, String body, String tags) { if (!hasActiveWhiteboard()) { Session hibernateSession = HibernateUtil.currentSession(); PostModel p = new PostModel(); hibernateSession.save(p); AjaxServlet.invalidateFrontPageCache(getGroup().getId()); p.setBody(body); addReply(p); // sets group on reply Logger.getLogger(this.getClass()) .info("Post " + this.getId() + " has " + this.getReplies().size() + " replies."); if (this.getReplies().size() == Post.RepliesToFeature) { this.feature(); } if (this.isFeatured()) { p.feature(); } for (String tag : TagLogic.extractTagNames(tags)) { addTag(TagModel.getOrCreateTag(tag)); } currentUser.addPost(p); setLastReply(new Date()); hibernateSession.flush(); Helpers.currentDailyStats().logReply(); p.setSearchable(SearchableModel.newSearchable(p, null, null)); return p; } else { Logger.getLogger(this.getClass()).debug("Tried to reply to a post that has a whiteboard."); return null; } }