@Override public void onCreateEntity(GwtConversation conversation, String type, Map properties) { String id = (String) properties.get("id"); if (id == null) throw new NullPointerException("id == null"); ADao dao = getDaoService().getDaoByName(type); AEntity entity = dao.newEntityInstance(id); entity.updateProperties(properties); User currentUser = conversation.getSession().getUser(); Project currentProject = conversation.getProject(); if (entity instanceof Numbered) { ((Numbered) entity).updateNumber(); } if (entity instanceof Project) { Project project = (Project) entity; project.addParticipant(currentUser); project.addAdmin(currentUser); project.addProductOwner(currentUser); project.addScrumMaster(currentUser); project.addTeamMember(currentUser); } if (entity instanceof Comment) { Comment comment = (Comment) entity; comment.setDateAndTime(DateAndTime.now()); postProjectEvent( conversation, comment.getAuthor().getName() + " commented on " + comment.getParent(), comment.getParent()); currentProject.updateHomepage(comment.getParent(), true); } if (entity instanceof ChatMessage) { ChatMessage chatMessage = (ChatMessage) entity; chatMessage.setDateAndTime(DateAndTime.now()); } if (entity instanceof Impediment) { Impediment impediment = (Impediment) entity; impediment.setDate(Date.today()); } if (entity instanceof Issue) { Issue issue = (Issue) entity; issue.setDate(DateAndTime.now()); issue.setCreator(currentUser); } if (entity instanceof Task) { Task task = (Task) entity; Requirement requirement = task.getRequirement(); requirement.setRejectDate(null); requirement.setClosed(false); sendToClients(conversation, requirement); } if (entity instanceof BlogEntry) { BlogEntry blogEntry = (BlogEntry) entity; blogEntry.setDateAndTime(DateAndTime.now()); blogEntry.addAuthor(currentUser); } if (entity instanceof Change) { Change change = (Change) entity; change.setDateAndTime(DateAndTime.now()); change.setUser(currentUser); } if (!(entity instanceof Transient)) dao.saveEntity(entity); sendToClients(conversation, entity); if (entity instanceof Requirement) { Requirement requirement = (Requirement) entity; Requirement epic = requirement.getEpic(); String value = null; if (epic != null) { value = epic.getReferenceAndLabel(); Change change = changeDao.postChange(epic, currentUser, "@split", null, requirement.getReference()); conversation.sendToClient(change); } Change change = changeDao.postChange(requirement, currentUser, "@created", null, value); conversation.sendToClient(change); } if (entity instanceof Task || entity instanceof Wikipage || entity instanceof Risk || entity instanceof Impediment || entity instanceof Issue || entity instanceof BlogEntry) { Change change = changeDao.postChange(entity, currentUser, "@created", null, null); conversation.sendToClient(change); } if (currentUser != null && currentProject != null) { ProjectUserConfig config = currentProject.getUserConfig(currentUser); config.touch(); sendToClients(conversation, config); } }