private void putVersion(HttpServletRequest req, final URI uri, HttpServletResponse resp) throws IOException { URI truncated = uri.trimSegments(1); Resolvable object = getObject(truncated.path()); if (object instanceof Project) { Project project = (Project) object; if(!isAuthorized(req, true, project)) { resp.setHeader("WWW-Authenticate", BASIC_AUTH_REALM); resp.sendError(HttpServletResponse.SC_UNAUTHORIZED); } else if (project.getChild(uri.lastSegment()) == null) { try { TransactionUtil.commit(project, new Modification<Project, Project>() { @Override public Project apply(Project object) { ProjectVersion child = PropertiesFactory.eINSTANCE.createProjectVersion(); ProjectLocale locale = PropertiesFactory.eINSTANCE.createProjectLocale(); child.getChildren().add(locale); child.setTemplate(locale); child.setName(uri.lastSegment()); object.getChildren().add(child); return object; } }); } catch (CommitException e) { logger.error("Commit failed", e); } } } else resp.sendError(HttpServletResponse.SC_NOT_FOUND, "Project " + truncated.path() + " does not exist"); }